290 likes | 431 Views
比較プログラム言語論. 平成17年4月20日 森田 彦. レポート抜粋( 4/13 ) Ⅰ. <テーマ> プログラミング言語について、どのような事に興味・関心がありますか?あるいはどのような疑問を持っていますか?. 内容毎に分類して次ページ以下のように整理しました。 詳細は下の科目 HP を参照. http://ext-web.edu.sgu.ac.jp/HIKO/HikakuProg. レポート抜粋( 4/13 ) Ⅱ. プログラミング言語の多様性.
E N D
比較プログラム言語論 平成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) Ⅵ 特定用途の言語 • プログラミングで興味・関心がある事は、LGPです。 最近気になってきました。 簡単にゲームを作ることが出来るようになるみたいで、私は作った事がないので、やってみたいです。 でも、どんなゲームを作れるのか知りたいです。 ゲームにも色んな種類があると思うが、どんな種類まで作れるのか。どこまでこったものを作れるのか。 Light Game Programming =BASIC + Direct X
レポート抜粋(4/13) Ⅶ プログラミング言語の習得 • 自分はこの講義でいろいろな種類の言語を学び、今まで習っていたJAVA言語とどのような違いがあるのか、どの言語が一番わかりやすいかを学んでみたいと思います。 • 何が簡単ですばやく出来る(習得できる)言語なのか学べたら良いなと思っています。 • プログラミングについてあまり知らない人が学んでいくにはどのような努力をしたら分かりやすく頭に入るのか、興味と関心があります。
<本日のテーマ> プログラミング言語発展の歴史 <内容> • 言語発展の歴史を概観する。 • 代表的な言語をその性質により分類してみる。
プログラミング言語発展の歴史 時間 言語以前 低水準言語 オブジェクト指向言語 機械語 アセンブリ言語 Delphi 高水準言語 C++Builder FORTRAN JBuilder PL/1 COBOL ビジュアル開発環境 ALGOL ALGOL68 PASCAL Ada Object PASCAL BASIC C言語 C++ Lisp Java 超高水準言語 Prolog Smalltalk 参考:河村一樹、斐品正照
プログラミング言語以前 最初のコンピュータ(電子計算機)ENIAC • 真空管で動作する電子計算機 • 1946年 ペンシルベニア大学のモークリーとエッカートが開発 • 米国陸軍の弾道計算に利用 • 巨大(18000本の真空管)で消費電力も膨大(175kW) • 計算の手順(プログラム) 配線の組み替えとスイッチの組み替えで実施→プログラミング言語なし。
プログラミング言語の登場 ノイマン型コンピュータの登場 • 1949年英国のEDSAC完成 • 配線の組み替えとスイッチの切り替え→プログラムとして作成し、記憶装置に記憶させる プログラム→機械語で記述 • 機械語 コンピュータが直接理解できる言語→2進数で表現
機械語 • 2進数を1バイトずつ2桁の16進数で表現 • 例:188+17の答を求める 9D BC 11 9D:加算命令 BC:18811: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字程度。なお、上の記述を行った上で,質問等を付加しても結構です。 • 提出先:hiko@edu.sgu.ac.jp • 件名:「学籍番号(半角)+半角空白+氏名」を記入して下さい。 例) s03xxxx 学院太郎