プログラミング言語年表

コンピュータプログラミング言語に関する歴史

プログラミング言語年表(プログラミングげんごねんぴょう)は、コンピュータプログラミング言語に関する年表である。個々の言語の詳細については、個別の記事にゆずる。

1940年以前

編集

チャールズ・バベッジが計画した「機械式コンピュータ」と言える装置である解析機関についての文章をイタリアの数学者で政治家ルイジ・メナブレア英語版イタリア語版が執筆し、1842年から1843年の9ヶ月間にエイダ・ラブレスがそれを翻訳した。この記事の中で彼女はこの機械でベルヌーイ数を計算する完全なプログラムを掲載した。これは世界初のコンピュータプログラムであると言われている。[1]ただし、これは機械(コンピュータ)に対する命令そのもの(機械語)で記述されたプログラムであり、「プログラミング言語」としては広義のそれとなる。

1801年にジャカード織機が発明された。パンチカードを利用するもので、布に織り込む模様に対応した縦糸(経)の上げ下げの対応がそのまま厚紙の穴になったもので、コンピュータプログラムと見るのは無理があるが「プログラマブルな装置」の一種である。オルゴール自動オルガンなど他にもいろいろある。後に、列車の中で車掌切符に穴を開け乗客についての情報を穴の位置で記録するのを見たハーマン・ホレリスは、このパンチカードを情報の記録に使うことを発想し、1890年の国勢調査にパンチカードを利用する機械(タビュレーティングマシン)を提供した。

以上のような具体的な数値の計算ばかりではなく、数学の中でもより抽象的な分野で、記号の操作というもっと広い範囲で「計算」というものを形式的に表現する手法が1900年前後から研究されていた。これは数学基礎論数理論理学と関係する。

アロンゾ・チャーチラムダ計算を提案した。チューリングマシン有限オートマトンと無限の長さがあるテープ(理論で扱う上では)を使う。これらのような、計算を形式化したものを計算モデルと言う。理論的にはラムダ計算もチューリングマシンも他の多くの計算モデルも、何が「計算可能」であるかという点では同等の能力を持つことが証明されていて、これらの計算モデルで計算可能であるということを、「計算可能」ということの定義としよう、という定立がチャーチ=チューリングのテーゼである。

チューリングマシンには実際のコンピュータ、特に古典的ないわゆるノイマン型に似たところがあり、一方のラムダ計算は現代的な高水準プログラミング言語のHaskellにおいてその基礎のひとつになっている。ある意味でコンピュータ科学の端と端が、数学の基礎を通してつながっているという興味深い関連とも言える。

1940年代

編集

電子式コンピュータは1940年代前後から作られ始めた。最初期のコンピュータはそれ自体で言語処理系を実行できるような能力などなく、機械語ないしごく単純なアセンブリ言語でプログラムを記述する以外になかった。また、機械語に変換する作業さえ人手で行われることもあった。しかし、プログラミングは高度に知的な努力を求められる作業であり、バグの無いプログラムを書くことやデバッグ作業の大変さは、この時代に既に指摘があった[2]

1948年にコンラート・ツーゼプランカルキュール (Plankalkül) に��いての論文を発表した。しかしながら当時は実装されず、他のプログラミング言語の開発と進化には、Superplan英語版と共にALGOL 58英語版に影響を与えた。

この期間中に開発された主要なプログラミング言語には以下のようなものがある。

また、EDSACinitial ordersに代表されるが、この時代のコンピュータでは、現代のブートローダに相当するものに、簡単なアセンブラのような機能(1文字のニモニックと十進で表現された数値からなる命令の表現を、内部のバイナリに変換しながらロードする)を持たせていたものも多い。

1950年代後半-1960年代半ば

編集

この時代には、人間にも理解しやすい言語を目指す高水準言語の開発が始まり、1950年代後半からFORTRANCOBOLLISPALGOLなど初期の代表的なプログラミング言語が登場した。

1960年代後半-1970年代

編集

この頃に登場したC言語とその派生言語は2000年代に入った現在でも広く使用されている。オブジェクト指向プログラミングの概念が登場し、のちにSimula (C++) 系統とSmalltalk系統に分かれることになる。

1980年代

編集

ミニコンピュータの世界では、1970年代に登場したC言語がUnixとともに広く普及した。C言語の最初の標準化は1989年である。一方、1970年代末頃からパーソナルコンピュータが普及しはじめ、8ビットパソコン時代には、その内蔵ROMに書かれた言語としてBASICが爆発的に普及した。

  • 1983年 C++が命名される。Simulaの設計を参考に、C言語にオブジェクト指向を導入した。しばらくは模索の時代が続き、次第に仕様が固められていった。C言語とともにプログラム開発の中心的な言語となった。一方で、多くの仕様拡張を行った結果、複雑な仕様の言語となった。
  • 1983年 ブラッド・コックスによって、Objective-Cが開発される。C++と同じくC言語との上位互換を持つオブジェクト指向型言語であるが、C言語の仕様を拡張する形で発展したC++と違い、SmalltalkのオブジェクトシステムをそのままC言語に取り付けたような仕様になっている。後にNeXTmacOSの公式開発言語として使用されるようになった。
  • 1983年 アップルコンピュータ(現Apple)がLisa PascalにClascal英語版と呼ばれるPascalのオブジェクト指向拡張を導入。
  • 1984年 PostScriptが発表される。ページ記述に用いられるプログラミング言語であり、電子印刷を一般化させた。
  • 1984年 AI研究で利用されていた主要なLISP方言(主にMACLISP系統)を統一する試みであるCommon Lispの仕様書として、ガイ・スティールが "Common Lisp the Language" を出版する。Common Lispは、既に登場していたSchemeとともに、2020年代においてもLISPの主流となっている。
  • 1985年 バートランド・メイヤーによってEiffelが開発される。高品質なオブジェクト指向開発のためのユニークな機能を多く実装し、後続の言語に影響を与えた。
  • 1986年 アップルコンピュータがObject Pascalと呼ばれるPascalのオブジェクト指向拡張をサポートするソフトウェア開発環境Macintosh Programmer's Workshop英語版をリリース。
  • 1987年 ラリー・ウォールによってPerlが開発される。その後、主にCGIなどの用途で広く普及した。
  • 1987年 AdaがISO標準(ISO/IEC 8652)となる。
  • 1988年 スティーブン・ウルフラムによってMathematicaが発表される。Mathematicaは複数のパラダイムをエミュレートするプログラミング言語としても強力である。
  • 1989年 C言語がANSI標準となる。

1990年代

編集

ワークステーションなどの世界ではあたりまえであったGUI化がパーソナルコンピュータにも及び、GUI環境のアプリケーション開発を支援する高度なRAD環境や、ビジュアルプログラミング言語なども盛んになった。80年代の、シェルスクリプトやAwkやPerlに続くような、各種のスクリプト言語もあらわれた。

2000年代

編集

情報機器ネットワークでつながる時代になるにつれて、従来にはない問題が生じた。従来のソフトウェアは単体機器や閉鎖的なネットワークで動作するため、深刻な誤動作をしなければ良しとされていたが、情報機器が広くネットワークにつながりはじめたことで些細な欠陥も許容されない時代へと入った。具体的にはバッファオーバーフローに代表される不具合に対して防衛的でない言語の利用を避け、安全な言語の利用が増えるようになった。

  • 2000年 マイクロソフトがC#を発表。.NET共通言語ランタイム (Common Language Runtime, CLR) という仮想マシン環境で動作するオブジェクト指向言語。Delphi (Object Pascal) およびJavaの影響を強く受けており、C++とJavaの中間的な特徴をもつ。2002年に.NET Framework 1.0および姉妹言語のVisual Basic .NETとともに正式リリース。
  • 2002年 ECMAScriptがISO標準となる(ISO/IEC 16262)。
  • 2003年 マーティン・オーダスキーがScalaを開発。オブジェクト指向言語と関数型言語の特徴を統合し、Javaプラットフォーム上で動作する。
  • 2005年 マイクロソフトがF#を公開。CLR上で動作し、OCamlをベースとした関数型プログラミングのパラダイムを導入。
  • 2007年 C言語の置き換えを目指して開発されたD言語バージョン1.0がリリース。ネイティブコードで動作し、近年発達してきた他の言語の機能を多く取り入れている。
  • 2009年 GoogleGoを発表。並列コンピューティングに配慮したコンパイラ言語。依存性の注入を言語仕様に取り込み、例外処理やクラスの継承、アサーションオーバーロードといった機能を排除している。

その他、GPU上で動作するシェーダープログラムを記述するための高水準言語として、CgHLSLGLSLが登場。また、GPGPUプログラミング向けの言語拡張としてCUDA C/C++、OpenCL Cなどが登場した。いずれもC言語およびC++の構文をベースとした言語がよく使われている。

2010年代

編集

新しく登場する言語は、関数型言語に影響を受けたオブジェクト指向言語が大半を占めるようになった。また、記述能力や安全性の向上した新しい言語の出現、アプリケーション実行プラットフォームの急速な変化といった影響から、C++, Java, C#といった既存の主流言語の機能仕様も頻繁にアップデートされるようになった。

  • 2010年 MozillaRustを発表。大規模なサーバーなどにおけるシステムの構築を得意とする言語である。安全性、速度、並行性の追求を目標としている。
  • 2011年 GoogleDartを発表。ウェブブラウザ組込みのスクリプト言語であるJavaScriptの代替となることを目的に作られた。2014年ECMA-408標準規格に登録。
  • 2011年 JetBrainsKotlinを発表。Java VM上で動作する。Javaと比べてコードの簡潔性や安全性を向上させるための改良が多く加えられている。
  • 2012年 MITのJeff BezansonStefan KarpinskiViral B. ShahAlan EdelmanJuliaを発表。MATLABのような数値計算向けの操作性とLispのマクロのような柔軟性を持ち、Pythonのような動的型付け言語でありながら、C言語Fortranのような静的型付け言語の良さも取り入れた言語である。多重ディスパッチなどを特徴とする。[1]
  • 2014年 AppleSwiftを発表。Objective-Cのオブジェクト機構をベースに、近代的な構文や機能を持つ新たな言語となっている。Objective-CのクラスやC言語形式関数であればシームレスに利用・相互運用することができる。LLVM上でコンパイルしデバッグする。
  • 2014年 FacebookHackを発表。PHPをベースにした新しい言語である。

出典

編集
  1. ^ J. Fuegi and J. Francis (October-December 2003), “Lovelace & Babbage and the creation of the 1843 'notes'.”, Annals of the History of Computing 25 (4), doi:10.1109/MAHC.2003.1253887 
  2. ^ モーリス・ウィルクス#栄誉と指導者としてにある、回想録からの引用を参照のこと。

関連項目

編集