- Valaは、GNOME開発者にモダンなプログラミング言語機能を提供することを目指したプログラミング言語
- Cで書かれたアプリケーションやライブラリと比べて追加のランタイム要件を課さず、異なるABIも使用しない
- サポートするモダンな言語機能: インターフェース、プロパティ、シグナル、Foreach、ラムダ式、ローカル変数の型推論、ジェネリクス、Non-null型、メモリ管理、例外処理
- オブジェクト指向方式で高水準の抽象化を利用して快適にコードを書け、GObject、GTK などのGNOME技術と深く統合されている
- コードを非常に高速なネイティブバイナリにコンパイルする。既存のCコードをValaプログラムで再利用したり、ValaからCコードを生成したりできる
既存のCライブラリとの互換性
- Valaは、ランタイムバインディングなしで既存のCライブラリ、特にGObjectベースのライブラリにアクセスできるよう設計されている
- Vala構文でクラスおよびメソッド宣言を含むAPIファイルさえあれば、Valaと一緒にそのライブラリを利用できる
- Valaは現在、GLibおよびGTK+向けのバインディングを同梱している
Valaコンパイラ valac
valac は、ValaソースコードをCソースおよびヘッダーファイルに変換するセルフホスティングコンパイラ
- Valaソースコードで宣言されたクラスとインターフェースを生成するために、GObject型システムを使用する
- Valaの構文はC#に似ているが、GObject型システムにより適合するよう調整されている
CからValaで書かれたクラスおよびメソッドを使う
- Valaライブラリで生成されたヘッダーファイルだけをインストールすれば、CアプリケーションからValaライブラリのGObjectベースAPIに通常の方法でアクセスできる
- Valaパーサーはライブラリとして実装されており、すべてのコンパイル時情報をバインディング生成時に利用できるため、C#などで書かれたアプリケーションからValaライブラリへアクセスするためのバインディングジェネレーターを作るのも容易だろう
GN⁺の見解
- Valaは、Cに似た構文でGNOME技術とよく統合されたオブジェクト指向言語という利点がある。特にGUIアプリケーション開発に最適化されており、GTK、Granite などと簡単に連携できる
- ValaはGNOMEデスクトップ環境の開発に特化した言語であり、それ以外の分野では活用度は大きくないとみられる
- C#に似た構文を持つValaは、C#に慣れた開発者がGNOME開発に参加するうえで役立つだろう
- 既存のCライブラリとの互換性を重視しつつモダンな言語機能を支援しようとするValaの目標は新鮮だが、その分、言語自体の独創性は低くならざるを得ないように見える
- Valaプロジェクトを見ると主にGNOMEやelementary OS向けのデスクトップアプリが多いが、サーバープログラミングにも活用可能な言語である。ただし、まだその分野ではエコシステムが不足している
- Valaがどこまで広く使われるかは未知数だが、GNOMEエコシステムではCの代わりにValaを使うことで生産性向上が期待できる
- Valaと構文が似ていてGNOME技術を利用できるGenieという言語もある。Pythonのようにインデントでコードブロックを区切るのが特徴で、Valaの代替として検討に値する
1件のコメント
Hacker Newsの意見