【序論】
《プログラム言語とは》
C,C++,Basic,FORTRAN,COBOL, Lisp,Prolog,Java,Perl …etc
このように、数多く存在するプログラミング言語。しかし、ある見方をするといくつかの「仲間」にわけることができる。
・自然言語と人工言語
・
自然言語 … 日本語、英語など、私たちが普段使用している言語。
・
人工言語 … 人とコンピュータを結ぶ言語。いわゆる
プログラム言語、プログラミング言語と呼ばれるもの。
・人間の「仕事」とコンピュータの「仕事」の違い
仕事 | : 仕様 |
手順 | : アルゴリズム |
言葉 | : プログラミング言語 |
書くこと | : コーディング |
文書 | : プログラム |
仕様を実現する
アルゴリズムを
プログラミング言語によって
コーディングしたものが
プログラムと呼ばれる。
・コンパイラとインタプリタ
コンパイラ | : 与えられたプログラムをコンピュータが実行可能な形式に一括して変換する。 |
インタプリタ | : 与えられたプログラムをほかの形式に変換することなく、順番に実行する。 |
《プログラム言語の分類》
〔水準による分類〕
人にとって理解しやすい形式の言語ほど
高水準言語と呼ばれ、逆にコンピュータが理解しやすい言語ほど
低水準言語と呼ばれる。
Plolog など | 超高水準言語 | 人間寄り ↑ | | | | | | ↓ コンピュータ寄り |
Scheme,Lisp など | 高水準言語 |
C,Java,Perl など | 中水準言語 |
機械語,アセンブラ など | 低水準言語 |
・文書清書言語 | : TeX,LaTeX |
・ハイパーテキスト言語 | : HTML |
・定義記述言語 | : Postscript |
〔計算モデルによる分類〕
1.手続き型言語 | 処理の流れにそってアルゴリズムを表現する言語 | Fortran,C,Pascalなど |
2.関数型言語 | ラムダ計算などの概念を基礎とし、関数を用いて記述する言語 | Lisp,Schemeなど |
3.論理型言語 | アルゴリズムを、手順としてではなく論理式で宣言することで記述する言語 | Prolog |
4.オブジェクト指向型言語 | オブジェクトを単位として記述する言語 | Java,Smalltalkなど |
《プログラム言語の記述と理解》
・構文、意味、語用論
・構文論 | 言語で記号をどのように並べるかを示す。 | ←いわゆる文法。 |
・意味論 | 記号の並びの表す意味について論じる。 | ←各記号がどのような計算をしているか。 |
・語用論 | 記号をどのように使うかを論じる。 | ←各要素がどのような計算にどう用いられるか。 |
・BNF記法
バッカスの考案した記法。
・○○は□□である。 | → ○○::=□□ |
・数は整数である。 | → <数>::=<整数> |
・数は5以下の自然数である。 | → <数>::=0|1|2|3|4|5 |
・英字はa〜zのいずれかである。 | → <英字>::=a|b|c|d|e|…|z |
・空白列(空白が存在する列) | → <空白列>::=凵|凵<空白列> |
・ε(イプシロン)空列(何もない列) | → <△列>::=ε|<△>|<△△>|… |
・名前の頭文字は英字でその後に英数字が続く。 | → <名前>=::<英字>|<英数字>* |
《プログラム言語の機構》
・基本要素 | あらかじめ用意された基本的な要素 |
・結合化 | いくつかの基本要素を合成して新しい要素を作ること |
・抽象化 | 合成された要素に名前をつけて1つの要素として利用できるようにすること |
《Schemeとは》
Lispの方言として
1975年にMITで開発。その後プログラミング教育用に作り直された言語である。
特徴として、構文論、意味論が単純なことがあげられる。