第6回放送授業

第6回放送授業
• 
• 
• 
• 
• 
手続き型プログラム言語
オブジェクト指向プログラム言語
関数型プログラム言語
論理プログラム言語
その他、問い合わせ型言語や
スクリプト言語など
•  C、Fortran、Basic など
もっとも多い
• 
• 
• 
• 
構造化プログラミングとする
モジュール化する
大域変数をなるべく使わない
モジュール間のやりとりは、引数、戻り
値を利用し、明示的に
•  C++、SmallTalk、Java、Python、
Ruby、Perl など
•  手続き型言語を兼ねるものが多い
•  Object とは
•  Method
•  Lisp など
•  参照透明性がある
•  副作用がない(厳密には守られない
ことが多い)
•  第一級関数である
•  SUM(5, MULTI(3, 2), 1)
(SUM 5 (MULTI 3 2) 1)←LISP
•  Prologなど
•  三段論法
•  人間 ( ソクラテス ).
死ぬ (X) :- 人間 (X).
?- 死ぬ ( ソクラテス ).
•  その他スクリプトなど
–  Windows のコマンド
–  Web の Java スクリプト
–  PHP など
•  文字列処理を得意とした言語
Perl,Python,Ruby,PHP,Javaなど
コンパイラの仕事
•  ソースプログラム
↓ コンパイラ(インタプリタ)
目的プログラム(機械語)
↓ ライブラリーのリンク
実行プログラム
中間言語
•  ソースプログラム
↓ 第1フェーズ
トークンへの分離
構文解析(構文木作成)
中間表現
↓ 第2フェーズ
制御の解析
最適化
目的プログラム
•  トークンへの分離
[’A’-’Z’’a’-’z’][’A’-’Z’’a’-’z’’0’-’9’]*
•  構文チェック:バッカス・ナウア記法
list ::= ’(’ expression* ’)’
expression ::= atom | list
atom ::= number | symbol
number ::= [+-]?[’0’-’9’]+
symbol ::= [’A’-’Z’’a’-’z’].*
•  構文木作成
•  中間表現生成
•  アセンブラー言語生成
–  ジャンプの解析
–  簡単な最適化
•  機械語生成
•  ライブラリーリンク
•  実行プログラム生成
•  bug(虫)
•  debug
•  debugger