言語

プログラミング言語の歴史を見える化してみた

投稿日:


まつもとゆきひろ 言語のしくみ」と「Talk Python #100」のGuidoの回をたまたま同時期に見聞きしたら言語の歴史を調べたくなった。言語は少なからず他の言語から影響を受けたり、他の言語に影響を与えたりしている。ということでその影響関係をwikipediaの情報を元に見える化してみた。

ぐちゃ〜。。。これだけ見ると複雑に絡み合ってよくわからない。ただ見たい言語をクリックするとその言語がフォーカスされどの言語がどの言語に影響を与えどの言語に影響を受けたかが見やすくなる。

使い方

ソースはこちら

GitHub

taisa831/Langury

Contribute to Langury development by creating an account on GitHub.

多重継承が可能なC++で(ただクラスをつくってるだけ)doxygenとgraphvizを使って出力している。

インストール

DoxygenとGraphvizをインストールする。

Languryをクローンする。

出力

doxygenコマンドを実行してHTMLを出力して開く。

対象言語

ここで取り上げた言語はwikipediaの以下を対象にした。
※一部記載なし。
※実際とは異なっていたり足りてない箇所があるご注意ください。

各言語について

1950年代

FORTRAN

1954年にIBMのジョン・バッカスによって考案された。コンピュータにおいて広く使われたプログラミング史上最初の高水準言語。

LISP

1958年にジョン・マッカーシーによってはじめて設計された。高水準プログラミング言語の中ではFORTRANに次いで2番目に古い。LISPの名前は「list processor」に由来している。

ALGOL

1950年代中ごろに開発され、多くの言語に影響を及ぼした。ACMや教科書や学術論文などでアルゴリズム記述のデファクトスタンダードとして30年以上使われ、ほぼ同世代の高水準言語であるFORTRAN、LISP、COBOLに比べて最も成功した。設計者はバウアー、 ルティシュハウザー、 サメルソン、 バッカス、 パリス、 ナウア、 ファン・ワインハールデン、 マッカーシー他。FORTRANで明らかとなった問題を防ぐよう設計された。「ALGOL」は「アルゴリズム言語」を意味する英語「algorithmic language」に由来する。

COBOL

1959年に事務処理用に開発されたプログラミング言語。名前は「Common Business Oriented Language」(共通事務処理用言語)に由来する。

1960年代

CPL

CPLはケンブリッジ大学の数学研究所とロンドン大学コンピュータ部の共同プロジェクトとして1960年代に開発された。C言語の遠い祖先となった言語でクリストファー・ストレイチーが関与している。Combined Programming Language「統合プログラミング言語」の意。

BASIC

1964年に米国ダートマス大学にて数学者ジョン・ケメニーとトーマス・カーツにより教育用などを目的としてダートマスBASICが開発された。初心者向けのプログラミング言語として、1970年代以降のコンピュータ(特にパソコン)で広く使われた。Windowsアプリケーションの主力な開発言語であるVisual Basicの文法に影を残している。

PL/I

1964年に生まれ。教育機関、商用、工業で使用され現在も使われている。「programming language one」(ピーエルワン)に由来する。

BCPL

Basic Combined Programming Language、Basic-CPLは、1966年にケンブリッジ大学のマーチン・リチャーズが設計した。B言語の基礎で、B言語から派生したC言語は文法的にBCPLの亜種。

Simula

オルヨハン・ダールクリステン・ニガードによってALGOL60を拡張する形で1960年代に開発が始められたシミュレーション用途のプログラミング言語(登場時期は1967年)。世界最初のオブジェクト指向言語であると言われる。

LOGO

1967年に教育(特に構成主義教育)のために、ダニエル・G・ボブロウ、Wally Feurzeig、シーモア・パパート、シンシア・ソロモンによって開発された。名称はギリシャ語のlogos(言葉)に由来する。

B

AT&Tベル研究所のケン・トンプソンによって開発され1969年頃に登場した。トンプソン自身とデニス・リッチー、ブライアン・カーニハンによって改良を加えられ、NewB(NB)を経てC言語へと発展した。

1970年代

Forth

スタック指向言語

Pascal

ニクラウス・ヴィルトの設計による言語。登場時期は1970年。名前は、哲学者・数学者・科学者で、機械式計算機を製作するなど技術者でもあったブレーズ・パスカルにあやかったもの。ALGOL(直接的にはその一派生であるヴィルトが関与したALGOL W)などの影響があるが、個人の設計であることに由来する簡素だがよく整った言語仕様(構文と意味)を持つ。

C

1972年にAT&Tベル研究所のデニス・リッチーが主体となって開発した言語。AT&Tベル研究所のケン・トンプソンが開発したB言語の改良として誕生した。

Prolog

1972年頃にフランスのアラン・カルメラウアーとフィリップ・ルーセルによって考案された非手続き型言語。名称は「論理を使ったプログラミング」を意味するフランス語「programmation en logique」に由来する。

Smalltalk

Simulaのオブジェクト(およびクラス)、LISPの徹底した動的性、LOGOのタートル操作や描画機能に、アラン・ケイの「メッセージング」というアイデアを組み合わせて作られたクラスベースの純粋オブジェクト指向言語。1972年に開発が開始され1980年に公開された。

Scheme

構文スコープを持つLISPの方言の1つ。登場時期は1975年。

ML

関数型言語の1つであるが、純粋関数型でない特徴や機能を持つ。登場時期は1970年代。

AWK

AWK(オーク)はベル研究所におけるUNIX開発の過程で、sedやgrepのようなテキスト処理ツールに演算機能を持たせた拡張ツールとして開発された。

Ada

Ada(エイダ)は強力な言語機能を豊富に持ち、高度な型の体系をもつ言語の1つで構文はAlgol系。登場時期は1983年で設計者はジャン・イシュビア。史上初のプログラマとされるエイダ・ラブレスの名前にちなんでAdaと命名されている。

1980年代

C++

汎用プログラミング言語の1つ。1983年にベル研究所のコンピュータ科学者のビャーネ・ストロヴストルップが、C言語の拡張として開発した。

Objective-C

C言語をベースにSmalltalk型のオブジェクト指向機能を持たせた上位互換言語。NeXT、macOSのOSに標準付属する公式開発言語。1983年にブラッド・コックスによって開発された。

Common Lisp

関数型言語でLISP方言の一種。登場時期1984年で1994年にANSIにより標準化された。

Eiffel

頑健なソフトウェアの生産に注力したオブジェクト指向言語。1985年にバートランド・メイヤーによって考案された。言語名の由来は、エッフェル塔ではなく、その設計者のギュスターヴ・エッフェル

Erlang

汎用的な用途に使うことができる並行処理指向言語および実行環境。直列処理のサブセットの言語は、関数型言語。登場時期は1986年で開発者はエリクソン。Erlangは数学者のアグナー・アーランから名前をとって命名された。

Perl

ラリー・ウォールによって開発された言語。登場時期は1987年。プログラマの三大美徳を唱えた。実用性と多様性を重視しており、C言語やsed、awk、シェルスクリプトなど他のプログラミング言語の優れた機能を取り入れている。

1990年代

Python

汎用のプログラミング言語である。コードがシンプルで扱いやすく設計され、C言語などに比べて、さまざまなプログラムを分かりやすく、少ないコード行数で書けるといった特徴がある。1991年にオランダ人のグイド・ヴァンロッサムが開発した。名前の由来はイギリスのテレビ局BBCが製作したコメディ番組『空飛ぶモンティ・パイソン』。

Tcl/Tk

ティクル・ティーケーはスクリプト言語Tclと、そのGUIツールキットTkを指す。Tclがカリフォルニア大学バークレー校のジョン・ケネス・オースターハウト博士により最初に開発され、TkはTclように開発され、1990年代初頭にTclにバンドルされる形で公開された。

Haskell

非正格な評価を特徴とする純粋関数型言語である。名称は数学者であり論理学者であるハスケル・カリーに由来する。高階関数や静的多相型付け、定義可能な演算子、例外処理といった多くの言語で採用されている現代的な機能に加え、パターンマッチングやカリー化、リスト内包表記、ガードといった多くの特徴的な機能を持っている。最初の版の Haskell(Haskell 1.0)は1990年に作成された。

Visual Basic

マイクロソフトが1990年代に開発していたプログラミング言語およびその処理系。

Ruby

まつもとゆきひろ(通称 Matz)により開発されたオブジェクト指向スクリプト言語。1995年12月にfj上で発表された。Perlが真珠から名付けられたので、それにならって宝石から名付けようと考え、いくつかの候補からRubyを選んだ。最終候補に残ったのがCoral(サンゴ)とRubyで、結局Rubyの方が短く美しいということで採用された。

Lua

リオデジャネイロ・カトリカ大学の、主としてDepartment of Computer Science(コンピュータ科学科)and・or Computer Graphics Technology Group (Tecgraf) に属する、Roberto Ierusalimschy, Waldemar Celes, Luiz Henrique de Figueiredoらによって設計開発されたスクリプト言語およびその処理系の実装。手続き型言語として、また、プロトタイプベースのオブジェクト指向言語としても利用することができ、関数型言語、データ駆動型としての要素も併せ持っている。Luaという名前は、ポルトガル語の月に由来する。

Delphi

Delphi(デルファイ)は、コンソール (CUI)、デスクトップ (GUI)、Web、モバイルアプリケーション開発のための統合開発環境 (IDE)で1995年に登場した 。DelphiのコンパイラはPascalを独自に拡張したObject Pascal (Delphi 言語) を用いて、プラットフォーム毎にネイティブコードを生成する (Windows, macOS, iOS, Android)。

Java

JavaおよびJavaプラットフォームは、1990年代前半当時、サン・マイクロシステムズに居たジェームズ・ゴスリンビル・ジョイなどの人々によって設計・開発された。それ以前のさまざまな言語の良い部分を引き継ぎ、欠点を克服するよう設計され、オブジェクトモデルはSmalltalkやObjective-Cと同様の簡潔なものを採用している。

JavaScript

JavaScriptはネットスケープコミュニケーションズのブレンダン・アイクによって開発され、Netscape Navigator 2.0で実装された。開発当初はLiveScriptと呼ばれていたが、1995年にサン・マイクロシステムズ(現・オラクル)が開発したプログラミング言語Javaが当時大きな注目を浴びており、ネットスケープとサン・マイクロシステムズが業務提携していた事もあったため、JavaScriptという名前に変更された。

PHP

“The PHP Development Team” によってコミュニティベースで開発されているオープンソースの汎用プログラミング言語であり、特にサーバーサイドで動的なウェブページ作成するための機能を多く備える。 名称のPHPは再帰的頭字語である”PHP: Hypertext Preprocessor”を意味し、「PHPはHTMLのプリプロセッサである」とPHP自身を再帰的に説明している。 元々は「個人的なホームページ」を意味する英語の”Personal Home Page”に由来し、プログラムが大きく書き直されたバージョン3から現在の意味となった。設計者はラスマス・ラードフ。登場時期は1995年。

OCaml

オーキャムル、オーキャメルは、フランスのINRIAが開発したプログラミング言語MLの方言とその実装。MLの各要素に加え、オブジェクト指向的要素の追加が特長である。かつてはObjective Camlという名前で、その略としてOCamlと広く呼ばれていたが、正式にOCamlに改名された。登場時期は1996年。

SuperCollider

音響合成用プログラミング環境および言語。オブジェクト指向型で、リアルタイム音響合成とアルゴリズミック・コンポジションに特化している。SuperColliderは、1996年にJames McCartneyによって開発・発表された。

R

オープンソース・フリーソフトウェアの統計解析向けのプログラミング言語及びその開発実行環境。ニュージーランドのオークランド大学のRoss IhakaRobert Clifford Gentlemanにより作られた。R言語のソースコードは主にC言語、FORTRAN、そしてRによって開発された。

2000年代

C#

マイクロソフトが開発したマルチパラダイムプログラミング言語。登場時期は2000年。開発にはボーランド社のTurbo PascalやDelphiを開発したアンダース・ヘルスバーグを筆頭に多数のDelphi開発陣が参加している。

Scala

2003年の暮れに内部で公開された後、2004年の始めにJavaのプラットフォームにリリースされた。ScalaはJavaプラットフォーム(Java仮想マシン)上で動作する。スイス・ローザンヌにあるスイス連邦工科大学 (EPFL) のマーティン・オーダスキー教授によって設計された。

D

C言語をベースとしABI互換を保ちつつも、テンプレートによるジェネリックプログラミングやオブジェクト指向プログラミング、関数型プログラミングなどをサポートする。2001年にウォルター・ブライト, アンドレイ・アレキサンドレスクによって設計された。

F#

マイクロソフトが開発した.NET Framework向け言語。登場時期は2005年。F#のFはFunctional programming language(関数型プログラミング言語)およびSystem Fが由来で、Fortranとは無関係。

Go

Googleによって開発された。設計にロブ・パイクケン・トンプソンらが関わっている。軽量スレッディングのための機能、Pythonのような動的型付け言語のようなプログラミングの容易性が特長。登場時期は2009年。

2010年代

Ceylon

レッドハット社によって開発されたプログラミング言語およびソフトウェア開発キット。Java言語をもとに作られ、Java仮想マシンおよびJavaScript実行環境上で動作する。登場時期は2011年。

Rust

Mozillaによって開発された。関数型プログラミング、並列アクターモデル、手続き型プログラミング、オブジェクト指向プログラミングをサポートする実用的な言語を目指している。登場時期は2010年。

Dart

2011年にグーグル社から公開された。JavaScriptの代替となることを目的に作られた言語。

Elixir

高い拡張性があり、Erlangの仮想環境上で動作するシステムを目標に、José Valimによって開発された2012年に登場した。Erlangで実装されているため、分散システム、耐障害性、ソフトリアルタイムシステム等の機能が利用できる拡張機能として、マクロを使ったメタプログラミング、そしてポリモーフィズムなどのプログラミング・パラダイムもプロトコルを介して実装されている。

Hack

Facebookにより開発された。PHP実行環境のHipHop仮想マシン (HHVM) で動作する。登場時期は2014年。

Swift

2014年のアップルのWWDCにて発表された。LLVMコンパイラが使われており、ライブコーディングに対応していることが特徴。

最後に

wikipediaの情報を元に出力しているので足りてない部分や誤っている箇所、単純に記述にミスってる部分が多分にあると思いますが参考になればと思います。何かお気づきの際は是非コメントやpull requestを頂けたらうれしいです。

参考


-言語
-

執筆者: