私の質問の目的は、炎上戦争を開始することではなく、どのような状況で各言語が「仕事に最適なツール」であるかを判断することです。
私はClojureに関するいくつかの本(Programming Clojure、Practical Clojure、The Joy of Clojure、およびManning Early Access edition of Clojure in Action)を読んだことがあり、それは素晴らしい言語だと思います。私は現在、Common Lispマクロを主に扱っているLet Over Lambdaを読んでおり、それも非常に興味深い言語です。
私はLispのエキスパートではありません(初心者の方が多いです)が、関数型プログラミングと同様に、この言語ファミリーは私を魅了します。
Clojureの利点(および「その他」の欠点):
JVMで実行されます。
JVMは非常に安定した高性能言語環境であり、Sunの「一度書くとどこでも実行できる」という夢を十分に満たしています。Macbook Proでコードを記述し、それを実行可能なJARファイルにコンパイルして、追加のテストをほとんど行わずにLinuxとMicrosoft Windowsで実行できます。
(ホットスポット、その他)JVMは、高品質のガベージコレクションと、非常に高性能なジャストインタイムのコンパイルと最適化をサポートしています。ほんの数年前、Cで高速に実行する必要のあるすべてのものを書いたのですが、今ではJavaで実行することをためらっていません。
標準のシンプルなマルチスレッドモデル。Common Lispには標準のマルチスレッドパッケージがありますか?
、、、およびでこれらすべての括弧の単調さを分解しますが
[]
、Common Lispの専門家はおそらく、リーダーマクロを使用すると、それらをCLに追加できると教えてくれます。{}
#{}
Clojureの欠点:
- JVMで実行されます。
- 末尾再帰や継続はありません。Common Lispは継続をサポートしていますか?Schemeは両方のサポートを必要とすると私は信じています。
その他の利点(特にCommon Lisp)(およびClojureの欠点):
ユーザー定義可能なリーダーマクロ。
他の利点は?
考え?その他の違いは?