2008/02/17

ほげ言語の話

プログラマが使うプログラム言語についてのLisp屋さんからの視点で鋭く分析した文章。

Beating the Averages (和訳)

個人的に、いわゆるプログラマという人種で、わずか数個の言語しか知らない人、特にLisp,SmallTalk,Cの3つの言語の洗礼を受けていない人間は基本的に信用してない。今ならRuby, Java, Python, Perlなんかも入れてもいい。出来れば機械語(アセンブラ)の洗礼も受けていて欲しい(組み込み屋なんで)

理由は真剣にプログラムというものの本質に関して取り組んだことがないと思うからだ。こういった複数の言語を理解していることは、プログラマの本質的な能力に対して大きな要素となりうる。普通に上に挙げた7(8)言語くらいはまあ使えるよ、とかいうレベルであって欲しい。

プログラム言語に関して真剣に取り組まなかった人の作るプログラムは、表面上は動作するのだが、やはり本質的な理解を欠くことが多い。人のタイプがわかるといった方がいいのかもしれない。

良いプログラマは手抜きで怠け者で、それでいて几帳面で勤勉である。本質に関する部分に対してはとても真面目で手間を惜しまない。実現される結果はある意味、手抜きでもいい。いや語弊があるかもしれないので言い直すと、結果のものを良くするために、結果に見える部分以外の所、フレームワークといわれるところであったりミドルウェアといわれる部分であったり、ライブラリという部分であったり、またはもっと下位の部分であったりに力を入れる。その上の部分は自然と付いてくるものである。

良い言語をマスターしている人は、これを自然と行っていく。それは言語の持つ力、もちろんそのライブラリ?にも影響を受ける。特に某M*のものしか知らない人はとても不幸だ。プログラム言語の持つ力はその人のソフトウェアを構成する方法論に強く影響する。複数の言語をちゃんとマスターしている人は、多かれ少なかれ、それらの言語から学び、得たものを使う。その善し悪しは重大である。

まあこの記事でLispの優位性を語ってるマクロであるが、私見ではこれはソフトウェアの真ん中から下の方を支えてくれる仕組みで、アプリケーションをわかりやすくもわかりにくくもしてくれる諸刃の剣である。おそらくちゃんと学んでいない人にとっては理解するのに教科書から始めねばならないかもしれない。

とりあえず、全てのプログラマには一度Lisp, SmallTalkを見て欲しいと思う。その結果実務には選択しないだろうが、理解する前と後ではだいぶ世界が変わるに違いない。(というか、ちゃんと理解するための勉強は、文法やライブラリの使い方の本だけでは無理ですから)