使用するCommon Lisp実装はどれですか?[閉まっている]


45

Common Lispでの開発を開始することには、実装の選択という差し迫った問題があるようです。CLの実装を検討するとき、何を考慮に入れる必要がありますか?

ANSI規格に準拠する必要がありますか?SLIMEでサポートされるべきですか?特定の実装には適切なライブラリ、ドキュメントなどが欠けていますか?


興味深い質問:私は今、「実用的なCommon Lisp」を読んでおり、CLISPで例を試していますが、どの実装も標準に準拠していると思います。CommonLispは私にとって非常に成熟した安定した言語のようです。
ジョルジオ

回答:


25

特定のニーズと、特定の実装の長所と短所に依存します。そうは言っても、さまざまな実装について考えるときに最初に思い浮かぶのは次のとおりです。

SBCLは非常に高速で、数値計算に適しています。したがって、重い数値計算に依存している場合、それが適切な実装になる可能性があります。また、適切な型推論があります(Lisp実装の場合)。

CLISPは、スクリプト作成に興味深い可能性のある、比較的小さなバイトコンパイルの実装です。

数年前、私はCCLを試してみましたが、そのエラーメッセージとスタックトレースを他の実装のものよりも優先し、コンパイル時間も比較的短かったためです。私にとって、インタラクティブな使いやすさは非常に優先度の高いものです。その速度が必要な場合、デプロイされたプログラムのSBCLに切り替えることがあります。(ただし、必要はありません。)また、商用サポートのオプションがあります。

JVMにデプロイする場合は、ABCLがあります。

組み込み使用の場合、ECL。

Allegroには、使いやすいビジュアルGUIビルダーであるAllegroGraph、AllegroStoreなどがありますが、すべての人がライセンス条項を気に入っているわけではありません。

LispWorksは、Allegroよりも小規模なチームや単一のプログラマーに適したクロスプラットフォームGUIツールキットとライセンス条項を備えたエンドユーザーアプリケーションプログラミングに非常に適しているようです。(少なくとも、私が好むものです。)

もちろん、これらは幅広いカテゴリとインプレッションにすぎません。SBHO、CCL、CLISPを詳しく見てみることをお勧めします。これらは最もよく使用され、最もサポートされているオープンソースの実装であり、そのうちの1つを選択するからです。つまり、ABCLまたはECLが提供する必要があるものとニーズが一致しない限りです。

ASNI標準に準拠する必要がありますか?

実装されていなければ、CL実装ではありません。(もちろん、実際には多少の逸脱があるかもしれませんが、少なくとも目標は適合でなければなりません。)

SLIMEでサポートされるべきですか?

確かに– SLIMEを使用する場合。(私の意見では、現時点で利用可能な最高のLisp環境ですが、それぞれが独自の環境です。)

特定の実装には適切なライブラリ、ドキュメントなどが欠けていますか?

少なくともSBCL、CCL、Allegro、およびLispWorksは、一般的に使用されるほとんどのライブラリで十分にサポートされるはずです。CLISPには非常に優れたライブラリコレクション自体が付属しており、ほとんどの場合もサポートする必要があります。


22

Dan Weinreb(残念ながら彼は昨年亡くなりました)は概要を書きました:

Lisp調査

CLの実装には多くの違いがあります。Lispシステムのユーザーのさまざまなニーズ(速度、サイズ、ライセンス、価格、互換性、オペレーティングシステムのサポートなど)をすべて1つの実装でカバーすることはできません。特定の哲学に従う1つ以上の利用可能な実装を使用して、ローカル最適を見つける必要があります。

  • 無料、無料、Cベース(したがって広く移植):ECLCLISP

  • 無料、無料、JVMベース:ABCL

  • 無料、無料、大規模なネイティブ実装:SBCLCCLCMUCL

  • プロプライエタリ、商用、非常に広範なネイティブ実装、GUIベースのアプリの優れたサポート:Allegro CLLispWorks

OS /プラットフォーム別:

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.