比較

そういえば特に断っていなかったが、この日記で「言語」と言えば「プログラミング言語」のことだ。日本語や英語は「自然言語」と呼ぶ。さて。言語の比較というと論点は速度と書きやすさに集約されがちだ。
速度は言語仕様によって制限されているものの、実装がどれだけ高速化されているかの方が重要だ。例えば、C++であってもiccとCINTでは雲泥の差がある。一般的には、言語に固有な速度の理論値を求めることが難しいので、その言語の実装で最高速のものの速度をその言語の速度とみなすことが多い。*1
書きやすさも言語によって制限されるが、開発環境がどれだけ充実しているかの方が重要だ。例えば、javaやC、C++ならインテリセンスの充実したIDEを使った場合の書きやすさで判断するべきだ。決して書き上がったコードのサイズで測ってはならない。
また、言語の有用性は上の二点以外だけでなくライブラリの質と量によっても決まる。標準添付などで容易に手に入る有用なライブラリがあることは言語を選択する理由として十分だ*2。商用やGPLなどの制限付きライブラリを使えるかどうかで選択が変わることもあるだろう。
以上に挙げたような実際的な面も重要だが、オブジェクト指向であったり関数型であったりといったパラダイム面の特徴も重要だ。パラダイムが一貫していると、少なくとも既に習得した者にとっては、書きやすく読みやすい言語となる。構文糖衣で解決しようとすると書きやすく読みにくくなりがちなのとは対照的だ。先に「少なくとも既に習得した者にとっては」と書いたが、パラダイムが独特だと学習コストが高くなるという大きな問題がある。
結局のところ、パラダイムが同じならば言語の比較は仕様よりも実装の影響が大である。逆にパラダイムが異なればパラダイムの比較になってしまい、言語そのものの比較が難しい。