プログラミング言語発展の歴史 時間 言語以前 オブジェクト指向 機械語 アセンブリ言語 プログラミング言語の歴史(ごく短く) Delphi C++Builder FORTRAN 高水準 櫻井彰人 慶應義塾大学 (higher level) 関数型 JBuilder PL/1 COBOL ビジュアル開発環境 ALGOL ALGOL68 PASCAL BASIC C言語 Lisp Ada Object PASCAL C++ ML Java Prolog 論理型 Smalltalk プログラミング言語 以前 最初(?)の電子計算機 ENIAC 真空管で動作する電子計算機 Wikipediaより 1946年 ペンシルベニア大学のモークリーとエッ カートが開発 米国陸軍の弾道ミサイルの計算に利用 巨大(18000本の真空管)で消費電力も膨大 (175kW)、重量30t 計算の手順(プログラム) 配線の組み替えとスイッチの組み替えで実施 →プログラミング言語なし。 プログラミング言語 の登場 ノイマン型(プログラム内蔵) コンピュータの登場 1949年英国のEDSAC完成 (配線の組み替えとスイッチの切り替えではなく) 2進数字の列(データ!)として、記憶装置に記憶 言語である これを機械語と呼ぼう 機械語 コンピュータが直接理解できる言語 →2進数で表現 例: 機械語 命令をすべて2進数で表現。 ただし、2進数で表現すると桁数が多いので 2進数を1バイトずつ2桁の16進数や3ビットずつの8 進数で表現する 例:188+17の答を求める 9D BC 11 アセンブリ言語 ADD BC 11 ADD→9Dに翻訳する必要がある アセンブラというソフトウェアが処理 初期のアセンブラ メモリ内のアドレスの指定をプログラマが担当 MOVE A [+120] Aレジスタの現在値を120バイト後方のアドレスへコピーする(代入する) 9D:加算命令 BC:整数188 11:整数17 1950年代前半に登場 例:188+17の答を求める プログラミングは大変 変数名の発明 MOVE A data1 アドレス計算からプログラマを解放 →翻訳処理ソフトが担当 1 FORTRAN 機械語とアセンブラ語の例(本物) 7C $6030番地 (60 30) の中身を1だけ増やし 60 (7C)、プログラムを終了する (3F) Uをシステムスタックにpush, stackの実効アド 30 レスをユーザスタックにload, stackの先頭から 3F 8バイト下の実効アドレスをシステムスタックに PSHS LEAU LEAS U ,S -8,S 0x4,%o1 st %o1,[%fp+-0x8] .seg "data" ld [%fp+-0x4],%o2 .seg "text" ld [%fp+-0x8],%o3 .proc 04 add %o2,%o3,%o4 .global _main st %o4,[%fp+-0xc] _main: LE12: !#PROLOGUE# 0 ret sethi %hi(LF12),%g1 restore add %g1,%lo(LF12),%g1 LF12 = -80 save %sp,%g1,%sp LP12 = 64 !#PROLOGUE# 1 LST12 = 64 mov 0x10,%o0 LT12 = 64 st %o0,[%fp+-0x4] .seg "data" LL0: 0000000 0000020 0000040 0000060 0000100 0000120 0000140 0000160 0000200 0000220 8103 010b 0000 2000 0000 2000 0000 0000 0000 006c 0000 2020 0000 0000 0000 0000 bc10 2000 d003 a040 9203 a044 952a 2002 9402 a004 9402 400a 1700 0010 d422 e090 0300 0008 c200 6208 8090 0001 0280 0004 0100 0000 4000 000a 0100 0000 4000 0804 0100 0000 4000 008b 9c23 a020 4000 0803 0100 0000 4000 0804 0100 0000 9de3 bf68 2f00 0008 ae15 e228 1100 0008 9012 220c 4000 004b 9210 2000 ac10 0008 9203 a05c mov 1957年 IBM社の汎用大型コンピュータのプ ログラム処理言語として実装 FORmula TRANslatorの略 その後大いに発展 FORTRANⅡ(’58)副プログラム→FORTRANⅣ(’62)型宣言 →FORTRAN66(’66)→FORTRAN77(’77)文字列 →FORTRAN90(’91)組み込み関数追加 科学技術計算によく使われる。実装が多い。 並列化手法がよく研究されている。 COBOL ALGOL ALGOrithmic Language COmmon Business Oriented Language 1959年開発 事務処理に適している データ処理(ファイルアクセス)に優れている英文を 書くようにプログラミングできる。 最も広汎に使われたプログラミング言語 ’80年代までは→COBOLができなければSEになれ ない! 1958年開発(ALGOL58) 科学技術計算向けの言語 厳密な構文規約を採用 プログラミング言語の構造として優れている 1960年 ALGOL60制定 他のプログラミング言語(CやPASCALなど)に大きな 影響を与える。 1968年 ALGOL68発表→言語規模の巨大化 PL/1 Programming Language 1 プログラミング言語の用途が分化 科学技術計算 FORTRAN 科学技術計算 ALGOL (欧州、構造化) 事務処理計算 COBOL 3者を包含した言語は可能か? IBMとSHARE(IBMのユーザ団体)が開発. 1964年 汎用的な利用が可能 言語処理系が巨大化 BASIC Beginner’s All-purpose Symbolic Instruction Code 1964年 米国ダートマス大学で開発 初心者のための教育用言語 言語仕様が簡単 コンパイラではなくインタプリタを使用 当初は汎用コンピュータ パソコンに移植され、大いに普及 2 PASCAL 1971年 Wirth(ヴィルト)により発表 ALGOL60の後継言語との位置づけ 特徴 構造化プログラミングの実現、適切なデータ構造 系統的なプログラミング教育に用いることを目指す i.e. 既存の言語とは異なる視点で開発 言語仕様の範囲を広げ過ぎなかった ALGOL68の反省にたって言語処理系の効率化 C言語などに影響 C言語 1973年 米国AT&Tのベル研究所のRitchie(リッチー)が UNIX開発用に設計 1967年 Richards(リチャーズ)がBCPLを開発 Thompson(トンプソン)がUNIX記述用に更新・開発 B言語 その次の言語として C言語 特徴 システム記述言語でもある(アセンブリ言語が主流であった) システム記述から一般の処理まで広汎にカバー 自由度の高い汎用的な言語 何でも書けてしまって危険 90年代:Cが分からないシステムエンジニアはいらない。 Ada 1980年米国の国防総省の軍規格となる 軍で使用している各種コンピュータシステムの管理が煩雑 言語仕様が数百種類にも及ぶ 統一的に管理できないか? 軍独自の仕様に基づいた新しいプログラミング言語を 公募によりフランスのIchbiah(イシビア)らが開発した言語 を採択 特徴: ソフトウェア工学を意識 PL/I以上に巨大 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を発表 クラス階層と継承を実装 最も純粋なオブジェクト指向言語 3 Java言語 既存言語のオブジェクト指向化 C言語→C++言語 1980年からAT&T社のStroustrup(スト ローストープ)が開発 1991年にはVersion3に PASCAL→Object PASCAL ビジュアル環境化 C++ → C++Builder、Viasual C++など Object PASCAL → Delphi 1995年 米国サンマイクロシステムズ社が発表 開発の考え C++のオブジェクト指向機能を純化 C++の一部機能(難解な部分)を排除 特徴 どのOSや機種でも動作する。 携帯端末や家電製品も想定 インターネットの発達とともに、急速に注目・普及 2000年代: Java言語の分かるシステムエンジニアが 必要(か?)! 4
© Copyright 2025 ExpyDoc