跳轉到內容

Vala 程式設計/簡介/歷史

來自 Wikibooks,開放世界中的開放書籍

語言特性

[編輯 | 編輯原始碼]

Vala 的語法類似於 C#,但進行了修改以更好地適應 GObject 型別系統。Vala 支援以下現代語言特性:

  • 介面
  • 屬性
  • 訊號
  • Foreach
  • Lambda 表示式
  • 區域性變數的型別推斷
  • 泛型
  • 非空型別
  • 輔助記憶體管理
  • 異常處理
  • 型別模組(外掛)

Vala 旨在允許訪問現有的 C 庫,尤其是基於 GObject 的庫,而無需執行時繫結。使用 Vala 庫所需的一切只是一個 API 檔案,其中包含用 Vala 語法編寫的類和方法宣告。Vala 目前附帶了 GLib 和 GTK+ 的實驗性繫結。計劃在稍後階段提供針對完整 GNOME 平臺的生成繫結。

從用 C 編寫的應用程式中使用用 Vala 編寫的類和方法並不困難。Vala 庫只需要安裝生成的頭部檔案,然後 C 應用程式就可以像往常一樣訪問 Vala 庫的基於 GObject 的 API。由於 Vala 解析器是用庫編寫的,因此也應該很容易編寫繫結生成器來訪問來自例如 C# 編寫的應用程式的 Vala 庫,以便在生成繫結時可以使用所有編譯時資訊。

為什麼選擇 Vala?

[編輯 | 編輯原始碼]

許多開發者希望使用高階程式語言編寫 GNOME 應用程式和庫,但由於各種原因無法或不想使用 C# 或 Java 或 Python 或 Ruby 或 Perl 或 Lua 或 Haskell 或 Erlang 或 C++……,因此他們只能使用 C,而沒有對 GObject 型別系統的語法支援。Vala 編譯器允許開發者快速編寫複雜的面向物件程式碼,同時保持標準的 C API 和 ABI,並保持較低的記憶體需求。

C# 和 Java 庫無法像本機 GObject 庫那樣從 C 和其他語言中使用,並且不能作為 GNOME 平臺的一部分被接受。託管應用程式通常還具有更高的記憶體需求,這在某些情況下是不可接受的。

Vala 編譯器 (valac) 從 Vala 原始檔生成 C 原始檔和標頭檔案,就像您直接用 C 編寫庫或應用程式一樣。從 C 應用程式使用 Vala 庫與使用任何其他基於 GObject 的庫沒有區別。不會有 vala 執行時庫,並且應用程式可以將其生成的 C 程式碼與它們的 tarball 一起分發,因此使用者沒有額外的執行時或構建時依賴項。

注意事項

[編輯 | 編輯原始碼]
華夏公益教科書