第6回放送授業 「ソフトウェアのしくみ」 7 高水準プログラム言語 7.1 高水準プログラム言語の 種類 • • • • • 手続き型プログラム言語 オブジェクト指向プログラム言語 関数型プログラム言語 論理プログラム言語 その他、問い合わせ型言語や スクリプト言語など 7.2 手続き型プログラム言語 • C、Fortran、Basic など もっとも多い • • • • 構造化プログラミングとする モジュール化する 大域変数をなるべく使わない モジュール間のやりとりは、引数、戻り値 を利用し、明示的に 7.3 オブジェクト指向 プログラム言語 • C++、SmallTalk、Java、Python、 Ruby、Perl など • 手続き型言語を兼ねるものが多い • Object とは • Method 7.4 関数型プログラム言語 • Lisp など • 参照透明性がある • 副作用がない(厳密には守られない ことが多い) • 第一級関数である • SUM(5, MULTI(3, 2), 1) (SUM 5 (MULTI 3 2) 1)←LISP 7.5 論理プログラム言語 • Prologなど • 三段論法 • 人間 ( ソクラテス ). 死ぬ (X) :- 人間 (X). ?- 死ぬ ( ソクラテス ). • その他スクリプトなど – Windows のコマンド – Web の Java スクリプト – PHP など 7.6 Web に適合した言語 • 文字列処理を得意とした言語 Perl,Python,Ruby,PHP,Javaなど 7.7 コンパイラとインタプリタ コンパイラの仕事 • ソースプログラム ↓ コンパイラ(インタプリタ) 目的プログラム(機械語) ↓ ライブラリーのリンク 実行プログラム 中間言語 • ソースプログラム ↓ 第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’].* • 構文木作成 • 中間表現生成 • アセンブラー言語生成 – ジャンプの解析 – 簡単な最適化 • 機械語生成 • ライブラリーリンク • 実行プログラム生成 7.8 デバグ • bug(虫) • debug • debugger
© Copyright 2024 ExpyDoc