web-dev-qa-db-ja.com

CLISP、ECL、およびSBCLの主な違いは何ですか?

ACT-Rでシミュレーションを実行したいので、Common LISPの実装が必要になります。 3つのCommon LISP実装が利用可能です:(1) CLISP[1](2) ECL[1] 、および(3) SBCL[1] 。あなたがリンクから集めたかもしれないので、私はウィキペディアでそれらの3つすべてについて少し読んだ。しかし、経験豊富なユーザーの意見をお願いします。より具体的に私が知りたいのは:

(i) 3つの実装の主な違いは何ですか(例:何が得意ですか?特定の目的にのみ使用されているため、特定のタスクに適していない可能性がありますか?)?

(ii)ACT-Rを使用するという事実に基づいた、または一般的な理由に基づいた明白な選択肢はありますか?


これは私がチェックした主観的な質問として解釈される可能性があるので ここでどのトピックについて質問できますか および どのタイプの質問を避けるべきですか? そして正しく読んだ場合はそうではありません禁じられた果物としての資格。

20
lord.garbage

適度なサイズのアプリケーションを作成し、SBCL、CCL、ECL、CLISP、ABCL、およびLispWorksで実行しました。 私のアプリケーションの場合、SBCLははるかに高速で、かなり優れたデバッガーを備えています。一部の警告については少し厳格です-やや厳格な方法でコーディングするか、1つまたは複数の警告をオフにします。

私はSylwesterに同意します。可能であれば、標準に書き込んでください。そうすれば、任意の実装でコードを実行できます。あなたはあなたのプロジェクトに最適なテストを通して理解するでしょう。

SBCLは非常に積極的にコンパイルされるため、デバッガーのスタックトレースが私が望むよりも情報量が少ない場合があります。これはおそらくパラメーターで制御できますが、他の実装の1つで同じコードを再実行するだけです。 ABCLには、たとえば、私が思い出したように、有益なスタックトレースがあります。 (これも非常に低速ですが、実際のCommon LISPとJava相互運用性が必要な場合は、これが唯一のオプションです。)

Common LISPの良い点の1つは、高品質の実装がいくつあるかであり、そのほとんどは無料です。

非公式な使用-例Common LISP、CCL、またはCLISPを学ぶことは、SBCLよりも良い選択かもしれません。

ECLを使用してCにコンパイルしようとしたことはありません。一部のアプリケーションでは、速度がSBCLを上回る可能性があります。何も思いつきません。

CLISPとLispWorksは、任意に長い引数リストを処理しません(ここ数年で修正されていない限り、私はそれを疑っています)。これは私のアプリケーションの問題であることが判明しましたが、ほとんどのコードでは問題にはなりません。

ACT-Rはカーネギーメロン大学から出てきませんか?著者は何を使用していますか?私の推測では、CMUCLまたはSBCLであり、CMUCLから派生しています。 (私はCMUCLを少しだけ試しました。そのインタープリターは非常に遅いですが、コンパイルされたコードは非常に速いと思います。しかし、ほとんどの人はCMUCLよりもSBCLを選択すると思います。)

(この質問はProgrammers.SEに属する可能性があります。)

15
Mars

一般に、SBCLはオープンソースのLispのデフォルトの選択肢です。これは堅固で、十分にサポートされており、高速なコードを生成し、標準の要件(同時実行プリミティブ、プロファイリングなど)を超える多くの機能を提供します。同様のプロパティを持つ別の実装はCCLです。

CLISPは、エンジニアでない場合、またはエンジニア以外の人にLISPをすばやく表示したい場合に適しています。これはかなり基本的な実装ですが、実行が速く、ユーザーフレンドリーです。 LISP計算機:)

ECLの主なセールスポイントは、組み込み可能であることです。つまり、Webサーバーなどの一部のCアプリケーション内で動作させるのはかなり簡単です。これは、境界でソリューションを探求したいオタクに適しています。 LISPと外の世界の。このようなユースケースに興味がない場合は、特に現時点では積極的にサポートされていないため、試してみることはお勧めしません。

7

それらの名前、バグ、および非標準の追加(それらを使用するとロックされます)

私はCLISPをREPLとして使用し、開発中にテストし、通常は本番用にSBCLを使用します。ECLは使用したことがありません。

複数の実装でコードをテストすることをお勧めします。

5
Sylwester