Island Life

< 仕事でLispを使うこと(2) | マップリテラル >

2010/02/16

「Xで使うべき」だからといって「X以外では使うべきじゃない」ってわけじゃない。けれど…

From バカが征く:

http://blog.practical-scheme.net/shiro/20100215-when-you-should-use-lisp-2

でも、そうだとすると、自分には関係のない世界に なっちゃいますね (笑)。『極めて複雑な処理が必要で』 っていうのは、自分の能力的にないでしょうから。

いや、確かに対比のために「他の言語でも困らないような分野で わざわざLispを使うのはハンディがあるよ」と書いたけれど、 強調したかったのは「これこれこういう分野ならLispの力を活かせるよ」って方。 それ以外の分野であっても周囲の条件次第ではハンディにならない 場合はあるだろう。偶然チームにLisperばかり集まってたとか :-)

それはそれとして、逆に、1つの言語ですべてを済ます ことをあきらめたら、選択肢がかなり広がるともいえるん じゃないでしょうか。Gaucheにしても、Rubyにしても、 C言語との親和性を重視してると思いますし。Clojureに しても、Javaをスッ飛ばしてJNIで書くこともできるん じゃないでしょうか。

もちろん全ては可能であり、そこにはトレードオフがあるだけなんだけど。

複数言語のギャップを越えるオーバヘッドがどれくらいかは ケースバイケースで、それこそ別コンポーネントと言えるくらい 疎結合にできる場合なら問題無いだろうけど、 意味的に単一コンポーネントとして切り離せないんだけど言語を 混ぜて使わなくちゃならない、って場合は、オーバヘッドは結構大きいと思う (例えばバイナリの構造体を共有しなくちゃならないとしたら? 定義を二ヶ所に 書いておきたくはない。ひとつの定義から各言語のソースを生成するのは 定番だけど、それによって確かにビルド工程やデバッグは複雑化する。)

言語を混ぜて使うことをサポートするツールはたくさんあるし、 そういう環境に慣れてればどうってことないと思うかもしれない。 言語に限らず、OSやハードウェアだって、今あるものの上で済ませられる 話はたくさんある。たぶん仕事として喰って行くのに充分なくらい。

でも、時には手を止めて、今見えている地平線の向こうに想いを馳せるのも悪くない。 地平線というのは、今、手にしている道具や手法、そして自分の能力で、 コスト的に限界に達するところ。けれども道具や手法を工夫したら、 能力は変わらなくても、その向こうが見えるかもしれない。 (過去50年のコンピュータエンジニアリングの進化を思えば、 道具や手法が能力よりもはるかに生産性に寄与しているのは確かだろう。 今仕事で組んでるそのコード、全部アセンブラで書けって言われて書ける?)

新しい言語の話やハードの噂がついつい気になっちゃうのって、 今は手がとどかない、地平線の向こうを見てみたいっていう気持ちなんじゃないかな。

Tags: Programming, Lisp

Post a comment

Name: