言語は進化する?

id:yaneurao:20050210
言語は進化する、と思う。そして進歩する、とも思う。今時アセンブラでプログラムを組むやつはほとんどいない。必要ならば仕方がないが、たいていの場合はCを使うだろう。そして、Cでなくても解決できるのであれば、さらに高級な言語を使うだろう。
リンク先では以下のように言われている。すなわち

一から言語を設計するなら、「もう、いまどき必要ないよね」って発想で使わなくなった機能を切り捨てれば、ある程度エレガントな言語が出来る。JavaとかC#とかがそうだ。それは確かに進歩はしているのだけど、それは上に書いた意味での“進化”ではないと思う。状況が少し変わっただけでJavaC#が何の役にも立たないことはいまだにあるからだ。

本当だろうか?いや、ある意味本当ではあると思う。そこに疑問を呈しているわけではない。例えば機能の削減と言うのはわかりやすくするのには良いかもしれないが、その分だけ不便になるだろう。何の役にも立たなくなってしまうことだってあるだろう。
けれど、それはやはり進化であり進歩であると思う。単一言語と言う発想をしてしまうから進化とか進歩とかしていないということになるのではないだろうか。
Lispユーザーは、未だにLispが大好きだ。そして、Lispだけで良いとさえ考えている。確かに、良い点はあるだろう。だが、アセンブラFortranLispしかなかった時代と、今のように無数の言語の森が存在している現在。これを比べれば進化であって、また進歩していると言うことは容易にわかるだろう。
進化と言うのは単一のものにおいて起こることではないと思う。同時に発生し、そして全体として進歩につながる。もちろん用語としては不適切なのだろうとは思うが。
さらに思う。では、言語の数が増えればそれだけで進化もしくは進歩となるのだろうか、と。それは違う、と主張したい。プログラム言語の進化、そして進歩とはすなわち、現実的な選択可能性が広がっているということが必要だろう、と思う。この意味で言うならば、20年前からCしか使わない人間にとっては言語は進化していない。進歩していない。
また、言語自体は存在していても、使うことが難しい言語がある。例えばLinux上で開発している際にC#を使おう、としても現状ではおそらく難しいだろう。この場合、この開発においては未だ言語は進化したとはいえない。そう思う。