15

ヴァラは初めてです。私はGObjectに精通していません。私が理解しているように、GObjectはGNOMEのGLibプロジェクトからスピンオフされました。私が間違っている場合は私を訂正してください。

私はValaの構文と実装がとても好きですが、GNOME用のデスクトップアプリケーションを作成するつもりはありません。

また、ValaにはGObject自体以外の標準ライブラリがないことも知っています(私が知っていると思います)。

だから私の質問は:ValaはGObjectなしで使用できますか?使用できる場合は使用できますか(型変換、数学、文字列操作、バッファなどの一般的なものに最適で維持されたベースライブラリがあります...利用可能ですか)?

4

3 に答える 3

10

DovaやPosixのような他のValaプロファイルがいくつかあります。

于 2012-03-03T21:36:19.273 に答える
6

TLDR:ValaはGLib / GObjectの上に設計されているため、GLib/GObjectで使用することをお勧めします。

valacの代替プロファイルがあるかもしれませんが、それらは未完成または非推奨のいずれかです。

Valaの要点は、CでGLibおよびGtk+アプリケーションを作成するために必要な定型文の量を減らすことです。

また、文字列と配列がエラーが発生しやすいポインタではなく単純なデータ型であるなど、Cに比べていくつかの優れた改善点が追加されています。

これは主に、GObjectに存在するすべての概念を次のようにラップします。

  • クラス
  • プロパティ
  • 継承
  • 代表者
  • 非同期メソッド
  • 参照カウント(C + GObjectでは手動、Valaでは自動別名ARC)
  • オブジェクトの型安全性
  • ジェネリック
  • おそらくもっと...

これらの概念はすべて、GObject / GLib / Gioを使用せずに実装できますが、それは基本的にGObject / GLib/Gioを書き直すことを意味します。これはあまり意味がありません。

GUIアプリケーションを作成したくない場合は、GLibを使用してコンソールアプリケーションを作成することもできます。ValaではGIOまたはGTK +の使用はオプションであり、アプリケーションはヘッドレスサーバーでも機能します。

Qtには、最終的にGLibメインループに切り替えるための努力さえあると思います。これにより、QtとGLibの相互運用性がはるかに簡単になります。

GLibを使用するフレームワークの良い例は、さまざまなデスクトップ環境でも使用されるGStreamerです。

要約すれば:

  • GLibは、基本的なクロスプラットフォームアプリケーションフレームワークです。
  • GObjectは、GLibエコシステムで使用されるオブジェクトシステムです。
  • GIOは、GLib+GObjectに基づくI/O抽象化(ネットワーク、ファイルシステムなど)です。
  • GTK +は、GLib + GObject +GIO+その他に基づくグラフィックUIツールキットです。
  • GNOMEは、すべての「G」テクノロジーに基づくデスクトップ環境です。
  • Valaは、C言語の「G」ライブラリを使用するために必要なボイラープレートを減らすように設計された高級プログラミング言語です。

GTK +は元々GIMPから来て、それ以来、今日のGNOMEの基礎となっているさまざまな「G」ライブラリに分割されました。

Valaには非常に強力なバインディングメカニズムもあり、あらゆる種類のCライブラリ用のいわゆる「VAPI」ファイルを簡単に作成できます。

正しいVAPIバインディングを使用すると、手動のメモリ管理、ポインター、文字列と配列のゼロ終了、および正しいCコードの記述を非常に困難にするその他の面倒なことについて心配する必要はありません。

于 2016-09-22T10:53:52.057 に答える
3

Aroopを使用できる別のプロファイルを次に示します。(まだ開発が進んでいることに注意してください)。高性能が必要な方にいいと思います。こちらの機能をご確認ください。

于 2012-08-09T12:03:20.557 に答える