web-dev-qa-db-ja.com

一般的なLISP実装-スレッド化とマルチプラットフォーム?

私は主に「マインドジム」の趣味としてCommon LISPを学んでいますが、「実際の生活」でも使用できる一連のスキルを習得したいと思います。モジュールとパッケージの管理、デプロイメントなど、好きかどうかに関わらず、実稼働でも使用できるCL実装について学びたいと思います。だから私の質問は:

これらのような属性を持つ「実稼働」で最も使用可能なCL実装は何ですか?:

  • それはmulti-platform-Linuxサーバー、Windows開発マシン、MacOSで同じ言語の実装と言語を使用できる必要があります(最もクールなのはAndroid用にもコンパイルできることです) 、Windows Phone、およびRTそして多分iOS)
  • 並行性並列性マルチスレッディングの機能があり、これらの機能はクロスプラットフォーム、それ以外の場合はカウントされません
  • 簡単です他の言語とのインターフェース-Cライブラリでの作業は必須ですが、その他の簡単なCL-Pythonインターフェースのようなものはいいでしょう

RedditディッチングCL(CMUCL-ところで、SBCLがCMUCLのフォークだと知っていますが、どうやって比較するのでしょうか?)が深刻な議論の1つであることがわかっているため、マルチプラットフォームの部分を主張します開発サーバー環境にsshされることなく開発するMac(引用: "私のMacでは、スレッド化されたLISP実装の選択肢はOpenMCLに制限されていました。FreeBSDではCMUCLです。")。ええ、開発用VMを使用できますが、それでも...


注#1:私は[〜#〜] clisp [〜#〜]に落ち着く寸前でしたが、わかりませんその同時実行機能について、そして私はこれにも遭遇しました:「それはあなたのコードを強制的にGPLとしてリリースすることを強制します」法律に堪能ではない...)

注#2:私は本当にJVMが好きではないので、その上でLISPを使用するとしたら、それはClojureだけで何もないので、 JVM Lispsの提案、:)

6
NeuronQ

免責事項:私はSBCLの(マイナー)寄稿者ですが、最初はユーザーでした。 CLISP、CMUCL、およびSBCLのハッピーユーザーとして、SBCLが私の「実行」CL実装である理由は次のとおりです。

Steel Bank Common LISP は、あなたが言及する基準を満たしています。

  • MacOS、Windows、およびLinuxで実行されます( その他のプラットフォーム のうち)

  • これらすべてのプラットフォームでのスレッド化と同時実行制御のための同一のAPIを提供します

  • Cとのインターフェースを可能にする包括的な外部関数インターフェースを備えています

さらに、SBCLは一般に優れたLISP環境です。

  • それはネイティブLISPです-JVMもバイトコードもありません

  • [〜#〜] slime [〜#〜] および Quicklisp によって十分にサポートされています

  • それは成熟した完全な実装です

  • それは積極的に開発されており、バグに遭遇したときは良いターンアラウンドを見てきました

6
jimwise