1.1 プログラミング言語

第1章 プログラミング言語
1.1
1.2
1.3
1.4
プログラミング言語とは
言語処理の諸観点
処理プロセス
コンパイラの移植
1.1 プログラミング言語
(1)プログラミング言語とは
人間の言葉や、特定分野で使われる表現
(数式を含む)に近い形で表現された記述を、
コンピュータで実行するために設定された
形式的な記述方法
(2)プログラミング言語が生まれた背景
■当初
2進数や16進数などによるプログラム表現
ハンドアセンブルが面倒⇒ニーモニックコードによる表現
アセンブラの誕生
ハードウェア命令体系によりアセンブラが異なる
人間の言葉に近い表現
機械依存度を少なく
FORTRAN Ⅱの誕生
(3)FORTRAN Ⅱ直後の言語発展
■ニーズや対象分野による楽観的・経験的な機能拡充
機能拡充
FORTRAN Ⅳ
TSSによる簡易な
プログラミング
BASIC
適用分野の拡大
事務処理:COBOL
記号処理:LISP
パターン処理:SNOBOL
OR:ADSL, Simula 67
各種問題向き:POL
POL: Problem Oriented Language)
(4)楽観的・経験的な機能拡充の反省
■適用分野の統合、数学的に整理された言語設計
科学技術計算
事務処理
FORTRAN
COBOL
数学的に整理
適用分野の統合
PL/I
Algol
データ抽象化
Algol 60
軍需/組込み
計算機
ADA
システム記述
Small Talk
ソフトウェア工学の進展
C
データ抽象化の
考え方の充実
Pascal, Modula Ⅱ
(5)さまざまな計算モデルの提案
■機械語プログラムをそのまま実行する計算機がある。
■高級言語プログラムには、そのまま実行する計算機はない。
(高級言語計算機のアプローチでの試作品はある)
仮想的に実行できる計算機の数学的モデル
計算モデル(computation model)
さまざまな計算モデルの事例
■Pascalにおけるデータ抽象化の概念→C#
■Smalltalkにおけるオブジェクト指向→VB, C++, Java
■Prologにおける論理型(書換え規則がプログラムとなる)
■Lispにおける記号処理と評価機構
■APLにおける関数型→C その他の関数型言語
■SNOBOLによるパターンマッチング
■データフローマシンにおける計算機構(ハード)
計算モデルによる言語の分類
■手続き型言語(データ抽象化を含む)
FORTRAN, COBOL, PL/1,
ALGOL, Pascal, Modula, ADA, C
■関数型言語
Lisp,APL (Cをここに分類する人もいる)
■論理型言語
Prolog
■オブジェクト指向型言語
Smalltalk, C++, Java, C#, VB
■パターンマッチング指向型言語
SNOBOL
(6)昨今の傾向
新しい計算モデルや新しい言語概念の提案は少ない。
過去に提案された言語概念を旧来の言語に取込む傾向が
多い。
インターネット普及とともにWeb関連の言語が普及してきて
いる(Java Script, VB Script, Pearl, …)
旧来言語による開発を容易にするための開発環境の整備と
いう観点からの充実が多い(例:Visual Studioなど)。
概念の抽象化という観点よりもプログラミング環境や実行環
境がどうであるかの方に関心が高い。(言語概念への興味
が薄い)