Vala和Genie已经可以用于生产环境了吗?

9

我正在处理一些遗留的C代码,需要对其进行重构和清理,以消除意大利面条式编程,遵循DRY原则等。

我考虑使用C++进行重写,但不想走得太远,并希望尽可能接近C(同时使用一些面向对象的概念[而无需手动编码])。

最近我发现了GObject、Vala和Genie,后两者较新。有人知道Vala或Genie是否在生产代码中被使用吗?

最后但并非最不重要的是,是否有一个比较这两种语言的优缺点列表。我倾向于Genie,因为我喜欢Python,不太喜欢C#,但Genie(可能?)坚持使用制表符,在实践中可能有点烦人——我对这两种语言的优缺点列表感兴趣(假设它们中的一个或两个已准备好用于生产)。

顺便说一下,我正在Linux上开发,因此与Windows相关的问题对我来说不重要。


你可能还想考虑使用Objective CD,以及一些类似于“带有对象的C语言”的其他编程语言 - pmg
1个回答

10

Unity是近期Ubuntu所有版本使用的用户界面,使用Vala语言开发。

这里列出了一些使用Vala开发的应用程序。其中一些应用程序是某些主要GNU/Linux发行版默认GUI安装的一部分。

至于Genie:它是另一种语言(具有类似Python的语法),被Vala编译器所理解。因此,实际上只是您喜欢哪种语法(在我看来)。以下是来自Genie语言指南的一句话,似乎表达了同样的意思:

Genie与Vala在功能上非常相似,但在语法上有所不同,使开发人员可以使用更清晰、更简洁的代码完成相同的任务。

与Vala一样,Genie具有相同的优势:

  • 使用Genie编写的程序应该具有与直接使用Vala和C编写的程序类似的性能和资源使用率
  • Genie没有许多其他高级语言(例如Python、Mono、Java)中使用的VM所带来的臃肿和额外开销
  • Genie中的类实际上是GObjects,因此Genie可用于创建平台代码(例如小部件和库),其中需要使用GObjects绑定到其他语言

如果您不喜欢TAB字符,可以改用空格:

[indent=2] //two space indent instead of TAB
init
  print "Hello World"

1
谢谢。我想我会选择Vala。它仍在开发中(貌似Genie的最后一次代码更改是几年前了)。 - Homunculus Reticulli
1
“用Genie编写的程序...与直接用Vala和C编写的程序相比”这种措辞有点说明问题。使用Genie引入了多少间接层次?我知道Vala/Genie首先编译成C,然后再编译成二进制文件,但是那句话似乎表明,用Genie编写的程序首先被编译成Vala,然后再被编译成C,最后才生成二进制文件。或者中间还有斯瓦希里语。我不知道。 - robru
我查看了Unity的源代码,只能看到cpp、c和py扩展名。 - exebook

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接