Vala 是一门面向 GNOME 平台的编程语言,语法类似 C#,编译时先转换为 C 代码再由 C 编译器构建。它基于 GObject 对象系统,让开发者用现代高级语法编写原生、无额外运行时开销的 GTK 应用。

| 设计者 | 约尔格·比林等 |
| 首次出现 | 2006 年前后 |
| 范式 | 面向对象、命令式 |
| 编译目标 | GObject C 代码 |
| 主要平台 | GNOME / GTK |
Vala 是一门为 GNOME 桌面生态设计的编译型编程语言,由约尔格·比林(Jürg Billeter)与拉法埃尔·科斯纳(Raffaele Sandrini)发起,2006 年前后公开。它把类似 C# 的现代面向对象语法映射到 C 的 GObject 系统上,使程序员能高效开发原生 GTK 应用,而不引入托管运行时或垃圾回收虚拟机。
GNOME 生态的底层库大量基于 C 语言的 GObject 面向对象框架,直接用 C 编写 GObject 代码相当繁琐。Vala 通过在编译期把自身代码翻译成使用 GObject 的 C 代码,让开发者享受属性、信号、泛型、闭包等高级特性,同时生成的程序在二进制层面与手写 C 的 GNOME 应用完全一致,能无缝使用现有原生库。
Vala 主要用于开发 GNOME 桌面应用与 GTK 程序,许多 Linux 桌面软件正是用它编写。它让贡献者以较低成本参与 GNOME 生态开发,兼顾生产效率与原生性能。对于目标平台是 Linux 桌面、希望用现代语法却又不想引入沉重运行时的开发者,Vala 是契合度很高的工具。
问:Vala 程序需要运行时吗?答:不需要额外的语言运行时。Vala 编译为使用 GLib 与 GObject 的 C 代码,最终产出原生可执行文件,只依赖这些系统库,运行开销与普通 C 程序基本相同。
问:Vala 的内存如何管理?答:Vala 依托 GObject 的引用计数机制自动管理对象内存,编译器在生成的 C 代码中插入引用增减调用,开发者一般无需手动释放对象,但仍需注意循环引用等常见陷阱。

| 设计者 | 约尔格·比林等 |
| 首次出现 | 2006 年前后 |
| 范式 | 面向对象、命令式 |
| 编译目标 | GObject C 代码 |
| 主要平台 | GNOME / GTK |
登录 后参与讨论
暂无讨论,来发表第一条评论吧