2010/02/14

Lispはなんとなくすごそうというイメージがあるけど実際にはそれほどでもない

Lispはなんとなくすごそうというイメージがあるけど、実際にはそれほどでもない。90年代位まではGCがあるというだけで、生産性X倍といえたのかもしれないが、いまは良い他の言語がたくさんあって、言語の日常的な使用例で差が特にあるとは思えない。

現代のプログラミングでは充実したライブラリの存在がますます重要になってきている。その点マイナー言語は苦労することが多くて、PythonやJavaでさっさと書けることにすごく時間がかかったりする。プログラミング言語はコンピュータで実行するものであるのと同時に、ほかのプログラマに読んでもらうための文字通りの言語だ。自分でいろいろ作るのも楽しいけど、仕事でどっちを使うかというとみんなが読み書きできて早く終わる方がいい。

プログラマの費やす労力のうちプログラミング言語そのものにかかっているのは一部にすぎない。プログラミング言語は一番目立つ位置にある――字面そのもの――からつい議論したくなる。しかしそのほかのこと、たとえばアルゴリズムやデータの永続化、バックエンドやフロントエンドとの分割、設定、セキュリティ、分散処理の方法、開発ツール、ビルドシステム、テスト、開発手法などもすごく重要で、言語はこだわりすぎている傾向があると思うのだ。

Lispで仕事をしたいというのはいいけど、それが極端になってLispでしか仕事をしたくないとかJavaは書きたくないとかいうと、なんかもったいないなと思う。エンジニアリングとは役にあってなんぼ。ある技術を覚えることでキャリアの選択肢を狭めることになったら本末転倒。いろいろ駆使してなんでもやりますよ、という気楽な姿勢のほうがエンジニアとしてはよいと思う。

(一応書いておくとSchemeは僕のお気に入りの言語で相当量のコードを書いたし、Lisp方言でいうとClojureにはかなり期待している。ClojureはJavaのライブラリがそのまま使い放題で、実行環境もかなり普遍的なのがよい。ただそれでも、Clojureを強力にサポートする何か、たとえばJavaScriptにとってのWebブラウザとかActionScriptにとってのFlashみたいなのがないと、みんなが使うようにならなさそうだなと思う。それが何かというと難しいけど、たとえば、ブラウザで動くよくできたウェブアプリのIDEがあって、Clojureでかくと1クリックでGoogle App Engineで走って、GWTを使ったバリバリのAjaxアプリが5分で動くとかだったら、Lispとか関係なしに試してみたい人はわりといると思う。そゆこと。)