Common Lisp GUIは別の神話です

Common Lispにはグラフィックスのサポートがないか、不十分であるという一般的な考えがあります。 これは、Lispが階乗専用言語であるというシリーズのもう1つの神話です。 実際、他のほとんどの汎用アプリケーション(たとえば、Web、データ転送形式、データベースとの対話など)の場合と同様に、Lisp環境には、さまざまな抽象化レベルを持つすべての主要プラットフォーム用のライブラリとツールキットがすべて揃っています。



Linux / Unix



Common Lisp for UnixのグラフィックスのベースライブラリはCLXです。 これはxlibの類似物です。 Xプロトコルを介して直接通信する低レベルクライアント。



さらに、さまざまな成熟度レベルの主要なグラフィックフレームワークのラッパーがあります:LTK、CL-GTK2、CommonQt、CL-CAIRO2。 個人的には、LTKに対処しなければならず、LTKを扱うのは簡単です。 それを使用するアプリケーションの良い例は、シンプルで便利なLispエディター/ REPL ABLEです。

ABLEスクリーンショット





前のセクションのクロスプラットフォームフレームワークを使用する機能に加えて、 LispWorks CAPIもあり、これについては肯定的なレビューしかありません。 唯一の機能は、Windows用のすべての言語のほとんどのプロフェッショナル開発環境と同様に、LispWorksは非常に高価(約1200ドル)であり、CAPIはプロフェッショナルバージョンでのみ利用できることです。 (ただし、試用版で試すことができます)。



もちろん、クロスプラットフォームのCL-OPENGLもあります。



MacOS x



MacOS X用のUnixライブラリに加えて、Clozure CLには優れたCocoaバインダーがあります。



特定のLispソリューション



McCLIMライブラリは、グラフィックプリミティブで動作するために高度に開発されたプロトコルを定義するLisp Interface Manager仕様を実装しています。 仕様はプラットフォームに依存していませんが、現在、ライブラリ自体はCLXに基づいており、Unix環境にのみ適しているという結果をもたらしています。 これが制限ではない場合、グラフィックスと強く結びついたものを作成する場合、ゲーム、グラフィックス、CADエディター、または新しいEmacs Climacsが必要です。

クライマックス



Lisp環境に由来するGUIへの元のアプローチはCellsプロジェクトです。これは、相互依存する「セル」のスプレッドシートパラダイムをグラフィカルインターフェイスに転送します。 CELLS-GTK、CELLTK、CELLOなど、1つまたは別のバックエンドを備えた複数のLisp実装があり、他の言語用のポートもあります。



結論



一般に、すべての好みと要求にオプションがあります。 どこから始めますか? シンプルなGUIの場合、 LTKまたはCL-GTK2を選択します。 どちらもクロスプラットフォームです。 最初の理由は、最大限のシンプルさ、さらには原始性です。 したがって、プリミティブなアプリケーションに適しています。 第二-それは、現代のオブジェクト指向グラフィックライブラリの優れたラッパーであり、積極的に開発されており、ロシアの著者でも:)



PS。 もちろん、さらにいくつかの特定のグラフィックライブラリがClikiにあります。



All Articles