2010/03/01
言語にこだわる場面
結局のところ、どこが (開発/検証/実行の) 律速になるかの違い、ってだけなのかもなあ。 ライブラリの少なさとか 実行環境のmaturityやavailabilityに縛られることもあれば、 言語が足を引っ張ることもある。どれが一番の障害かは応用次第、と。
Where programming language matters @ val it : α → α = fun
俺は「Lispの仕事をしたい」とか「Haskellの仕事をしたい」とかいったような、プログラミング言語で仕事をえらんだことはないですね。興味のあるところはプログラミングによって何をするかであり、それはたとえばIMEを作るにはどういう要素技術が必要でどういうことをする必要があるかとか、そういうことになるかと思ってる。結果的にLispが最善の環境になったらLispはやるだろうし、それだけのことでは、というのが正直なところ。つまりまとめてしまうと「first priorityの前提が違いますね」というだけの話なわけですが、みんなそこまでプログラミング言語が第一なのかなぁ。それは「機会を狭めている」し「もったいない」とやっぱり思ってしまうけど。
結局根底にあるのは好みなのかもしれないのだけれど、 なぜ私が「Lispの仕事をしたい」と思うかというと、 それが経験的に「言語に足を引っ張られることが一番少ない」からなんだな。
何が嫌かって、仕事を助けるべき道具が仕事の邪魔になるのが一番イラつく。 Lispに対しても不満はたくさんあるんだけど、 it sucks leastだから選んでるというだけ。 まあ、suckする箇所を自分で何とかできるから、という方が近いかもしれないが。
ただこれも、何が自分にとって邪魔かというところに主観が入ってきちゃうし、 この基準だけを考慮したらマイ言語を作るのが一番って結論になっちゃう。 現実的な選択に当たっては、マイ言語仕様、処理系実装、ライブラリ開発に 割けるリソースと、アプリそのものの開発に割けるリソースのバランスを 考えてどっかで妥協せざるを得ないわけで、そのバランスを算出する 重み付けは応用次第ってことになるんだろう。
Rich Hickeyは「GCだのOSインタフェースだのに自分のリソースを 割くよりは、言語機能とアプリケーションに割く方がいい」と重み付けして JVMを選んだんだろうし。
オブジェクトのメモリ上のレイアウトとか、メモリ管理のタイミングまで 制御する必要があるアプリ、って用途なら、重み付けも変わってくるわけだし。
その意味では、自分は「Lispが好き」っていうよりも、 そういういくつものレイヤにまたがる話が好きなんだろうな。 だからそれに合わせた言語を選んでると。
それはそれとして、これはすでにバズってたんだけど、JVMに対する感じ方にも違いがあるなと思いました。JVMはそれなりのプラットフォームとして確立した感じがある。ほかのVMと比べて普及もしているし、いろんなノウハウも蓄積しているしね。まー10年後とか20年後はしらんけど、しばらくこの情勢は続くんじゃないだろうか。
JVMに関しては、CPUのレイヤにおいて結局x86 ISAが生き残ったことに対するのと 同じようなことになるのかなあと思っている。CPUよりうんと上のレイヤに 関心がある人にとっては、CPUのISAなんて速くて安くてどこでも使えるなら 何だって良いってことになるのだろうと。
ただまあ、歴史を見てみると、レイヤの切り分けというのは一度分けちゃったら それまでよ、ということにはならなくて、かつて固定化して下層に埋め込んだ アイディアが、状況の変化によってアプリケーションに近い層で再び ソフト的に実現される、みたいに循環することが良くあるから、 ひとつの主流技術の影に埋もれて行った技術もそれなりに大事にしておくと 後でいいことがあるかもしれない。
Tags: Programming, Lisp
Post a comment