GTK +またはGTKMMを学ぶ必要がありますか?
-
22-07-2019 - |
質問
私は約2年前にubuntuを使い始めたC#プログラマーです。 CまたはC ++のいずれかでGUIプログラミングを学びたいです。私はモノがあまり好きではありません。システムでクラッシュする傾向があります。 C ++の基本的な理解があります。私はCで働いたことはありませんが、かっこいいです。どのツールキットを学習/使用すべきですか?それぞれの賛否両論。ありがとう!
解決
C ++は使い慣れているため、RAIIなどのイディオムを使用できるため、GTKmmの方が適している場合があります。残念ながら、GTKmmは少し不完全で、あまり使用されていないGTKの一部が欠落しています。
ただし、GTK +自体は、基本的にC ++にあるものと似ていますが、C関数のみを備えたオブジェクトモデルを公開します。 C ++での構築や破棄などの処理はC APIで明示的に行われ、ウィジェットのインスタンスはポインターを介して排他的に処理されます。
両方を試して、どちらがプロジェクトに適しているかを確認してください。
他のヒント
私はgtkmmへの貢献を支援しているため、偏見で非難される可能性がありますが、私は最初にユーザーでした。参照カウントされたオブジェクトはスマートポインターで自動的に管理されるため、メモリ管理はGTK +よりもgtkmmの方がはるかに簡単です。また、オブジェクトを自動変数(スタック上など)としてインスタンス化し、その有効期間をスコープによって決定することもできます。そのため、実際には、GTK +よりもgtkmmの方がメモリリークを回避する方がはるかに簡単です。
(私の意見では)GTK +に対するgtkmmのもう1つの巨大な利点は、タイプセーフなシグナルフレームワークの使用です。 GTK +では、ものを常に無効なポインターとして渡し、次に、あるべきだと思う型にキャストする必要があります。 gtkmmでは、これを行う必要はなく、シグナルハンドラーで型安全を強制するコンパイラーを利用できます。C / GTK +に対するもう1つの大きな利点は、新しいクラスを簡単に派生できることです。 GTK +では、多くの定型コードを作成し、基本的に言語の一部としてC ++で無料で入手できるもの(たとえば、継承、コンストラクタ、デストラクタなど)を再実装する必要があります。これはより退屈でエラーが発生しやすくなります。
greyfadeは、gtkmmは不完全であり、ある程度は正しいと述べました。gtkmmはGTK + APIのすべてを完全に網羅しているわけではありません(非常に近くなります)。しかし実際には、gtkmmコードから直接C / GTK + APIを直接使用できるため、これは問題ではありません。このC互換性は、バインディングがAPIの一部をカバーしていない場合に代替手段がないC#やpythonバインディングのようなものに対するC ++の大きな利点です。
gtkmm(IMO)よりもGTK +を選択する唯一の本当の理由は、gtkmmがCライブラリのラッパーであるため少しオーバーヘッドが追加されていることです(ただし、これは通常、単一の関数呼び出しであり、無視できる影響)、またはC ++が嫌いまたは使用できない場合。
C#プログラマーなら、 Vala をご覧ください。
ほとんどのLinux GUIアプリケーションにpygtkを使用していますが、Pythonは現在作業中のプロジェクトには遅すぎたため、GTK +とGTKmmのいずれかを選択しようとしました。それからヴァラに会った。
これは非常に新しい言語であるため、現時点ではドキュメントはかなり限られていますが、両方の長所を備えていると思います。C#構文とC速度。
geditで vala を学ぶことをお勧めします。
http://www.valaide.org/doku.php :vala
https://launchpad.net/valable :Eclipse
多くの人が言っているように、Gtkmmは優れたメモリ管理、参照カウントされたオブジェクトなどを提供します。しかし、1つの部門に落ちます。ドキュメンテーション。 Gtkmmプロジェクト全体が「文書化解除」に苦しんでいます。投稿された(およびサードパーティのサイトに再投稿された)ドキュメントは、ヘッダーファイルのjavadocスキャンにすぎません。
あなたはあなたが何に夢中になっているか知りたいと思っていました。たとえば、 Scrolled Window は、Gtkmmの優れたドキュメントクラスの1つです。 。
QTをご覧になりましたか?
素晴らしいC ++デザイン、クロスプラットフォーム、LGPLです
最初にgtkmmを学ぶのが最善の方法だと思います! gtkmmの基本を習得したら、GTK +を学ぶのはかなり簡単です(Cを知っていて、ポインターに慣れている場合)。
Cがわからない場合は、デニスリッチーのThe C Programming Languageを読むとすぐに習得できます
gtkmmはC ++向けに特別に設計されているため、最初にgtkmmを学ぶことをお勧めします。どちらもオブジェクト指向であるため、C#にやや似ています。
gtkmmの後、GTK +に進むことができます
ほとんどのオープンソース企業はgtkmmではなくGTK +を使用しているため、GTK +は学ぶ価値があります!