【夢月流】Pythonで「BASIC言語」を作ってみよう(基礎から学ぶインタプリタ入門)
3.9 (2 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
37 students enrolled

【夢月流】Pythonで「BASIC言語」を作ってみよう(基礎から学ぶインタプリタ入門)

そして自分の好みのインタプリタを作成してみよう。
3.9 (2 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
37 students enrolled
Created by 速水 夢月
Last updated 7/2019
Japanese
Current price: $114.99 Original price: $164.99 Discount: 30% off
5 hours left at this price!
30-Day Money-Back Guarantee
This course includes
  • 13 hours on-demand video
  • 5 articles
  • 24 downloadable resources
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
Training 5 or more people?

Get your team access to 4,000+ top Udemy courses anytime, anywhere.

Try Udemy for Business
What you'll learn
  • プログラミング言語を作成する上での基本的な言語知識を学びます
  • 特にインタープリタの実装方法を詳しく理解することができます
  • PythonやRubyのインタープリタの実装方法を学習する上での基本的なノウハウを身につけることができます
  • その他、一般的なプログラミング言語に対する造詣が深まります
  • Pythonでのコンパイラやインタープリタの実装方法を学びます
Requirements
  • Pythonの基本知識
  • Pythonを実行できる環境(本コースではWindowsを使用しています)
Description

インタプリタとは?

コンピュータでプログラムを実行する方法は大きく分けて二つあります。それは「インタプリタ」と「コンパイラ」です。インタプリタはプログラミング言語で書かれたソースコード(=プログラム)を読み込んで、ただちに解釈実行します。
実行時にその都度解釈するわけですから、当然、時間が掛かります。
「Python」や「Perl」、「JavaScript」といった言語はインタプリタに分類されます。

一方、コンパイラはプログラミング言語で書かれたソースコードを事前に機械語へ「一括変換」して、変換語のプログラムがコンピュータに命令を与えます。「事前に変換する」というところがポイントです。実行時に改めて変換する必要がないわけですから、高速で処理できます。

変換する仕組みのことを「コンパイラ」、変換する作業のことを「コンパイル」と呼びます。「C言語」や「C++」はコンパイラに分類されます。

インタプリタを作ってみよう

実は、インタプリタを作るのは難しいことではありません。この講座では、言語処理用のライブラリなどは使わずに、一から自分の手でトークン分解などをしていき、言語処理のしくみなどを理解していきましょう。

その講座を修了したときには、Pythonなどのインタープリタのしくみも知りたいと思うようになるはずです。

さあ、それでは開始しましょう。


Who this course is for:
  • コンパイラやインタープリタなどの翻訳処理系に興味がある方
  • 自分で独自のプログラミング言語を作成してみたい方
  • Pythonを使ってオブジェクト指向でのプログラミング経験をしてみたい方
  • Pythonを使って楽しくプログラミングをしたい方
Course content
Expand all 70 lectures 13:04:00
+ はじめに
1 lecture 09:23

本コースの目的や詳細内容について説明しています

Preview 09:23
+ まずは基本から。電卓もどきを作ってみよう
14 lectures 01:47:32

本コース「電卓もどきを作ってみよう」のゴールについて説明しています

Preview 03:07

言語処理の基本となる「状態遷移」について説明しています

状態遷移図を理解してプログラムを改善してみよう
09:32
エラーチェックを追加してみよう
05:36

文法の表現方法には、様々な表現がありますが、このコースでの表現方法について説明しています。

このコースの文法表現方法について
03:30
数字のチェックルーチンを自作してみよう(その1)
06:57
数字のチェックルーチンを自作してみよう(その2)
11:44
連続して演算ができるようにしてみよう
05:52
「=」を入力したときにだけ計算結果を表示するようにしてみよう
04:47

演算子の優先順位を考慮した計算方法について説明しています。

演算子の優先順位を考慮して計算してみよう(1)
05:10
演算子の優先順位を考慮して計算してみよう(2)
18:04

括弧付きの算術式の計算方法について説明しています。

括弧を導入してみよう(1)
08:15
括弧を導入してみよう(2)
17:08
括弧を導入してみよう(補足)
00:42
+ 字句解析(トークン分解)について学ぼう
8 lectures 01:41:59

言語処理の基本である字句解析、トークン分解を実装したときのイメージ(ゴール)について説明しています

このセクションのゴールについて
02:05
字句解析とトークン分解について
11:33

予約語トークンの作成方法について説明しています

予約語トークンを作ってみよう
11:15

数字定数トークンの作成方法について説明しています

数字トークンを作ってみよう(1)符号なし数字
15:24

数字定数トークンの作成方法について説明しています(2)

数字トークンを作ってみよう(2)符号付き数字
06:16
トークン列を使って電卓もどきを改造してみよう
24:22
字句解析のエラー出力を改造してみよう
14:59
構文解析のエラー出力を改造してみよう
16:05
+ インタプリタを作ってみよう
35 lectures 07:33:13

インタープリタを実装したときのイメージ(ゴール)についての説明です

このセクションのゴールについて
05:09

print文の実装をします

PRINT文を実装してみよう
11:04

代入文の実装をします

代入文を実装してみよう
17:42
単項式 -a を実装してみよう
16:56
【補足】単項演算子 -a を実装してみよう
00:39

行ごとの命令をメモリ上に記憶する方法について説明しています

プログラム化してみよう(1)プログラム化とは?
04:35
プログラム化してみよう(2)クラスProgram
10:25

listコマンドの実装方法について説明しています

LISTコマンドを実装してみよう
06:38
LISTコマンド・異常系処理の追加
05:27

loadコマンドの実装方法について説明しています

LOADコマンドを実装してみよう
06:38

saveコマンドの実装方法について説明しています

SAVEコマンドを実装してみよう
05:52

runコマンドの実装方法について説明しています

RUNコマンドを実装してみよう
14:18

clear文の実装方法について説明しています

CLEAR文を実装してみよう
06:09

goto文の実装方法について説明しています

GOTO文を実装してみよう
03:17

if - goto文の実装方法について説明しています

IF~GOTO文を実装してみよう
20:35

traceコマンドの実装方法について説明しています

traceオプションとエラーメッセージを強化してみよう
14:41

for文の実装方法について説明しています

FOR文の文法説明
05:28
FOR文を実装してみよう
27:20
FOR文の異常系のテストをしてみよう
09:09

in-then-else文の実装方法について説明しています

IF~THEN~ELSE文の文法説明
04:09
IF~THEN文を実装してみよう
21:23
IF~THEN文の異常系のテストをしてみよう
12:05
LISTコマンドで段付表示されるようにしてみよう
09:04
文字列と文字列変数を導入してみよう
11:00
文字列変数の代入文を実装してみよう
18:19

print文の拡張した文法の実装方法について説明しています

PRINT文を拡張してみよう
20:18
条件式に文字列比較を追加してみよう
16:58

input文の実装方法について説明しています

INPUT文を実装してみよう
15:34

rem文の実装方法について説明しています

REM文(コメント文)を実装してみよう
05:22

配列の実装方法についての説明です

配列を実装してみよう(1)配列の定義
28:05
【補足】配列を実装してみよう(1)配列の定義
00:21
配列を実装してみよう(2)代入文
23:36
配列を実装してみよう(3)算術式
26:59

gosub文の実装方法について説明しています

GOSUB文を実装してみよう
17:58

renum文の実装方法について説明しています

RENUMコマンドを実装してみよう
29:59
+ リファクタリング
7 lectures 01:04:25
IF/FOR文などの直接実行時のエラー対応
03:51
行番号と配列添字のエラーチェック強化
12:49
CLEAR文とREM文の修正
05:42
エラーメッセージの改善
08:43
LISTコマンドの改善
14:09
SAVEコマンドの改善
07:44
配列の添字に算術式も指定可能にしてみよう
11:27
+ 組込関数の実装方法
2 lectures 29:22

mid$()関数の実装方法についての説明です

文字列関数MID$()を実装してみよう
19:28

int()関数の実装方法についての説明です

関数INT()を実装してみよう
09:54
+ インタプリタで作成したプログラム例
1 lecture 16:00

このコースで実装したBASICで作成できるプログラム例の1つとしてオセロゲームを作成しました。
プログラムの構成などを説明しています。

オセロゲーム
16:00
+ 不具合修正
2 lectures 02:05
if文の不具合の修正
00:58
listコマンドの不具合の修正
01:07