比較プログラム言語論 平成16年4月21日 森田 彦 レポート抜粋(4/14) 興味・関心 この講義では、どのような時にどんな言語を用いる ことが最適であるのか、どの言語はどの言語の発 展系として作られたのか、更にどの言語のどんな欠 点を克服する為にどのような言語が作られることと なったのか・・・さまざまなことに興味があります。 まずは言語の種類から、その歴史、それぞれの長 所・短所など知ることができればと思います。 いろいろなプログラミング言語の便利な点、優れた 点、欠点などの特徴を知りたい。プログラミング言語 の歴史にも興味がある。プログラミング言語の作ら れた順番を知りたい。 レポート抜粋(4/14) 疑問Ⅰ 1つの言語を学べば他の言語もすぐに理解できるの はなぜかということについて興味・関心があるととも に疑問に思っています。 そのたくさんの種類の言語を一つに統一できないの か、できないとしたらどんな使い分けをしているのか。 言語によって、プログラミングの入力の仕方や中身 は、全然違いますか? プログラミング言語はもう完成されたものなのか、そ れとも常に発達しているもので新しい言語が次々に できているのか? http://ext-web.edu.sgu.ac.jp/HIKO/HikakuProgに掲載 レポート抜粋(4/14) 疑問Ⅱ PHPとJavaスクリプトをほんの少しやったので すが、Javaと違って関数を呼び出して使うや り方にとまどいを覚えました。が、関数を用い てプログラムを行うのはどうやら普通のようで す。なぜ多くのプログラミング言語は関数を用 い、Javaはクラスを用いるようになったのです か?オブジェクト指向は必ず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] 学籍番号(s02XXXなど)と氏名を明記して下さい。
© Copyright 2024 ExpyDoc