近ごろプログラマーかいわいで、「関数型プログラミング言語」という言葉をよく耳にするようになった。本連載では、プログラミング言語を取り巻く状況をあらためて俯瞰し、プログラミング言語開発の現場で何が起こっているのかを解説する。
「ガーベジコレクション」、「リフレクション」、「アスペクト指向」、「クロージャ」、「イテレータ」、「型推論」など、近年、プログラミング言語の世界に新しい概念が続々となだれ込んでいるように見えます。しかし、これら「プログラミング言語の新潮流」の背景には、実はあまり知られていない歴史が隠されているのです。
プログラミング言語はお互いに影響を与えながら成長しています。プログラミング言語の歴史において、主要な言語がどのように影響を与えたかを、概略図に示しましょう(図1)。スペースの関係上この図では非常に簡略化しています*が、実際には数えきれないほどの言語*がさまざまに影響を与え合っています。
プログラミング言語には、王道とでも呼ぶべき定番のものが連綿と続いてきました(図1上部)。その中でも「始祖」に当たるのがFortran(Formula Translator)でしょう。1954年生まれのFortranは、史上最初の高級言語として誕生し、また科学技術計算の分野ではいまだに現役で活躍しています。特にベクトルプロセッサを積んだスーパーコンピューティングの領域では、ほかの言語の追随を許しません。また、事務計算用言語として誕生したCOBOL(Common Business Oriented Language)もまだまだ現役*です。
C言語は、UNIXの主要開発言語として普及しました。現在ではその地位を、C++にかなり明け渡しつつありますが、それでもなお現役で活躍しています。
あくまでもオブジェクト指向機能を付加したCとして(ほぼ)上位互換を目指すC++に対し、より高級な言語としてSun Microsystemsから華々しく登場したのがJavaです。また、マイクロソフトがJavaへの対抗馬として誕生させたのがC#になります。
一方、1987年のPerlの登場以来、スクリプト言語と呼ばれる分野が発展してきました。もともとスクリプト言語は、システムをプログラムできるようにするための言語として登場しました。例えば「チャットスクリプト」は、モデムを経由してネット接続する場合に、先方の対応(プロンプトなど)に応じて適切な出力を行いログインを行うもので、スクリプトの典型です。また、コマンドラインでの繰り返しを自動化するための「シェルスクリプト」などが、初期のスクリプト言語の対象でした。
当初のスクリプト言語は、機能の少ない簡易言語という雰囲気でしたが、Perlが登場したことで、一般的なプログラミングにも使える機能を備え、プログラミング言語の新しい領域が切り開かれました。多くのスクリプト言語はテキスト処理能力に優れているのですが、この特質はテキスト主体のプロトコルであるHTTPとも相性が良好です。Perl、PHP、Pythonなどのスクリプト言語は「P言語*」と呼ばれ、Webアプリケーション開発言語として注目されています。
一風変わっているのがJavaScriptです。1995年にリリースされたNetscapeブラウザに組み込まれていたこの言語は、もともとLiveScriptという名前で開発されていましたが、Javaの人気にあやかるべくJavaScriptと改名されました。やや文法が似ているものの、名前が連想させるほどにはJavaとの直接の関係はありません。Ajaxの流行もあり、「世界で一番ユーザーの多い言語」*として定着しつつあります。
だから、自分の愛着のある「あの言語」が載っていないからといって文句を言わないで欲しい。わたし自身、泣く泣く割愛した言語も多い。
コンピュータ史上かつて存在した言語の総数は、一説には数千とも数万とも言われている。オモチャのようなプログラミング言語まで含めると、正確な数は誰にも分からないに違いない。
「オープンソースマガジン」の読者は、COBOLに触れる機会はあまりないかもしれない。しかし、例えばわたしの会社(ネットワーク応用通信研究所)では、Linux、PostgreSQLの上にオープンソースCOBOLコンパイラ(OpenCOBOL)とオフコン風トランザクションモニタ(Montsuqi)を開発し、医療系事務システムを開発している。分野によってはまだまだ現役である。
Rubyは頭文字が「P」で始まらないので仲間はずれである、と思っていたが、YAPC::Asia Tokyo 2006で「Rubyはロングテールの付いたP言語である」という発言があった。これで晴れてP言語に仲間入りできた……ような気がする。
何しろ、Webブラウザを使う人のほぼすべてが、JavaScriptインタープリタ組み込みのブラウザを使っているわけだから。今や携帯電話にもJavaScriptが載っている。
Copyright © ITmedia, Inc. All Rights Reserved.