5 ポイント 投稿者 GN⁺ 2024-04-09 | 1件のコメント | WhatsAppで共有
  • 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件のコメント

 
GN⁺ 2024-04-09
Hacker Newsの意見
  • Valaに最近活発な開発活動があったのかについては疑問視されている。あるGNOME開発者のブログ記事によると、Valaは1人の開発者によって保守されており、新規開発には推奨されないという。
  • あるコメント投稿者は最近Valaでアプリを書いたが、楽しい体験だったという。デスクトップLinuxとPinePhoneでうまく動くアプリが欲しかったためValaがよく合っており、Pythonよりはるかに楽しく、性能も良かったという。
  • ValaにはGenieという姉妹言語がある。両言語は基本的に同じだが、ValaはC#に似た構文を、GenieはPythonのような意味のある空白を使う。どちらも同じコンパイラ(valac)によってコンパイルされる。
  • Valaは構文的にSwiftと非常によく似ているように見える。構文以外にも、Valaはファーストクラスの参照カウント、C言語バインディング、外部ランタイムなしでバイナリに直接コンパイルされる点などがSwiftと似ている。
  • Valaが安定したABIや、C++やObjCのような他の高級言語との互換性を備えているのかという疑問が出ている。これはSwiftが解決しようとしている難しい課題でもある。
  • ValaがJavaやC#より(かなり)生産的または強力な言語だと言える点を見いだすのは難しい。Valaの利点や、どんな問題を解決しようとしているのかが明確ではない。
  • Valaの利点の1つは、GObjectとの互換性のために利用できる幅広いネイティブライブラリだという意見がある。すべてが1か所にまとまっている優れたドキュメントサイト(valadoc.org)も開発を容易にしている。
  • elementary OSの大半の「ネイティブ」アプリはValaで書かれているという。
  • Gearyを気に入っていたあるコメント投稿者は、それがきっかけでValaを調べ、Valaがエレガントな言語であり、GNOMEで実用的なプログラムを作るのに向いていると分かったという。ただし、ここ7年ほどはValaを見ていないとのこと。
  • GNOME開発にRustを使うことはますます人気を集めている(gtk-rs.org)。