20

Haskell、wxWidgets ( wxHaskell経由)、または GTK ( Gtk2HS経由)で GUI アプリケーションを開発するには、どちらが適していますか?

それぞれの長所と短所は何ですか?ターゲットにしているプラ​​ットフォームによって異なりますか (私は主に OS X で作業していますが、プログラムを Linux と Windows でも動作させたいと考えています)。

4

4 に答える 4

23

[免責事項: 私は wxHaskell のメンテナーです]

どちらも安定しており、かなり完全な GUI バインディングであり、ほとんどのプロジェクトで自信を持って選択できます。どちらもある程度の「高レベル」の Haskell バインディングを持っていますが、どちらの場合も、物事を成し遂げるためにはかなり命令的な「C」スタイルのコーディングに落とし込む必要があります。私の印象では、wxHaskell を使用すると、より高いレベルのバインディングでもう少し時間を費やすことができますが、GTK2HS はあまり行っていません。いずれにしても、両方のライブラリのラッパーの薄い部分に取り組んでいることは間違いありません。そして、全体的なプログラミングの「複雑さ」はどちらの場合も似ていると思います。

したがって、基本的な機能を前提として、違いに集中しましょう。GTK2HS は素晴らしい作品であり、あなたがそれを選んだ場合は幸せになると心から信じています。以下で私が言うことのほとんどは、相違点に対する個人的な見解であり、なぜ私が自分で wxHaskell に取り組み、wxHaskell を使用することを選択したのかです。

GTK2HS にはより大きなチームが取り組んでおり、より定期的にリリースされています。wxHaskell はそれほど頻繁には更新されませんが、コア チームは活発に活動しており、定期的にバグ修正が行われています。

wxHaskell は、サポートされているすべてのプラットフォームですぐに使用できる真のネイティブ アプリケーションの外観を提供します。もちろん、GTK2HS は Linux でネイティブであり、Windows でかなり優れたネイティブ テーマを備えています (つまり、衒学者以外のすべてを満たすのに十分です...)。OSX の「ネイティブ」GTK ライブラリは開発中であると思いますが、比較的未熟であると考えられています。これが安定したら、GTK2HS は同じ「部分的にネイティブな」ルック アンド フィールを簡単に活用できるはずです (例: GTK OSX スクリーンショット)。

Linux を使用していない場合は、おそらく wxHaskell をビルドする方が少し簡単です (Linux をホストしている場合は、GTK2HS の方が簡単です)。

ライブラリの依存関係が少ないため、wxHaskell に基づいてアプリケーションを配布する方が少し簡単です (IMHO)。主に Windows では InnoSetup を使用し、OSX では App bundle としてアプリケーションを配布しています。ほんの少しの追加作業で、GTK2HS でも同じことができることは認めます。したがって、これはおそらく wxHaskell を支持する最も弱い議論です。

wxHaskell はクローズド ソース (商用など) の開発に適しているというのが私の個人的な意見です。もちろん、これは果てしなく続く炎上戦争の主題であるため、wxHaskell はクローズド ソース開発を明確に許可するwxWidgets ライセンスの下にあるとだけ述べておきます。GTK2HS は LGPL であるため、弁護士に相談する必要があります。ただし、多くの人や企業が LGPL は商用開発と互換性があると結論付けていることを明確にしておく必要があります。私が働いている会社の弁護士は、私たちのプロジェクトには不適切であると結論付けました.

Linux が私のメインの開発および配信プラットフォームである場合、おそらく GTK2HS を使用すると思います。ただし、そうではありません: 私は主に Windows に、時折 OSX を提供しています。wxHaskell はこれらのプラットフォームにより適していると思いますが、どちらのオプションも 3 つのプラットフォームすべてをサポートしています。

これがあなたの選択に役立つことを願っています。

于 2009-03-02T11:27:19.993 に答える
3

私はかなり不完全な情報を持っていますが、あなたはまだ答えを持っていないので、不完全な情報は何もないよりはましかもしれません.

質問は次のとおりです。ツールキットは C に似た機能の単なるラッパーですか、それとも、ツールキットにより「ネイティブな Haskell に似た」API を提供する追加のレイヤーがありますか? Haskell ワークショップで wxHaskell が最初に発表されたとき、ネイティブ Haskell API の開発は非常に有望に見えましたが、まだ不完全でした。wxHaskell の「Haskellized」API はまだ開発中のようですが、Gtk2Hs プロジェクトではこの問題についてまったく言及されていません。そのため、wxHaskell をお勧めします。

于 2009-02-20T05:07:14.573 に答える
0

個人的には、ある種の Reactive パッケージ/拡張機能を検討します。それは、パラダイムをはるかに近くに置いているようです。グラフィカルなものを命令的に指定する代わりに、宣言的に行うことができます。例 (特定の言語または実装を代表するものではありません):

x, y, z              :: Int
click, buttonclicked :: Bool
x = <X coordinate of mouse>
y = <Y coordinate of mouse>
click = <Whether mouse button is currently being pressed>
z = x + y
buttonclicked = (x == 10 && y == 10 && click)

Buttonclicked と z は、x と y が変更されるたびに自動的に更新されます。

次に、次のようなロジックをどこかに置くことができます。

if buttonclicked then <do something> else <do something else>

ただし、これはすべて非常にあいまいです。いくつかの実際のリアクティブ インターフェイスを調べてみてください

于 2012-02-03T01:04:29.400 に答える