2013-09-03
C言語にコンパイルされるオブジェクト指向言語『Vala』
[ PR ]
最近 Vala の利点を知りました。
C言語でオブジェクトを扱うための GObject というのがあるのですが、ある意味無理矢理実装しているために、視認性が悪く、コードも煩雑になります。
Valaは、GObjectを利用したC言語を出力するための言語で、参照カウント方式 を利用しているため、デストラクタなどを気にすることなく書くことができるそうです。
C#やJava, Dなどに影響を受けているらしく、ラムダ記法などもあるようで、C#から強い影響を受けている印象を受けます。
(https://wiki.gnome.org/Vala/GTKSample より転載)
using Gtk;
int main (string[] args) {
Gtk.init (ref args);
var window = new Window ();
window.title = "First GTK+ Program";
window.border_width = 10;
window.window_position = WindowPosition.CENTER;
window.set_default_size (350, 70);
window.destroy.connect (Gtk.main_quit);
var button = new Button.with_label ("Click me!");
button.clicked.connect (() => {
button.label = "Thank you";
});
window.add (button);
window.show_all ();
Gtk.main ();
return 0;
}
vala-benchmarks によると、コードのサイズこそC#に及ばないものの、速度はC言語よりやや遅いか同じくらいで、C++よりも速く、(別のサイトによると) Go言語の2倍も速く動作するそうです。
参照カウント式GCも搭載で、Yet Another C++ として、C言語で複雑なことをするような場合などにとても役に立ちそうです。OpenGLとか書いたら便利そうかなと思いました。