プログラミング言語年表
プログラミング言語年表(プログラミングげんごねんぴょう)とは、プログラミング言語の開発史に関する年表である。
主要と思われる言語については太字で表した。個々の言語の開発の詳細については、個別の記事にゆずる。 テンプレート:History of computing
1940年以前
最初のプログラミング言語は符号でありコンピュータよりも前に誕生した。
チャールズ・バベッジが提案した最新鋭の機械である解析機関についての記事をイタリアの数学者ルイジ・メナブレアが執筆し、1842年から1843年の9ヶ月間にエイダ・ラブレスがそれを翻訳した。この記事の中で彼女はこの機械でベルヌーイ数を計算する完全なプログラムを掲載した。これは世界初のコンピュータプログラムであると言われている。[1]
1801年にジャカード織機が発明され、自動的に模様を織り込むための機械の動作が穴の形で記されたパンチカードが用いられた。
列車の中で車掌が切符に穴を開け乗客についての情報を穴の位置で記録するのを見たハーマン・ホレリスは、パンチカードに情報を記録することができることに気付き、1890年の国勢調査にパンチカードを利用した。
最初のプログラムは特定のアプリケーションに特化していた。20世紀の初期は計算を10進数で行っていた。この頃に論理が言葉だけでなく数値によっても表現可能であることが分かってきた。例えばアロンゾ・チャーチはラムダ計算を形式的に表現できた。チューリングマシンはテープに情報を記録した機械の抽象概念であり、電話会社などで利用された。チューリングマシンの概念は、有限のメモリ空間にプログラムをデータとして保有するフォンノイマン型アーキテクチャのコンピュータが登場する下地となった。しかしながら、ラムダ計算と異なり、チューリングのコードはプログラミング言語の基礎をなしたとは言えない。それは計算複雑性の厳密な分析において主に利用される。
どの言語が世界初のプログラミング言語かというのは定かではない。プログラミング言語の仕様は最初からハードの制約に強く依存していた。パンチカードには80のカラムがあるが、一部のカラムはカードを並べるための連番を記録するために使用された。Fortranには英語と同じキーワード("IF"、"GOTO" (go to)、"CONTINUE"など)があった。磁気ドラムを記憶装置として用いるためにはプログラムをドラムの中にインタリーブし、データとプログラムを交互に配置しなければならなかった。従ってこの時代のプログラムはハードに強く依存していた。
どれだけの利用価値が、また、どれだけの汎用性があればプログラミング言語と言えるのかということは人により見解が異なる。ジャカード織機とチャールズ・バベージの階差機関はいずれも作業を遂行させるための単純で原始的な言語があった。穿孔ペーパーを利用した自動ピアノは何かを生産するために設計されたものではないが、これを一種のドメイン固有言語と見なす人もいる。
1940年代
記録として残されている最初の近代的な電気式コンピュータは1940年代に作られた。速度とメモリ容量の制約からプログラマはアセンブラでプログラムを記述する以外になかった。アセンブラを用いたプログラムは高度に知的な努力を求められる作業であり、エラーを招きやすいことは当時から指摘されていた。
1948年にコンラート・ツーゼがプランカルキュール(Plankalkül)についての論文を発表した。しかしながら当時は実装されず、他のプログラミング言語の開発と進化に影響を及ぼさない孤立した存在であった。
この期間中に開発された主要なプログラミング言語には以下のようなものがある。
1950年代後半-1960年代半ば
1950年代にコンピュータの利用が本格的に始まり、ソフトウェアの開発にも関心が注がれるようになった。それまでプログラムの作成はコンピュータが理解できる機械語と呼ばれる言語で行っていたが、機械語は人間には理解しにくい欠点を持っていた。そこで、人間にも理解しやすい言語を目指す高級言語の開発が始まり、1950年代後半からFORTRANやCOBOLなど初期の代表的なプログラミング言語が登場した。
後に広まる構造化言語の概念もこの頃に現れるが、しばらくの間は黎明の時代で、本格的に実用水準になるまでには時間を要した。
- 1957年 IBMのジョン・バッカスらがFORTRANを完成。1954年から開発が始まった。高級言語としては最初のものである。その後、何度かの仕様改定を行い、2010年現在も科学技術計算など大規模な計算を必要とする分野で使用されている。
- 1958年 ALGOL58を発表。FORTRANに対抗してヨーロッパの研究者の主導で開発された。構造化プログラミングの考え方を取り入れた最初の言語である。その後、改良が進められたが、当時の水準ではコンパイラの作成が難しく、あまり普及しなかった。構造化プログラミングは後に登場するPascalやC言語など多くの言語に影響を与えた。
- 1960年 J.SammetらがCOBOLを発表。アメリカ国防総省主導で開発した。初期の高級言語の1つ。事務処理言語として広く普及した。COBOLは2010年現在でも企業の事務処理系システムで利用されている。
- 1960年 MITのジョン・マッカーシーがLISPを発表(開発したのは1958年)、ポーランド記法を使用した独特の文法を持つ言語であり、「純粋ではない」が最古の関数型言語でもある。現在でも人工知能やEmacsのマクロなどに使用されている。
- 1964年 米ダートマス大学がBASICを開発(ダートマスBASIC)。その後、1970年代にマイクロソフトがMS BASICを発表し、8ビットパソコンにROM BASICとして搭載され広まった。8ビットパソコン時代 (1970年代後半-1980年代前半)の中心的な言語となった。
- 1966年 IBMがPL/Iを発表。IBMがシステム/360用に開発した。当時、科学技術計算にはFORTRAN、事務処理にはCOBOLという図式ができていたが、PL/Iは双方の用途を1つの言語でカバーすることを目的とした。
1960年代後半-1970年代
この頃、構造化言語の開発が進み、次第に実用水準へと入った。この頃に登場したC言語とその派生言語は2000年代に入った現在でも広く使用されている。一方、この時代にオブジェクト指向の概念が現れ、黎明時代に入った。本格的な普及は1980年代-1990年代となった。
- 1966年 ケンブリッジ大学のマーティン・リチャーズがBCPLを開発。フロントエンドとバックエンドの分離、中間言語形式の生成など、現在のコンパイラ技術の基礎はここで確立した。後にB言語に影響を与え、C言語へと発展した。
- 1967年 ノルウェー計算センターのクリステン・ニガードとオルヨハン・ダールがSimulaを開発する。オブジェクトの概念をもつ言語としては最古の言語である。
- 1968年 チャールズ・ムーアがForthを発表。逐次型の手続き型言語として組み込み向けによく使われる。
- 1969年 スイス、チューリッヒ大学のニクラウス・ヴィルトがPascalを設計。中期の代表的な構造化言語の1つ。その後、教育用言語として1980年代頃から広く普及した。1995年に登場するDelphiもPascalの血を引く言語である。
- 1970年頃 ベル研究所のケン・トンプソンらがB言語を開発。中間コードを生成し、インタプリタで実行する。yaccの初期バージョンはB言語用であった。その後、C言語へと発展した。
- 1972年 デニス・リッチーらがC言語を開発。C言語はプログラム開発の中心的な言語となり、2000年代でも広く使用されている。また、1980年代にはオブジェクト指向の考え方を取り入れたC++へと発展した。
- 1972年 アラン・カルメラウアーとフィリップ・ルーセルがPrologを開発。人工知能研究とエキスパートシステムの実現のための主要言語として広く採用された。
- 1970年代前半 XEROXがSmalltalkを開発。パロアルト研究所で開発が進められた。オブジェクト指向を導入した黎明期の言語の1つであり、「オブジェクト指向」という言葉を最初に定義した言語でもある。後のオブジェクト指向型言語に多大な影響を与えた。
- 1974年 エディンバラ大学でMLが開発される。型推論の機能を持つ関数型言語。後に方言としてObjective Camlが派生。
- 1977年 テキスト編集ツールとしてawkが開発される。この名前は3人の開発者の頭文字からとられた。後に機能が強化され、テキスト処理に優れた言語としてスクリプト言語のはしりとなる。
- 1977年エドガー・F・コッドとIBM社によってリレーショナルデータベースを管理するための言語であるSQLが開発された。SQLは非手続き型言語であったが、後にOracleのPL/SQLやWindows ServerのTransact-SQLなど手続き型言語に拡張された言語が生み出された。
- 1979年 Ada。アメリカ国防総省主導で開発した。ジェネリックプログラミング(総称、汎化)、例外処理など先進的な考え方も取り入れていたが、まだコンピュータやソフトウェアの水準が追いつかなかった。
1980年代
1970年代に登場したC言語が広く普及した。C言語は、しばらくの間、言語の仕様が定まらず多くの方言が登場するなど混乱も生じたが、次第に標準化へと向かった。1970年代末頃からパーソナルコンピュータが普及しはじめ、この頃のパソコンに搭載されたBASICも中心的な言語として浸透した。しかし、機種ごとにBASICの方言が生じるなどさまざまな独自仕様が搭載されたことで、1980年代後半になるとこの時代のBASICは衰退へと向かった。詳細はBASIC#歴史を参照のこと。
オブジェクト指向について関心が持たれるようになり、既存の言語にオブジェクト指向を導入する動きが始まった。代表的なものにC++やObject Pascal、Objective-Cがある。
- 1983年 C++が命名される。C言語にオブジェクト指向を導入した。しばらくは模索の時代が続き、次第に仕様が固められていった。C言語とともにプログラム開発の中心的な言語となった。一方で、多くの仕様拡張を行った結果、複雑な仕様の言語となった。
- 1983年 ブラッド・コックスによって、Objective-Cが開発される。C++と同じくC言語との上位互換を持つオブジェクト指向型言語であるが、C言語の仕様を拡張する形で発展したC++と違い、SmalltalkのオブジェクトシステムをそのままC言語に取り付けたような仕様になっている。後にNeXTやMac OS Xの公式開発言語として使用されるようになった。
- 1984年 PostScriptが発表される。ページ記述に用いられるプログラミング言語であり、電子印刷を一般化させた。
- 1984年 多数の方言が存在したLISPを統一する試みであるCommon Lispの仕様書として、ガイ・スティールがCommon Lisp the Language を出版する。Common Lispは、既に登場していたSchemeとともに、2000年代においてもLISPの主流となっている。
- 1985年 バートランド・メイヤーによってEiffelが開発される。高品質なオブジェクト指向開発のためのユニークな機能を多く実装し、後続の言語に影響を与えた。
- 1987年 ラリー・ウォールによってPerlが開発される、主に CGIなどの用途で広く普及している。
- 1987年 AdaがISO標準(ISO/IEC 8652)となる。
- 1988年 スティーブン・ウルフラムによってMathematicaが発表される。Mathematicaは複数のパラダイムをエミュレートするプログラミング言語としても強力である。
- 1989年 C言語がANSI標準となる。
1990年代
パーソナルコンピュータの急速な進歩で、グラフィカルユーザインタフェース (GUI) の採用が本格的に進んだ。これに応じてGUIアプリケーションの開発に特化した専用言語が登場した。オブジェクト指向も一般的となり、理解が進んだ。Javaなど、既存の言語の拡張ではない新規に開発されたオブジェクト指向言語も登場した。また、コンピュータの性能向上で、従来では小規模な用途にとどまっていたスクリプト言語も次第に高機能化していった。スクリプト言語も簡易プログラミング言語として広まっている。
- 1990年 グイド・ヴァンロッサムによってPythonが開発される、オブジェクト指向のスクリプト言語として欧米で広く普及している。
- 1990年 C言語がISO標準となる(ISO/IEC 9899)。
- 1990年 スクリプト言語 Tclが公開。GUIツールキット Tk と組み合わせたGUIスクリプティング環境Tcl/Tkとして広く知られる。
- 1990年 Haskell バージョン1.0報告書が発表される。
- 1991年 マイクロソフトがMicrosoft Visual Basicを発表。Windows専用のGUIアプリケーション開発言語。BASICの名前がついているが、1980年代までのBASICとは大きく異なる。また、ExcelなどMicrosoft Officeに付属されたVisual Basic for Applicationsが一般人向けに浸透した。
- 1993年 まつもとゆきひろがRubyを開発(発表は1995年)。Perlのように使えるスクリプト言語を、純粋なオブジェクト指向言語として設計。
- 1993年 Luaがリリースされる。C言語のホストプログラムに組み込まれることを前提に開発された、高速な動作を特徴とするスクリプト言語。
- 1994年 Common LispがANSI標準となる。
- 1995年 AdaのISO改訂。オブジェクト指向言語のうち初めての国際標準。
- 1995年 ボーランドがDelphiを発表。Pascalの血をひくWindows専用のGUIアプリケーション開発言語。
- 1995年 サン・マイクロシステムズがJavaを発表。本格的なオブジェクト指向言語の1つ。構文はC言語とかなり類似しているが、内容はまったく新世代の言語である。当初はウェブブラウザのアプレット開発言語として注目され広まった。その後は、サーバ分野で広く使われている。
- 1995年 ラスマス・ラードフがPHP/FIを開発。後のPHPの元になる。サーバ分野で広く使われている。
- 1996年 音響合成に特化したプログラミング言語としてSuperColliderが開発される。
- 1997年 JavaScriptの標準仕様としてECMAScriptが標準化される。
- 1998年 C++がISO標準となる(ISO/IEC 14882)。言語仕様が確定するまで、出現から15年を要したことになる。
- 1998年 エリクソン社がErlangを公開。並行処理指向のプログラミング言語および実行環境。
2000年代
情報機器がネットワークでつながる時代になるにつれて、従来にはない問題が生じた。従来のソフトウェアは単体機器や閉鎖的なネットワークで動作するため、深刻な誤動作をしなければ良しとされていたが、情報機器が広くネットワークにつながりはじめたことで些細な欠陥も許容されない時代へと入った。コンピュータのソフトウェアは、コンピュータ資源の乏しかった時代の影響を受けて従来は処理性能やコンパクトさを重視してきたが、これとは別にネットワーク時代に対応できる安全な言語や開発手法が求められている。
コンピュータの高性能化に伴い、中間コード型のスクリプト言語の利用領域が広がった。また、ソフトウェアが高度に発達したことにより、従来の汎用言語ではカバーしにくい分野も拡大しており、用途に応じた言語の住み分けが進みつつある。
- 2002年 マイクロソフトがC#を発表。CLRという仮想マシン環境で動くオブジェクト指向言語。Javaの影響を強く受けており、C++とJavaの中間的な特徴をもつ。
- 2002年 ECMAScriptがISO標準となる(ISO/IEC 16262)。
- 2003年 マーティン・オーダスキーがScalaを開発。オブジェクト指向言語と関数型言語の特徴を統合し、Javaプラットフォーム上で動作する。
- 2007年 C言語の置き換えを目指して開発されたD言語バージョン1.0がリリース。ネイティブコードで動作し、近年発達してきた他の言語の機能を多くとりいれている。
- 2009年 GoogleがGoを発表。並列コンピューティングに配慮したコンパイラ言語。依存性の注入を言語仕様にとりこみ、例外処理やクラスの継承、アサーション、オーバーロードといった機能を排除している。
- 2011年 GoogleがDartを発表。 、ウェブブラウザ組込みのスクリプト言語であるJavaScriptの代替となることを目的に作られた。 2014年ECMA-408と言う標準規格に登録
- 2014年 Apple Inc.がSwift (プログラミング言語)を発表。 Objective-Cのオブジェクト指向だけ残して新たな近代的言語を作り上げた。Objective-CやC言語とソースレベルで混在使用も可能でそれらのライブラリなど過去の資産を全て使う事が出来る。 LLVM上でコンパイルしデバッグする。 特にPlaygroundと言う開発環境ではインタプリタの様にリアルタイムで結果を見たり(数値のみならず画像も)、過去の変数の経過を見たりグラフで遷移を表示したりできる。 ターミナル上ではREPLを動かしてインタプリタと同じ様に実行できる。