程式語言 Vala

Vala係一隻物件導向嘅程式語言,由自己整嘅編譯器產生C語言代碼,仲用咗GObject系統,畀用戶喺Gnome運行嗰陣庫嘅基礎上用大量現代嘅編程技巧。通過用GLib同埋GObject,Vala提供咗動態類型系統同基於引用計數(reference counting)系統嘅內存管理嘅功能。

Vala
程式語言 Vala
編程範式物件導向結構化指令式
編程員Jürg Billeter、Raffaele Sandrini
第一次出現2006年, 18年之前 (2006)
穩定版本
0.54.7 / 2022年2月14號, 2年之前 (2022-02-14)
類型系統靜態類型、強類型
操作系統所有用到GLib嘅平台
軟件授權GNU寬通用公共許可證2.1+
副檔名.vala, .vapi
網站wiki.gnome.org/Projects/Vala
啟發語言
CC++C♯DJavaBOO


Vala結合咗腳本語言嘅高級編程語言建造時間性能,同低級嘅編程語言運行時間性能。相較喺用C寫成嘅應用同埋庫,佢致力喺將現代編程語言特徵帶畀GNOME開發者,而唔使強加任何額外嘅運行時間要求,並且唔使用唔同嘅ABI。Vala嘅語法同C#好似,為咗更好咁適應GObject類型系統而做咗修改。

歷史

版本 出嘅日期
舊版本,唔再支援: 0.0.1 2006-07-15
舊版本,唔再支援: 0.1.0 2007-07-09
舊版本,唔再支援: 0.10.0 2010-09-18
舊版本,唔再支援: 0.20.0 2013-05-27
舊版本,唔再支援: 0.30.0 2015-09-18
而家嘅版本: 0.40.25 2021-01-11
舊版本,唔再支援: 0.42.0 2018-09-01
舊版本,唔再支援: 0.44.0 2019-05-09
舊版本,唔再支援: 0.46.0 2019-09-05
而家嘅版本: 0.48.23 2022-02-21
舊版本,唔再支援: 0.50.0 2020-09-11
而家嘅版本: 0.52.11 2022-02-21
而家嘅版本: 0.54.7 2022-02-14
格式:
舊版本
舊版本,仲支援緊
而家嘅版本
最新嘅預覽版
將來版本

例子

下面係Vala 嘅 Hello World程式:

void main () {     print ("Hello World\n"); } 

物件導向

下面喺更複雜啲嘅版本,表現咗Vala嘅物件導向特性:

class HelloWorld: Object { private uint year = 0;  public HelloWorld () { }  public HelloWorld.with_year (int year) { if (year>0) this.year = year; }  public void greeting () { if (year == 0) print ("Hello World\n"); else /* Strings prefixed with '@' are string templates. */ print (@"Hello World, $(this.year)\n");  } }  void main (string[] args) { var helloworld = new HelloWorld.with_year (2021); helloworld.greeting (); } 

喺GObject庫入面,Vala用唔到多重繼承,但係Vala入面嘅類可以實現任何數量嘅接口,所以可以用嚟補返缺失。下面呢段代碼就係佢補返嘅方法(有時叫做mixin):

using GLib;  interface Printable { public abstract string print ();  public virtual string pretty_print () { return "Please " + print (); } }  class NormalPrint: Object, Printable { string print () { return "don't forget about me"; } }  class OverridePrint: Object, Printable { string print () { return "Mind the gap"; }  public override string pretty_print () { return "Override"; } }  void main (string[] args) { var normal = new NormalPrint (); var overridden = new OverridePrint ();  print (normal.pretty_print ()); print (overridden.pretty_print ()); } 

工具

編輯器

Vala嘅開發工具呢幾年有咗顯著嘅改進。下面係一啲用到Vala插件嘅流行IDE同埋文本編輯器:

  • GNOME Builder
  • Visual Studio Code,有Vala嘅插件
  • Vim,有arrufat/vala.vim嘅插件
  • Emacs,有vala-mode
  • Atom
  • Geany

代碼智能

依家有兩個活躍開發嘅語言服務器幫Vala整咗代碼智能英文Intelligent code completion

  • benwaffle/vala-language-server,設計用喺用到LSP嘅任何編輯器,包括VSCode、vim同埋GNOME Builder。
  • esodan/gvls,目前係Vala喺GNOME Builder入面嘅缺省語言伺服器,佢對喺所有用LSP嘅編輯器都用到。

睇埋

  • elementary OS,呢隻Linux發行版有好多功能都係用Vala寫出嚟嘅

參考

出面網頁

Tags:

程式語言 Vala 歷史程式語言 Vala 例子程式語言 Vala 工具程式語言 Vala 睇埋程式語言 Vala 參考程式語言 Vala 出面網頁程式語言 ValaC語言物件導向程式語言編譯器

🔥 Trending searches on Wiki 粵語:

黃毓民BLACKPINK余思敏劉朝健𨋢食鬼出木杉英才梁庭欣翡冷翠瑞士德文區馮睎乾陳國麟 (香港)梁小冰IPhone扭計骰枇杷木薯豬橫脷香港國際機場麻甩佬真田廣之鴛鴦 (嘢飲)艇仔粥佛跳牆The Weeknd單文柔長江宮崎駿亞洲金融風暴好望角群育學校香港都會大學劉宇寧令吉成語疊字白蟬花環保4R邦民日本財務 (香港)鄭杞瑤飛黃騰達王昊被虐待致死案姜濤凡爾賽宮黃兆祺曱甴黃瀅仴打天下2黃上晏海洋生態系統耆那教韓志旼中華民國海洋學福臨沙地阿拉伯茼蒿大樹菠蘿方差卡廷大屠殺C++鍾雪瑩TREASURE (男團)尼日利亞九龍粵語香港基本法第23條何詩蓓河合奈保子高圓圓陳莉寶頭版盧海鵬導演·門鄭芷淇香港警務處二十四方位🡆 More