プログラミングの本質ってやつ

id:masugataさんのところに面白いのが載ってたのでちょっとひとつ。


ならば,あらゆる問題領域で最強な汎用プログラミング言語などという概念はナンセンスなものとなる.問題の本質は,プログラミング言語には,表現力と処理効率が両方求められるところにある.

重要なのは仕様とプログラムの間の関係を明確にし,いかにして高い表現力の仕様記述から,高速なコードを得るための体系を作るか,ということなのに.現在のプログラミング言語は,最適化ルーチンが全て言語処理系の中にハードコードされ,単なるブラックボックスとなってしまっている.また,いくら書きやすく読みやすくても,正当性も理論的に検証できず,ちょっとシステムが発展するとすぐに遅くて使い物にならなくなり,後から最適化することも自由にできないような言語は無価値である (1 行プログラムやゴルフ用途には良いかもしれない.ある意味では R なんとかとか P ナンチャラは,ゴルフに最適化された仕様記述言語と言える).

プログラミング言語の本質とは何ぞやって話しなわけだけど、どうも現実が見えていないんじゃないかと思う。
確かに、プログラミング言語の目指すところは、

プログラミング言語とか言語処理系とかいう言語設計者や実装者の決め打ち設計によって硬直化した世界で宗教戦争しているのではなく,もう一歩進んで,早く仕様記述と (完全に仕様に特化した正当かつ十分に効率的な)プログラム合成の世界にパラダイムシフトして欲しいものだと思う.

なんだけど、それはある程度言語処理系とかを知っている人間なら皆が夢見る理想世界であって、研究者たちは切磋琢磨しつつそこを目指しているわけです。ずーっとまえから。

でも、一方でRubyやらPHPやらが生まれてきた。生まれてくるのには理由がある。(何の価値も見出せないものを何年も掛けて作り上げるような酔狂なプログラマはそうはいないでしょう。)その理由を見みれていない気がするわけです。

元記事でも参照している次の記事に書いてあることが、まさにその生まれてきた理由を示唆していると思います。


業務系のシステムを作りたい人には申し訳有りませんが、世界の進歩のスピードは言語の成長のスピードを超えています。バグのない、安定したプログラムを作りたければ、熟練したプログラマに C で書かせるのが最も良い選択肢でしょう。バグがあるかもしれないけど、とりあえずできればいいや、ナンチャッテ、次のリリースで直すから許してチョという代物は軽量言語で書くのを僕はお勧めします。

最後になりましたが、理想を語れば「仕様書」をコンパイルしたら最適化されたICの設計図が出来上がるのがいいです。もっと言えば、ヒアリングをして仕様書を出力するロボットがいたらいいかな。そしたら、仕事しなくて済むやっぱり、仕事も楽しみもなくなるから却下。