# 为什么选择 Vala 语言打造袋鼠数据库工具?
# 打造袋鼠数据库工具时的一些思考
当我决定开发袋鼠数据库工具时,为应用赋能力是最重要的考虑项,袋鼠数据库工具应赋予哪些持续的能力?我认为应该赋予:
- 性能优先: 应用程序应具有无与伦比的性能表现和响应能力, 最好是打造成原生应用。
- 代码安全: 应用程序有能力应对逆向工程,从而避免被破解和直接修改,保持持续的商业运营能力。
- 跨平台: 应用程序实现一份代码可以编译成所有平台兼容的应用;
- 技术栈成熟度: 技术栈成熟度能支持实现商业目标,因为工具需要利润支持持续发展。
- 快速掌握: 开发语言必须是语法简洁和强大,也应该是熟悉易上手的。
经过评估了如下几种技术栈和编程语言组合后,最终我选择了 GTK + Vala 技术栈组合来实现袋鼠数据库工具。 QT / C++ vs WxWidget / C++ vs GTK-mm / C++ vs GTK-rs / Rust / Go-GTK / Go vs GTK / Vala
# Vala 语言的优势和好处
- 语法兼容C#和Java,表达能力强,生产力高
有C#/Java 的强大表达能力,又有原生编译的性能和速度,更有接地气的独特特性;
Vala for Java Programmers (opens new window)
Vala for C# Programmers (opens new window)
内存所有权和使用引用计数管理,内存使用安全无烦恼
支持接口:支持抽象接口,也支持接口实现
接口实现类似于PHP traits 和 JavaScript 的 MIXIN 的功能;
- 点分名字空间支持大型应用开发
DBKangaroo 工具编写了 210 多个源码模块,至今用起来很顺,一个点(.)搞定;
- 语言级别的正则表达式支持
正则表达式给予了我强大的力量,在我的代码中无处不在,越用越熟练。
顺便推荐在线好工具: Regex101 (opens new window)
- 有C的速度和良好的互操作性支持
可以生成C头文件和C代码并获得全平台支持,也可以Vala与C混合编译。
- 强大且成熟的类库支持(官方支持约250个库)
基于GLib的强大类库体系,有工业级成熟度的各种库和GUI框架。
默认基于 GObject 的对象系统,也支持构建自己的单根对象体系。
- 有丰富且完善的文档支持,也有大量开源项目可供参考学习
Vala 官方在线文档 (opens new window)
Vala 项目集合 1(GNOME) (opens new window)
Vala 项目集合 2(Github) (opens new window)
- 有多种语言服务器【LSP】实现,支持各种编辑器和IDE
Vala Language Server on GNOME by Daniel Espinosa (opens new window)
最新版本为0.14.1,已实现Vala 语言服务器(LSP 1.4) ,支持代码自动完成,并快速演进中......
Vala Language Server on Github by Ben Iofel / Princeton Ferro (opens new window)
正在开发中,还未发布版本,已支持跳转到定义,代码自动完成正在实现中......
Visual Studio Code (opens new window) + Vala (opens new window)
VSCode 仍然是最值得推荐的IDE
- Gnome 和 Elementary OS官方钦定语言,并获得IBM公司研究机构采用
有大型机构和大公司采用 Vala 能给予普通开发者更大的信心加持, 采用 Vala 的完整公司列表 (opens new window)