比較プログラム言語論

比較プログラム言語論
平成17年4月20日
森田 彦
レポート抜粋(4/13) Ⅰ
<テーマ>
プログラミング言語について、どのような事に
興味・関心がありますか?あるいはどのような
疑問を持っていますか?
内容毎に分類して次ページ以下のように整理しました。
詳細は下の科目HPを参照
http://ext-web.edu.sgu.ac.jp/HIKO/HikakuProg
レポート抜粋(4/13) Ⅱ
プログラミング言語の多様性


C言語、PASCAL言語、JAVA言語などたくさんのプロ
グラミング言語があるがなんでこんなにいろいろな
プログラミング言語があるのか?それぞれどういっ
た意味を持ってどのような違いがあるのか?
私がプログラミング言語に興味を持ったことは、いっ
たい何種類くらいの言語があるのかということです。
参考 - 社情の授業で扱った言語
FORTRAN, COBOL, C, C++, Delphi, Java
BASIC, LISP, R言語, S言語, アセンブリ言語
レポート抜粋(4/13) Ⅲ
プログラミング言語の適性


コンピュータで使用されるプログラム言語にはどの
ようなタイプのプログラム言語にはどのような種類
があり、どのようなところで使われ場合に効果をな
すのかその言語の適材適所みたいなものを勉強し
たいです。
今までJava言語の長所はネットワーク上で使用す
る場合に使いやすいというような話は少し聞いたこ
とがありますが、その他の言語、CやDelphi、
VisualBasicなどはどのような特徴で、どのような場
面で多く使われているかなどを学びたいです。
レポート抜粋(4/13) Ⅳ
プログラミング言語の処理過程


私がプログラミング言語の中で興味を持っている分
野は例えば、先生も先ほどおっしゃっていましたが
JBuilderなどでいかに英語の命令が機械言語に変
換されているかが気になります。やはりパソコンも機
械なのですから2進数などに変換されているかと思
いますが・・・。
どのようにして禁止の命令や言葉の表示などの言
語を(コンピュータが)理解、実行しているのかという
ことにとても興味があります。
レポート抜粋(4/13) Ⅴ
言語発展の歴史



プログラミング言語どのように発展してきたの
か?プログラミング言語の歴史を知りたい。
プログラミング言語は日々進化してると聞き
ますが、新しい言語は出始めてるのでしょう
か。注目され始めた言語があるのなら、それ
も知りたいです。
プログラミング言語が作られた経緯や発展の
具合、そして今後開発されるであろうプログラ
ミング言語が知りたいです。
レポート抜粋(4/13) Ⅵ
特定用途の言語

プログラミングで興味・関心がある事は、LG
Pです。 最近気になってきました。 簡単に
ゲームを作ることが出来るようになるみたい
で、私は作った事がないので、やってみたい
です。 でも、どんなゲームを作れるのか知り
たいです。 ゲームにも色んな種類があると思
うが、どんな種類まで作れるのか。どこまで
こったものを作れるのか。
Light Game
Programming
=BASIC + Direct X
レポート抜粋(4/13) Ⅶ
プログラミング言語の習得



自分はこの講義でいろいろな種類の言語を
学び、今まで習っていたJAVA言語とどのよう
な違いがあるのか、どの言語が一番わかり
やすいかを学んでみたいと思います。
何が簡単ですばやく出来る(習得できる)言
語なのか学べたら良いなと思っています。
プログラミングについてあまり知らない人が学
んでいくにはどのような努力をしたら分かりや
すく頭に入るのか、興味と関心があります。
<本日のテーマ>
プログラミング言語発展の歴史
<内容>


言語発展の歴史を概観する。
代表的な言語をその性質により分類してみる。
プログラミング言語発展の歴史
時間
言語以前
低水準言語
機械語
アセンブリ言語
FORTRAN
COBOL
ALGOL
オブジェクト指向
言語
Delphi
高水準言語
C++Builder
JBuilder
PL/1
ビジュアル開発環境
ALGOL68
PASCAL
BASIC
C言語
Ada
Lisp
超高水準言語
参考:河村一樹、斐品正照
Object PASCAL
C++
Java
Prolog
Smalltalk
プログラミング言語以前
最初のコンピュータ(電子計算機)ENIAC





真空管で動作する電子計算機
1946年 ペンシルベニア大学のモークリーとエッ
カートが開発
米国陸軍の弾道計算に利用
巨大(18000本の真空管)で消費電力も膨大
(175kW)
計算の手順(プログラム)
配線の組み替えとスイッチの組み替えで実施→プ
ログラミング言語なし。
プログラミング言語の登場
ノイマン型コンピュータの登場
1949年英国のEDSAC完成
 配線の組み替えとスイッチの切り替え→プロ
グラムとして作成し、記憶装置に記憶させる
プログラム→機械語で記述
 機械語
コンピュータが直接理解できる言語→2進数
で表現

機械語
2進数を1バイトずつ2桁の16進数で表現
 例:188+17の答を求める
9D BC 11
9D:加算命令 BC:188 11:17
 プログラミングは大変

アセンブリ言語


1950年代前半に登場
例:188+17の答を求める
ADD BC 11
ADD→9Dに翻訳する必要がある→アセンブラというソフトが処理(現在
のコンパイラと同じ)

初期のアセンブラ
メモリ内のアドレスの指定をプログラマが担当
MOVE A [+120]: Aレジスタの現在値を120バイト後方のアドレスへコ
ピーする(代入する)

変数名の発明
MOVE A data1 → アドレス計算からプログラマを解放 →翻訳処理ソフ
トが担当
FORTRAN



1957年 IBM社の汎用大型コンピュータのプ
ログラム処理言語として実装
FORmula TRANslation Systemの略
その後大いに発展
FORTRANⅡ(’58)副プログラム→FORTRANⅣ(’62)型宣言
→FORTRAN66(’66)→FORTRAN77(’77)文字列
→FORTRAN90(’91)組み込み関数追加

科学技術計算に適している
COBOL
COmmon Business Oriented Language
1959年開発
 事務処理に適している
データ処理(ファイルアクセス)に優れている
英文を書くようにプログラミングできる。
 最も広汎に使われたプログラミング言語
 ’80年代までは→COBOLができなければSE
になれない!

PL/1
Programming Language 1



プログラミング言語の用途が分化
科学技術計算 FORTRAN
事務処理計算 COBOL
両者を包含した言語は可能か?→IBMと
SHARE(IBMのユーザ団体)が開発→1964年
に開発
汎用的な利用が可能 言語処理系が巨大化
ALGOL
ALGOrithmic Language
1958年開発(ALGOL58)
 科学技術計算向けの言語
 厳密な構文規約を採用
プログラミング言語の構造として優れている
 1960年 ALGOL60制定
他のプログラミング言語(CやPASCALなど)に大きな
影響を与える。
 1968年 ALGOL68発表→言語規模の巨大化

BASIC
Beginner’s All-purpose Symbolic Instruction
Code



1964年 米国ダートマス大学で開発
初心者のための教育用言語
言語仕様が簡単
コンパイラではなくインタプリタを使用
当初は汎用コンピュータ→パソコンに移植→
大いに普及
PASCAL





1971年 Wirth(ヴィルト)により発表
ALGOL60の後継言語
特徴
構造化プログラミングの実現、適切なデータ構造
系統的なプログラミング教育に最適
→ 既存の言語とは異なる視点で開発
言語仕様の範囲を広げ過ぎない→言語処理系の効
率化→ALGOL68の反省
C言語などに影響
C言語
1973年 米国AT&Tのベル研究所のRitchie(リッチー)が
UNIX開発用に設計
 1967年 Richards(リチャーズ)がBCPLを開発→Thompson
(トンプソン)がUNIX記述用に更新・開発→B言語 その次の
言語→C言語
 特徴
システム記述言語でもある(それまではアセンブリ言語が主
流)→システム記述から一般の処理まで広汎にカバー →自
由度の高い汎用的な言語

90年代→Cが分からないシステムエンジニアはいらない。
Ada



1980年米国の国防総省の軍規格となる
軍で使用している各種コンピュータシステム
の管理が煩雑→言語仕様が数百種類にも及
ぶ→統一的に管理できないか?
軍独自の仕様に基づいた新しいプログラミン
グ言語を → 公募によりフランスのIchbiah
(イシビア)らが開発した言語を採択
Lisp
LISt Processor
1950年代末~’60年代 米国マサチューセッ
ツ工科大学のMcCarthy(マッカーシー)がリス
ト処理用の言語として開発
 関数型言語
関数の組み合わせによってプログラミングを
行う
f(x)、g(x1,x2,・・・)

Prolog
PRogramming in LOGic
 1972年 フランス、マルセイユ大学の
Colmerauer(コルメラウァー)らによって開発
 論理型言語
1階述語論理による論理記述とその推論機構
が基本
例:「人間は死ぬ」、「ソクラテスは人間である」
→ 「ソクラテスは死ぬ」
オブジェクト指向言語
1968年 米国のDahl(ダール)とNygaard(ニ
ガード)によってSimula67開発→Algol60を拡
張したシミュレーション言語
 1972年 ゼロックス社のAlan Key(アラン・ケ
イ)らがSmalltalk-72を開発→次世代コン
ピュータDynabook用のプログラミング言語
 1980年 Smalltalk-80を発表
クラス階層と継承を実装→最も純粋なオブ
ジェクト指向言語

既存言語のオブジェクト指向化
C言語→C++言語
1980年からAT&T社のStroustrup(ストロー
ストープ)が開発→1991年にはVersion3に
 PASCAL→Object PASCAL
 ビジュアル環境化
C++ → C++Builder、Viasual C++など
Object PASCAL → Delphi

Java言語
1995年 米国サンマイクロシステムズ社が発表
 開発の考え
C++のオブジェクト指向機能を純化
C++の一部機能(難解な部分)を排除
 特徴
Javaの実行環境があれば、どのOSや機種でも動作
する。→携帯端末や家電製品も想定 →急速に注
目・普及
2000年代→ Java言語の分かるシステムエンジニアが
必要!

第2回目レポート
< テーマ >




あなたが最も興味・関心のあるプログラミング言語
はどの言語ですか?どれか一つ挙げて、そう選んだ
理由を述べて下さい。
できる限り具体的に記述して下さい。200字~400字
程度。なお、上の記述を行った上で,質問等を付加し
ても結構です。
提出先:[email protected]
件名:「学籍番号(半角)+半角空白+氏名」を記入し
て下さい。
例) s03xxxx 学院太郎