複製鏈接
請複製以下鏈接發送給好友

vala

(新的編程語言)

鎖定
Vala是一種新的編程語言,其目標是為GNOME開發者提供現代化的編程語言功能,同時沒有額外的運行時要求,並且相對於C語言編寫的應用程序和庫,無需使用不同的ABI。Vala是基於GNOME的GObject系統,提供了那種你期望的類功能。與Scala一樣,在語言級別上,它具有與Java Beans的get*()和set*()等同的屬性,但是,對於屬性更改通知和監聽器(listener),它也能夠提供了語言級別上的支持。它不具備很強的XML處理能力,只是一個迷你型的解析器,不過看起來它的確具有很好的Unicode功能(字符串為UTF-8,string.getch()可返回16位的unichar字符。)在功能級別上,Vala與Java最大的不同之處應該是對象回收(de-allocation)的引用計數系統(reference-counting),相對於Java的GC,這一系統能夠提供更多確定的實時行為,不過也為某些編程錯誤打開了一扇窗户。在這個時代,Vala的另一個古怪之處在於,對於陣列訪問不進行邊界檢查,所以它比Java對規則的要求更為嚴格(不過可以推測,比C語言要寬鬆很多)。
外文名
Vala
類    別
編程語言
基於系統
GNOME的GObject
特    點
迷你型的解析器
功    能
對象回收
優    點
提供更多確定的實時行為

vala安裝

Ubuntu 12.04 LTS 下:
sudo add-apt-repository ppa:vala-team/ppa
sudo apt-get update
sudo apt-fast install valac valide
fedora 22 及以後:
sudo dnf install vala

vala編譯

Vala使用類似C#的語法,編譯過程是先轉換成C源碼,然後使用標準的C編譯器,生成二進制執行文件,這樣編譯出的文件,執行速度飛快。同時,這樣的編譯過程,對系統的編譯環境要求很低,只要你的系統自帶了C編譯環境(這對於幾乎任何系統都不成問題)。

vala小程序

public class Main{ public static int main (string[] args) { #if VALA_0_12 print("Hello World~~0.12\n"); #else print("Hello World~~0.10\n"); #endif return 0; }}
vala@ubuntu:~/code$ cat ttt.vala
using Gtk;
int main (string[] args) {
Gtk.init (ref args);
var window = new Window(Gtk.WindowType.TOPLEVEL);
window.title = "First GTK+ Program";
window.set_default_size (300, 50);
window.position = WindowPosition.CENTER;
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;
}
編譯命令: valac --pkg gtk+-2.0 ttt.vala
運行的結果 運行的結果

vala小問題解決

1、選擇版本sudo update-alternatives --config valac
2、解決0.12版本GEE不能編譯的問題
sudo cp /usr/share/vala-0.10/vapi/gee-1.0.vapi /usr/share/vala-0.12/vapi/gee-1.0.vapi
3、解決編譯WebKits找不到H文件的問題
基本上都是少了DEV庫,安裝:
sudo apt-get install libwebkitgtk-dev

vala在線幫助

標準的文檔不多,但基本在 valadoc dot org 均可很方便的搜索到。遇到編程問題,可以加入官方的郵件列表提問,或者加入 freenode dot net/#vala 房間直接提問。