Common LISPでの開発の開始には差し迫った問題があるようです。実装の選択です。 CLの実装を検討する場合、何を考慮に入れる必要がありますか。
ANSI規格に準拠する必要がありますか? SLIMEでサポートする必要がありますか?特定の実装には、適切なライブラリ、ドキュメントなどが不足していますか?
特定のニーズ、および特定の実装の強みと弱みによって異なります。そうは言っても、さまざまな実装について考えるときに最初に頭に浮かぶのは次のとおりです。
SBCLは非常に高速で、数値処理に優れています。したがって、大量の数値計算に依存している場合は、それが適切な実装になる可能性があります。また、それはまともな型推論を持っています(LISP実装の場合)。
CLISPは、比較的小さなバイトコンパイルの実装であり、スクリプト作成に役立つ場合があります。
数年前、CCLを試してみましたが、エラーメッセージとスタックトレースを他の実装のものよりも優先し、コンパイル時間が比較的短かったためです。私にとって、インタラクティブな使いやすさは非常に優先度の高いものです。その速度が必要な場合でも、展開されたプログラムをSBCLに切り替える可能性があります。 (ただし、必要はありません。)また、商用サポートのオプションもあります。
JVMにデプロイする場合は、ABCLがあります。
組み込み用途の場合、ECL。
Allegroには、AllegroGraph、AllegroStore、使いやすいビジュアルGUIビルダーなどが用意されていますが、誰もがライセンス条項を気に入っているわけではありません。
LispWorksは、ニースのクロスプラットフォームGUIツールキットとAllegroよりも小規模なチームや単一のプログラマーに適したライセンス条件を備えたエンドユーザーアプリケーションプログラミングに非常に適しているようです。 (少なくともそれが私が好むものです。)
もちろん、これらは単なる幅広いカテゴリと印象です。私はSBCL、CCL、CLISPをさらに詳しく検討することをお勧めします。これらは、IMHOが最も使用され、最もサポートされているオープンソース実装であるため、それらの1つを選択することです。つまり、ABCLまたはECLが提供するものとニーズが一致しない限りです。
ASNI規格に準拠する必要がありますか?
そうでなければ、CL実装ではありません。 (もちろん、実際には多少の逸脱があるかもしれませんが、少なくとも適合が目標であるべきです。)
SLIMEでサポートする必要がありますか?
もちろん– SLIMEを使用している場合。 (私の意見では、これは現時点で利用できる最高のLISP環境ですが、それぞれ独自のものです。)
特定の実装には、適切なライブラリ、ドキュメントなどが不足していますか?
少なくともSBCL、CCL、Allegro、およびLispWorksは、一般的に使用されるほとんどのライブラリで十分にサポートされているはずです。 CLISPにはかなりいいライブラリコレクション自体が付属しており、ほとんどがサポートされているはずです。
Dan Weinreb (残念ながら彼は昨年亡くなりました)が概要を書きました:
CLの実装には多くの違いがあります。 1つの実装でLISPシステムのユーザーのさまざまなニーズ(速度、サイズ、ライセンス、価格、互換性、オペレーティングシステムのサポートなど)をすべてカバーすることはできません。利用可能な実装の1つまたは複数を使用して、特定の哲学に従う局所最適を見つける必要があります。
無料、無料、Cベース(広く移植されている): [〜#〜] ecl [〜#〜] 、 [〜#〜] clisp [〜#〜]
無料、無料、JVMベース: [〜#〜] abcl [〜#〜]
無料、無料、広範なネイティブ実装: [〜#〜] sbcl [〜#〜] 、 [〜#〜] ccl [〜#〜] 、- [〜#〜] cmucl [〜#〜]
独自仕様、商用、非常に広範なネイティブ実装、GUIベースのアプリの優れたサポート: Allegro CL 、 LispWorks
oS /プラットフォーム別: