どうしてこんなにたくさんのプログラミング言語があるの?
プログラミングの歴史を振り返ると、ともかくたくさんのプログラミング言語が作られては消えていったことが分かります。コンピュータを開発するのはとても大変ですが、プログラミング言語を作るのはお金も人手もそれほどかからないからでしょう。
未完のバベルの塔
1969年にジーン・サメット女史の書いたプログラミング言語に関する785ページもある本は、その当時世界にあった名の知れたプログラミング言語を体系的に分類した本です。そのカバーに、プログラミング言語の名前が書かれたたくさんの石が積み上げられた未完のバベルの塔の絵が書いてありました。その中に出てくる言語で生き残っているのはもうほとんどありません。
大きな本屋のプログラミング関係のコーナーに行くと、とても付き合いきれない種類のプログラミング言語の並んでいます。どうしてこんなにたくさんのプログラミング言語があるのでしょうか?
これを語ろうとするとそれだけで分厚い本になってしまいます。実は多くの言語は特定のアプリケーション分野にチューニングした「ドメイン固有言語(Domain Specific Language:DSL)」です。
これに対して、特定分野を特に限定しないものを、汎用プログラミング言語と言います。DSLで書けるものは、プログラムが大きくなりますが、汎用言語でも書けます。つまり、世の中に出回っているすべてのプログラミング言語はチューリング完全という意味で基本能力は同じです。
その差は、人間にとっての書きやすさ、読みやすさ、あるいは速度性能、メモリ消費性能(少ないメモリ消費のほうが性能が高い)にあります。ただ、性能は数値で測れますが、書きやすさとか読みやすさといった人間要因は数値で測れません。
実は、これが言語の多様性を生んでいます。しかも、速度性能を犠牲にしても人間にやさしい言語をつくるという考えもあります。子ども向けのビジュアルな言語はその典型です。
・・・・
私の母国語はアセンブラ語
私個人の話をすると、母国語はアセンブラ語でした。そして、Lispという言語にハマってしまい、自分で何個もLisp 方言を設計・実装してきました。
そんなこともあり、自分でプログラムを書くときは大昔に自分で設計・実装したLisp以外では書きません。このLisp はTAOという名前で、仲間たちが開発した専用マシンELISで動いていたものです。
1章で述べた仕組みを使って、私の持っているPCの中で、ELISというマシンが立派に動いています。つまり、大昔のマシンごと現代のPCの中にソフトウェアとして元同僚の天海良治君が「埋め込んでしまった」のです。
しかも、30年前の専用マシンの100倍以上の速度で動いています。果報は寝て待て、とはこのことですね。世の中にはこんな変なことをする人もいるということをご承知おきください。