【原创翻译】Vala编程手册

软件和网站开发以及相关技术探讨
回复
I'm Matrix
帖子: 6
注册时间: 2013-01-25 12:50
系统: ubuntu 12.10

【原创翻译】Vala编程手册

#1

帖子 I'm Matrix » 2013-01-26 19:21

【原创翻译】Vala编程手册

译者注:

此手册为那些只会用 C,在不想学习其他高级语言的前提下使用面向对象编程并享受大量现代编
程技术,而加快开发效率的白痴(包括本人)所译!

原文地址:https://live.gnome.org/Vala/Tutorial

译本版权归译者所有,联系方式:Pigex.Zhang@gmail.com

Vala 是什么? ( What is Vala ?)

Vala 是一门新兴的编程语言,为那些依赖 GNOME 平台运行时(runtime),尤其是依赖 GLib 和
GObject 库的应用程序的编写提供了大量现代的编程技术的支持。目前,GNOME 平台长期持支了一套完整
的编程环境,拥有诸如动态类型系统,辅助内存管理等特性。在 Vala 诞生之前,要在 GNOME 平台上编程,
只能去调用原生的 C 语言接口,但是这样的编程方法暴露了很多根本不需要知道的细节,如果用更高级
的语言,诸如 Python,Mono C#,则需要相应的虚拟机环境,否则就只能调用 C++ 封装的库。
Vala 不同于以上提到的任何语言,Vala 最终会转换成 C 语言,然后再编译运行,不用依赖 GNOME 平
台的其他附加的库(除了 GLib 和 GObject 之外)。

由此,造成了一些细微的但又非常重要的影响:

•使用 Vala 编写应用程序和直接使用 C 编写应用程序,运行的效率非常相似,
但是 Vala 相比 C,更加容易,快速地编写和维护。

•使用 Vala 做不到 C 语言也做不到的事情,尽管 Vala 相对 C 语言来说,提供了很多 C 语言没有的特性,
但实际上 Vala 所有的特性都是映射到 C 语言本身的,只不过如果直接用 C 语言来实现这些特性的话,非常耗时,也非常困难。

综上所述,即便 Vala 提供了全部我们所希望的现代编程特性,但其实这些都是得益于一个已经存在的强力平台,因此我们在使用 Vala 的时候,必须遵守这个平台的编程规范。

更新记录:

2012.1.30

更新了继承部分,Vala的类只能继承自一个类或者不继承自任何类,不能继承自多个类
更新了接口部分,接口在定义必要条件列表时,要注意先后顺序
更新了方法隐藏部分,增加了示例代码

1月31日:
更新了错误处理部分
更新了参数路径部分

2月3日:
更新了容器部分

2月4日:
更新了语法支撑的方法
更新了多线程编程部分
更新了异步方法部分
更新了弱引用部分
更新了无属引用部分
更新了内存管理说明

2月8号:
增加了练习Vala和设计模式的代码仓库
附件
Vala编程手册.pdf
(768.49 KiB) 已下载 699 次
Vala内存管理.pdf
(232.4 KiB) 已下载 521 次
上次由 I'm Matrix 在 2013-02-08 22:03,总共编辑 7 次。
头像
枫叶饭团
帖子: 14683
注册时间: 2010-06-16 1:05
系统: Mac OS X
来自: Tencent
联系:

Re: 【原创翻译】Vala编程手册

#2

帖子 枫叶饭团 » 2013-01-26 19:30

神快出来评论。。。正在学。gobject呢
soiamso
帖子: 418
注册时间: 2008-09-06 2:00

Re: 【原创翻译】Vala编程手册

#3

帖子 soiamso » 2013-01-26 23:54

Signal 那个部分原文本来就是一个坑。加个译者注释比较好
原文用的例子也很隐晦,容易误导


无论对于listener,emiter 来说signal 括号的部分是定义信号所携带的内容。应该没有出入之分
“所有” singnal 都是 public signal void 定义的。

翻译:“其中第一个成员是一个名为 “sig_1”,需要传入一个整型参数的信号。”

其实原文也是这样写的,但是这个是一个面向对象的语言,
这个描述一点对象的感觉都没有而且提到 "出入" " in out", 这个东西本来就没有方向的。
I'm Matrix
帖子: 6
注册时间: 2013-01-25 12:50
系统: ubuntu 12.10

Re: 【原创翻译】Vala编程手册

#4

帖子 I'm Matrix » 2013-01-27 0:29

soiamso 写了:Signal 那个部分原文本来就是一个坑。加个译者注释比较好
原文用的例子也很隐晦,容易误导


无论对于listener,emiter 来说signal 括号的部分是定义信号所携带的内容。应该没有出入之分
“所有” singnal 都是 public signal void 定义的。

翻译:“其中第一个成员是一个名为 “sig_1”,需要传入一个整型参数的信号。”

其实原文也是这样写的,但是这个是一个面向对象的语言,
这个描述一点对象的感觉都没有而且提到 "出入" " in out", 这个东西本来就没有方向的。
谢谢你的回馈和建议,其实我翻译此手册的动力是为了更深入的学习vala,如果有更好的理解和示例,我会即使添加,也希望各位高手能贡献通俗易懂的示例代码
I'm Matrix
帖子: 6
注册时间: 2013-01-25 12:50
系统: ubuntu 12.10

Re: 【原创翻译】Vala编程手册

#5

帖子 I'm Matrix » 2013-02-08 21:48

https://github.com/Matrix-Zhang/Vala-Practice.git

这个仓库是专门练习Vala面向对象编程的地方,示例程序是结合Vala的学习还有阅读《大话设计模式》来写的

有兴趣的可以交流,本人是纯C,还在艰苦转换观念中。。。
xep007
帖子: 871
注册时间: 2006-01-03 20:44

Re: 【原创翻译】Vala编程手册

#6

帖子 xep007 » 2013-02-08 23:51

太好了,谢谢。
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 【原创翻译】Vala编程手册

#7

帖子 eexpress » 2013-02-09 0:41

我没很深入,只是下载了 http://www.valadoc.org/ 的一些 devhelp-package。

我写的时候,的确啥中文资料都没,点点事情都要搜索/咨询。泡了一阵子irc://freenode.net/#vala 而已。

支持翻译有实例的电子书。函数实例,官网有,但是很不全面。irc房间有人管理实例部分,以我初学的身份,还被要去了代码(说明我写的代码适合入门者 :P 当时,忘记了变量都用 eexpress 开头 lol )。
● 鸣学
头像
枫叶饭团
帖子: 14683
注册时间: 2010-06-16 1:05
系统: Mac OS X
来自: Tencent
联系:

Re: 【原创翻译】Vala编程手册

#8

帖子 枫叶饭团 » 2013-02-09 0:44

eexpress 写了:我没很深入,只是下载了 http://www.valadoc.org/ 的一些 devhelp-package。

我写的时候,的确啥中文资料都没,点点事情都要搜索/咨询。泡了一阵子irc://freenode.net/#vala 而已。

支持翻译有实例的电子书。函数实例,官网有,但是很不全面。irc房间有人管理实例部分,以我初学的身份,还被要去了代码(说明我写的代码适合入门者 :P 当时,忘记了变量都用 eexpress 开头 lol )。
这只能说明你笨 :em05 :em05 (自愧不如
头像
ifoolb
帖子: 45
注册时间: 2013-02-06 21:17
系统: Fedora newest

Re: 【原创翻译】Vala编程手册

#9

帖子 ifoolb » 2014-02-10 15:34

我觉得学门语言更艰难,风格一变,我就不适应了.gobject,gio,glib和gtk+都很相似,如果要改变,那莫非都要重学?
Like a fool,I'm foolish enough.
回复