vala

vala教程

vala+vscode 代码补全

其他IDE编辑器

vala问题

  • vala目前没有很好用的IDE集成开发环境,不过还好语法较为简单,也有人开发大型软件。代码提示功能较弱,需要自己改造一个代码提示的插件。

one

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int main (string[] args) {
var app = new Gtk.Application(
"com.example.App",
ApplicationFlags.FLAGS_NONE
);

app.activate.connect(() => {
var win = new Gtk.ApplicationWindow(app);

var btn = new Gtk.Button.with_label("Hello World");
btn.clicked.connect(win.close);

win.child = btn;
win.present();
});
return app.run(args);
}

好吧vala.dev 首页提供的实例就出现编译错误。

直接使用gcc $(pkg-config --cflags --libs glib-2.0 gtk+-3.0) one.c同样出现错误。

第一页的代码没法看,还是看手册里面的吧。

为什么使用vala开发语言

https://www.datatable.online/zh/blog/001-why-choose-vala.html#%E6%89%93%E9%80%A0%E8%A2%8B%E9%BC%A0%E6%95%B0%E6%8D%AE%E5%BA%93%E5%B7%A5%E5%85%B7%E6%97%B6%E7%9A%84%E4%B8%80%E4%BA%9B%E6%80%9D%E8%80%83

打造袋鼠数据库工具时的一些思考

当我决定开发袋鼠数据库工具时,为应用赋能力是最重要的考虑项,袋鼠数据库工具应赋予哪些持续的能力?我认为应该赋予:

  1. 性能优先: 应用程序应具有无与伦比的性能表现和响应能力, 最好是打造成原生应用。
  2. 代码安全: 应用程序有能力应对逆向工程,从而避免被破解和直接修改,保持持续的商业运营能力。
  3. 跨平台: 应用程序实现一份代码可以编译成所有平台兼容的应用;
  4. 技术栈成熟度: 技术栈成熟度能支持实现商业目标,因为工具需要利润支持持续发展。
  5. 快速掌握: 开发语言必须是语法简洁和强大,也应该是熟悉易上手的。

经过评估了如下几种技术栈和编程语言组合后,最终我选择了 GTK + Vala 技术栈组合来实现袋鼠数据库工具。 QT / C++ vs WxWidget / C++ vs GTK-mm / C++ vs GTK-rs / Rust / Go-GTK / Go vs GTK / Vala

Vala 语言的优势和好处

  1. 语法兼容C#和Java,表达能力强,生产力高
    有C#/Java 的强大表达能力,又有原生编译的性能和速度,更有接地气的独特特性;
    Vala for Java Programmers (opens new window)Vala for C# Programmers(opens new window)

  2. 内存所有权和使用引用计数管理,内存使用安全无烦恼
    Vala 使用自动引用计数的内存管理功能,无需垃圾内存回收支持(GC),亦无GC相关的性能问题。

  3. 支持接口:支持抽象接口,也支持接口实现
    接口实现类似于PHP traits 和 JavaScript 的 MIXIN 的功能;

  4. 点分名字空间支持大型应用开发
    DBKangaroo 工具编写了 400 多个源码模块,拆分为3个子项目和多个顶级名字空间,名字空间深度达5层,全部一个点(.)搞定,至今用起来很顺;

  5. 语言级别的正则表达式支持
    Vala 把正则表达式视为一等公民对待,可以在代码中直接使用,正则表达式给予了我强大的力量,在我的代码中无处不在,越用越熟练。

    特别的礼物:一款优秀的在线正则工具: Regex101(opens new window)

    1
    2
    3
    4
    5
    6
    GLib.MatchInfo regex_match;
    Regex regex = /(?<x>[\d\.\-]+),(?<y>[\s]*[\-\d\.]+)/mi;
    if (regex.match(text, 0, out regex_match)) {
    point_new.set_x(double.parse(regex_match.fetch_named("x")));
    point_new.set_y(double.parse(regex_match.fetch_named("y")));
    }
  6. 有C的速度和良好的互操作性支持
    可以生成C头文件和C代码并获得全平台支持,也可以Vala与C混合编译。

  7. 强大且成熟的类库支持
    基于GLib的强大类库体系,有工业级成熟度的各种库和GUI框架支持,目前有近300个VAPI, 请查询:VAPIs @ Github (opens new window)VAPIs @ Project(opens new window)

  8. 有丰富且完善的文档支持
    有优秀的文档和案例,也有大量开源项目可供参考学习,非常容易上手。
    Vala 官方在线文档 (opens new window)Vala 项目集合1(GNOME) (opens new window)Vala 项目集合2(Github)(opens new window)

  9. 卓越的开发环境支持
    目前最好的 Vala IDE 组合是:Visual Studio Code (opens new window)+ Vala plugin (opens new window)+ Vala language server (opens new window)+ Meson(Ninja)/MSYS2, 享受它们,贡献它们,我们可以.

  10. Elementary OS官方钦定语言
    Elementary 官方博文分享了他们的观点: Why we write elementary apps in Vala

Vala编程手册