第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
© Copyright 2024 Paperzz