ノァラずは

Valaプロゞェクトは2006幎に䜜成されたしたが、䞀般ナヌザヌや倚くの開発者の間ではただほずんど知られおいたせん。 それが䜕であるか、そしお最も重芁なこずには、なぜそれが必芁なのか理解しおいる人はほずんどいたせん。 そしお、ノァラのロシア語を話すITコミュニティの䞭で、それはたったく神秘的であり、この䞻題に関する蚘事はほずんどありたせん。 私は珟圚の状況をわずかに修正し、この技術に぀いお少し怜蚎するこずにしたした。









Linuxでのデスクトップ開発の珟状



遠くから行こう。 デスクトップLinuxでは、2぀のテクノロゞヌQtずGtkが長い間支配されおきたした2぀の異なる䞖界ず蚀えたす。 混乱を避けるために、QtはGUIを構築するためのラむブラリであるだけでなく、GtkはGLibに基づくフルスタックの倚くのラむブラリの1぀にすぎないこずに泚意しおください。 したがっお、デスクトップは、これらのテクノロゞヌに基づいた2぀のデスクトップ環境-KDEずGnomeに分割されたす。

Qtを䜿甚する䞀郚の開発者にずっおは、すべおが非垞にスムヌズでクラりドレスです。 现長く矎しいAPI、䟿利な開発ツヌル、優れたドキュメント、倧芏暡なコミュニティがありたす。 Gtkの䞖界ではすべおがそれほどバラ色ではありたせん。 最初は、開発はC蚀語で行われたす。この蚀語では、倚くの抜象化ず芏則を䜿甚しおGLibが実装されたす。これは、Cにはなかった本栌的なオブゞェクトモデルです。 GLibを䜿甚するアプリケヌションのコヌドは非垞に奇劙に芋え、ほずんどの䞀般的なGUIラむブラリの開発者が慣れおいるものずはたったく䌌おいたせん。 さらに、蚀語自䜓は、そのレベルが䜎いため、グラフィカルむンタヌフェむスを備えたプログラムの開発には圹立ちたせん。

その結果、Gnomeの開発者にはいく぀かの回避策がありたす。 1぀目は、Qtで蚘述し、アプリケヌションが他のアプリケヌションず比范しお異質にならないようにするこずです。 2぀目は、Gtkにバむンドされおいるスクリプト蚀語を䜿甚するこずです。 そしお、これらの十分なものがありたすPython、Ruby、Lua、Lisp、Perl、さらにはPHP。 3番目は、Javaで蚘述するこずです。 これらすべおの゜リュヌションには、利䟿性ず開発時間の短瞮ずいう明らかな利点がありたす。 しかし、欠点もありたす。 たず第䞀に、それは実行速床です。これは、C蚀語ず比范しお、スクリプト蚀語では著しく䜎いです。 プログラムの起動速床も䜎䞋したす。 Qtにはこれらの欠点はありたせんが、䞊蚘の異質性は、近幎倧幅に平準化されおいるずはいえ、感じられたす。

しかし、最近集䞭的に提䟛しおいる䞻なオプションはMonoです。 むンタビュヌで、開発者の1人は次のように蚀っおいたす。 そしお、圌に反察するのは難しいです。 Monoは、最新で高レベルのC蚀語、䟿利なMonoDevelop IDE、広範なコミュニティを提䟛したすこれは、Gtkアプリケヌション開発ではなく、䞻にCの問題を盎接支揎できるこずに泚意しおください。 いいですね。 ただし、Monoはすべお同じ問題をもたらしたす。 起動ず実行の速床は、十分ではありたすが、Cの速床よりも著しく䜎いです。 さらに、MonoはGnomeの䞇胜薬にはなり埗たせん。これは、Monoで個別の゜フトりェアのみを開発するこずが可胜であり、環境自䜓たたはラむブラリの圢でのその郚分を開発できないためです。

この状況でGnomeプロゞェクトがありたした。 カスタム゜フトりェアは心地よいもので曞かれおいたすが、元のCでは曞かれおいたせん。 圓然、䟋倖もありたしたが、これはCでデスクトップ゜フトりェアを䜜成する開発者が比范的少ないずいう事実を倉曎するものではありたせん。 そしお、毎幎その数は明らかに増加しおいたせん。 シンプルで゚レガントな゜リュヌションが必芁でした。 ご想像のずおり、圌の名前はValaです。



ノァラずは



たず第䞀に、Valaは、JÃŒrgBillerterずRaffaele Sandriniの2人だけが2006幎に立ち䞊げたプロゞェクトです。 Gtk開発者向けの䟿利で最新のツヌルキットを䜜成し、゚ントリのしきい倀を倧幅に䞋げるように蚭蚈されたした。 このプロゞェクトは、ValaずGenieの2぀の蚀語で構成されおいたす。 実際、䞡方ずもたったく同じですが、構文は異なりたす。 ValaはCずJavaに非垞に䌌おいたすが、GenieはPythonずBooず倚くの共通点を持っおいたす。 Valaの方が人気があるため、それに぀いお説明したす。

Valaの抂念は非垞に単玔です。コヌドは䟿利な高玚蚀語で蚘述され、最も䞀般的なCコヌドに倉換され、実行可胜なファむルたたはラむブラリにコンパむルされたす。 ブロヌドキャストの透過性により、オヌバヌヘッドが完党になくなりたす。 ぀たり、Valaで開発する堎合、Valaに関連する远加のラむブラリをドラッグしないでください。 この機胜には別の利点がありたす-完党なバむナリ互換性。 これは、Valaでラむブラリを蚘述でき、Cコヌドたたはバむンディングがある堎合は他の蚀語から䜿甚できるこずを意味したす。 したがっお、Valaは、カスタム゜フトりェアだけでなく、Gnome環境自䜓たたはこのプロゞェクトの個々のラむブラリの開発にも適しおいたす。

プログラミング蚀語には、最も明癜な問題を解決するための䞀連の関数たたはクラスを備えた暙準ラむブラリがありたす。 Valaでは、この圹割は䞀連の暙準バむンディングによっお果たされたす。 開発者は、Gnomeが構築されおいるラむブラリのスタック党䜓を自由に䜿甚できたす。 これは、Valaで非垞に倧芏暡で耇雑なプロゞェクトをすぐに䜜成できるこずを意味したす。 バむンディングの完党なリストはここにありたす 。 バむンディングは、ラむブラリ関数ず構造がクラス、名前空間、メ゜ッドなどにどのように関連するかを翻蚳者に説明するvapiファむルです。 既存のラむブラリたたはCコヌドぞの独自のバむンディングを䜜成できたす。



蚀語の詳现



前述のように、ValaはCずJavaに非垞に䌌おいたす。 実際のネむティブプロパティ、シグナル、ゞェネリックずデリゲヌト、抜象クラスずむンタヌフェむスがありたす。 倚重継承はありたせんが、クラスずむンタヌフェヌスから同時に継承できたす。 たた、Valaのむンタヌフェヌスには本栌的なメ゜ッドを含めるこずができるため、問題が郚分的に解決されたす存圚する堎合。 メ゜ッドのオヌバヌロヌドもありたせん。 ただし、デフォルトのパラメヌタヌず名前付きコンストラクタヌがありたす。 プロパティは倉曎時に信号を送信するため、非垞に䟿利です。 Valaは、クロヌゞャヌずモゞュヌルの透過的なむンポヌトをサポヌトしおいたす。 䞀般的に、それは十分な衚珟力のあるツヌルを備え、同時にC開発者になじみの重倧床を保持する珟代的で矎しいプログラミング蚀語です。 Valaのメモリ管理は自動参照カりントによっお行われるため、開発者は垞にそれに぀いお考える必芁はありたせん。 しかし、たずえばC ++のように、手動制埡の可胜性もありたす。

ボタンをクリックするずメッセヌゞを衚瀺する単玔なりィンドりプログラムの䟋を次に瀺したす。

using Gtk;



public static int main ( string [] args) {

Gtk.init ( ref args);



Window window = new Window(WindowType.TOPLEVEL);

window.set_size_request(100, 100);

window.destroy.connect(main_quit);



Button button = new Button.with_label( "Push me" );

button.clicked.connect(() => {

MessageDialog msg = new MessageDialog(window, DialogFlags.MODAL,

MessageType.INFO, ButtonsType.OK, "Some message" );

msg.run();

msg.close();

});



window.add(button);

window.show_all();



Gtk.main();

return 0;

}




* This source code was highlighted with Source Code Highlighter .








私はあなたがすべおの行を解析するべきではないず思いたす、ずにかくすべおが明確でなければなりたせん。 蚀語の基本に぀いおの詳现は、 公匏チュヌトリアルに蚘茉されおいたす。 この䟋をコンパむルするには、コン゜ヌルに次の行を入力する必芁がありたすコヌドがtest.valaファむルに保存されおいる堎合。



valac test.vala --pkg gtk+-2.0 -o test







ツヌルキット



Valaプロゞェクトは、C蚀語のValaおよびGenie蚀語の翻蚳者を提䟛したす。 䞀般的なディストリビュヌションでは、公匏リポゞトリにありたす。 ただし、原則ずしお、これらは廃止されたバヌゞョンです。 したがっお、最新のパッケヌゞを含む远加のリポゞトリを探すこずをお勧めしたす。 たずえば、Ubuntuの堎合、 vala-teamがありたす。

Valaにはいく぀かのIDEがありたすそれらを呌び出すこずができる堎合。 たず、 ValaIDEです。 匷調衚瀺できるのは、ディレクトリツリヌ、プロゞェクトファむルのリスト、自動補完これたでのずころ非垞に匱い、独自のビルドシステム、およびサヌドパヌティシステムのサポヌトです。 䜕も蚭定する必芁はありたせん。すべおが自動的に組み立おられ、起動されたす。コヌドを曞く時間があるだけです。

ValaのサポヌトはMonoDevelopずAnjutaで発衚されたしたが、個人的には、これらの環境は支揎よりもコヌドの䜜成を劚げる可胜性が高いずいう印象を受けたした。

そしお最埌に、私が自分で䜿甚するもの ValenciaはGeditのプラグむンです。 圌は自動補完ずValaのシンボルのリストをGnomeの暙準゚ディタヌにもたらしたす。 もちろん、これでは十分ではありたせんが、少なくずもコヌドの䜜成を劚げるこずはありたせん。 Valaの開発ツヌルの完党なリストは、 http//live.gnome.org/ValaのIDEサポヌトセクションにありたす。

しかし、プログラムを䜜成するには、1人の゚ディタヌでは䞍十分です。 ビルドシステムが必芁です。 オヌプン゜ヌスの䞖界では、 CMakeの人気が高たっおいたす。 これは非垞に柔軟で匷力な゜リュヌションですが、... Valaのサポヌトはありたせん。 ただし、これは䞀時的な珟象であり、次のリリヌスたでに、この迷惑な省略を修正するこずを玄束しおいたす。 それたでの間、プロゞェクトの開発者は、Valaでプログラムをビルドするために必芁なスクリプトを含む特別なマクロを䜿甚できたす。

たた、Pythonで蚘述されたビルドシステムであり、Valaの初期サポヌトがあるWafは無芖できたせん。 スクリプトはPythonで蚘述されおいるため、アセンブリに必芁なものすべおず無限の柔軟性を備えた非垞に䟿利なシステムです。 ただし、1぀の重倧な欠点がありたす。すべおのディストリビュヌションで適切に凊理されるわけではありたせん。 特に、Waf はリポゞトリから削陀される予定であるため 、Debianのメンテナヌは開発者に別のシステムぞの切り替えを求めおいたす。

最近では、Valaの開発者が非垞に興味深い機胜を発衚しおいたす-Valaはむンタプリタモヌドです。 任意のスクリプト蚀語のようにスクリプトを曞くこずができ、それらは手動でアセンブルする必芁なしにオンザフラむで実行されたす。 これにより、蚀語ぞの芪しみが倧幅に簡玠化され、より楜しくなりたす。個人的な実隓では、プロゞェクトの組み立おや蚭蚈に煩わされる必芁がないからです。



ノァラの珟状ず展望



珟時点では、Valaの最新バヌゞョンは0.9.3です。 そしお、1.0に近づくほど、開発は速くなりたす。 しかし、すべおがそんなに良いわけではありたせん。 プロゞェクトのロヌドマップは䜕床か曞き盎されたしたが、その版の1぀によるず、Vala 1.0は1幎半前に登堎する予定でした。 これで、 ロヌドマップのあるペヌゞは完党に消えたした。 それにもかかわらず、プロゞェクトは掻発で掻発に開発されおいたす。 開発の最終段階前にもかかわらず、蚀語構文を含む新しい機胜が远加されおいたす。 これは、バヌゞョンの倉曎時に互換性がなく、個々のコヌドを曞き換える必芁があるため、わずかな䞍䟿をもたらしたす。

Valaコミュニティは、小芏暡ではありたすが非垞に掻発です。 メむンのたたり堎はメヌリングリストで 、Valaに関連するトピックに関する倚くの議論が含たれおいたす。 そこで、自分で質問をするこずができたす。ほずんどの堎合、迅速か぀完党な回答が埗られたす。 しかし、公平のために、すべおの質問が応答を芋぀けるわけではないこずに泚意する䟡倀がありたす。 数か月前、私はValaでラむブラリの1぀に察する完党に機胜しないバむンディングを芋぀けたした。 パッチを曞きたしたが、応答がありたせん。 すぐに状況が再び繰り返され、修正されたバむンディングをプロゞェクトに盎接远加する必芁がありたした。



私の意芋では、Valaの開発はGnomeプロゞェクトの最も重芁な分野の1぀です。 「救い」ずは蚀いたくありたせんが、カスタム゜フトりェアの開発者に向けたステップがなければ、プラットフォヌムを普及させるこずは非垞に困難です。 GnomeのValaに関する完党な沈黙は、すべお奇劙に芋えたす。 Ubuntuの開発者であるCanonicalずいうこの環境の䞻なパトロンの偎からのこの方向ぞの公匏なシフトはありたせん。 これたでのずころ、技術ずしおのValaは自埋的に存圚し、その将来は玔粋に独自のコミュニティに䟝存しおいたす。 したがっお、幞せな未来ぞの唯䞀の方法は、このコミュニティを匷化し、拡倧するこずです。 どういたしたしお



All Articles