プログラミング言語年表

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動先: 案内検索

プログラミング言語年表(プログラミングげんごねんぴょう)とは、プログラミング言語の開発史に関する年表である。

主要と思われる言語については太字で表した。個々の言語の開発の詳細については、個別の記事にゆずる。 テンプレート: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年代後半からFORTRANCOBOLなど初期の代表的なプログラミング言語が登場した。

後に広まる構造化言語の概念もこの頃に現れるが、しばらくの間は黎明の時代で、本格的に実用水準になるまでには時間を要した。

1960年代後半-1970年代

この頃、構造化言語の開発が進み、次第に実用水準へと入った。この頃に登場したC言語とその派生言語は2000年代に入った現在でも広く使用されている。一方、この時代にオブジェクト指向の概念が現れ、黎明時代に入った。本格的な普及は1980年代-1990年代となった。

1980年代

1970年代に登場したC言語が広く普及した。C言語は、しばらくの間、言語の仕様が定まらず多くの方言が登場するなど混乱も生じたが、次第に標準化へと向かった。1970年代末頃からパーソナルコンピュータが普及しはじめ、この頃のパソコンに搭載されたBASICも中心的な言語として浸透した。しかし、機種ごとにBASICの方言が生じるなどさまざまな独自仕様が搭載されたことで、1980年代後半になるとこの時代のBASICは衰退へと向かった。詳細はBASIC#歴史を参照のこと。

オブジェクト指向について関心が持たれるようになり、既存の言語にオブジェクト指向を導入する動きが始まった。代表的なものにC++やObject PascalObjective-Cがある。

  • 1983年 C++が命名される。C言語にオブジェクト指向を導入した。しばらくは模索の時代が続き、次第に仕様が固められていった。C言語とともにプログラム開発の中心的な言語となった。一方で、多くの仕様拡張を行った結果、複雑な仕様の言語となった。
  • 1983年 ブラッド・コックスによって、Objective-Cが開発される。C++と同じくC言語との上位互換を持つオブジェクト指向型言語であるが、C言語の仕様を拡張する形で発展したC++と違い、SmalltalkのオブジェクトシステムをそのままC言語に取り付けたような仕様になっている。後にNeXTMac 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など、既存の言語の拡張ではない新規に開発されたオブジェクト指向言語も登場した。また、コンピュータの性能向上で、従来では小規模な用途にとどまっていたスクリプト言語も次第に高機能化していった。スクリプト言語も簡易プログラミング言語として広まっている。

2000年代

情報機器ネットワークでつながる時代になるにつれて、従来にはない問題が生じた。従来のソフトウェアは単体機器や閉鎖的なネットワークで動作するため、深刻な誤動作をしなければ良しとされていたが、情報機器が広くネットワークにつながりはじめたことで些細な欠陥も許容されない時代へと入った。コンピュータのソフトウェアは、コンピュータ資源の乏しかった時代の影響を受けて従来は処理性能やコンパクトさを重視してきたが、これとは別にネットワーク時代に対応できる安全な言語や開発手法が求められている。

コンピュータの高性能化に伴い、中間コード型のスクリプト言語の利用領域が広がった。また、ソフトウェアが高度に発達したことにより、従来の汎用言語ではカバーしにくい分野も拡大しており、用途に応じた言語の住み分けが進みつつある。

  • 2002年 マイクロソフトがC#を発表。CLRという仮想マシン環境で動くオブジェクト指向言語。Javaの影響を強く受けており、C++とJavaの中間的な特徴をもつ。
  • 2002年 ECMAScriptがISO標準となる(ISO/IEC 16262)。
  • 2003年 マーティン・オーダスキーがScalaを開発。オブジェクト指向言語と関数型言語の特徴を統合し、Javaプラットフォーム上で動作する。
  • 2007年 C言語の置き換えを目指して開発されたD言語バージョン1.0がリリース。ネイティブコードで動作し、近年発達してきた他の言語の機能を多くとりいれている。
  • 2009年 GoogleGoを発表。並列コンピューティングに配慮したコンパイラ言語。依存性の注入を言語仕様にとりこみ、例外処理やクラスの継承、アサーションオーバーロードといった機能を排除している。
  • 2011年 GoogleDartを発表。 、ウェブブラウザ組込みのスクリプト言語であるJavaScriptの代替となることを目的に作られた。 2014年ECMA-408と言う標準規格に登録
  • 2014年 Apple Inc.Swift (プログラミング言語)を発表。 Objective-Cオブジェクト指向だけ残して新たな近代的言語を作り上げた。Objective-CC言語とソースレベルで混在使用も可能でそれらのライブラリなど過去の資産を全て使う事が出来る。 LLVM上でコンパイルしデバッグする。 特にPlaygroundと言う開発環境ではインタプリタの様にリアルタイムで結果を見たり(数値のみならず画像も)、過去の変数の経過を見たりグラフで遷移を表示したりできる。 ターミナル上ではREPLを動かしてインタプリタと同じ様に実行できる。

注釈

  1. テンプレート:Citation

関連項目