专访XRuby贡献者郑晔:软件开发不是自娱自乐(上)

郑晔,是一个热爱编程的程序员。(网络ID:dreamhead)

也许有人会说,我还是一个超热爱编程的程序员呢。那么我想你一定不知道,郑晔是第一个加入到XRuby这个开源项目的,XRuby今天优异的成绩与郑晔有着不可分割的联系。

在郑晔的blog中有一篇《XRuby发布了!》的文章,其中的一段记述了郑晔加入XRuby项目的那段发展历史。“2005年中期,yawl一个人开始 了XRuby的开发。项目的最初,开发的只是一个Ruby的语法解析器,所以,那时候的名字叫做RubyFront。一个人的努力总是有限的,yawl在 孤独前行了很长一段时间之后,决定把这个项目开源,吸引更多人一起努力。2006年9月8日,yawl将代码移至Google Code。此时的项目已经超出了一个Ruby语法解析器的范畴,于是,项目名也由RubyFront变成了XRuby。至此,XRuby正式诞生,也开始 向一个真正的Ruby编译器迈进。我就是这个时候加入的。”

谈到这一段历史,郑晔说“加入XRuby时,我刚好在业余时间完成了《Ruby Hacking Guide》几个章节的翻译,对Ruby的内部实现有了一些了解。看到XRuby这个项目时,我感到特别兴奋:自己熟悉的Java、自己喜欢的Ruby、 自己想要了解编译器技术。所以,我毫不犹豫的加入了这个项目。”

现在谈起XRuby,郑晔仍然是一副惊艳的模样。“这些年的工作中,我见过很多的开源项目,只有XRuby是一个让我真正动心,并投入大量时间参与其中的项目。”

“其实抛开个人喜好,我也依然觉得XRuby是一个非常不错的项目。首先,Ruby on Rails已经让Ruby赢得了更多的关注,只要有足够的关注,一定就会有不错的发展,现在诸多公司的动作也再次证实了大家对Ruby的看好。

再者,整合Ruby和Java是一个非常棒的主意,因为程序设计语言的发展历程中,优秀的后来者都提供了比较好的方式来利用原有者的优势。而不是完全的推翻重来,比如C/C++提供了整合汇编的方式,Java提供了JNI的方式去整合C/C++的资源等。

Ruby已经有了整合C的方式,再有一个整合Java的方式就更完美了。当然,这样就有可能会混淆了XRuby和JRuby,但事实是真正让XRuby具 有优势的是它的编译方式。谈到编译和解释,人们通常会想到性能上的差异,也就是说采用编译的方式会让程序跑得更快。JRuby为人诟病大多也是因为性能的 原因。

面对很多新技术,人们首先会质疑的就是性能,当年的C/C++和Java都曾经历过这样的过程,但是只要性能差异在一个可接受的范围之内,就可以消除人们 对于性能的质疑。编译会成什么样子呢?这是我感兴趣的,也是XRuby主要的价值所在,事实证明,XRuby可以让Ruby代码在JVM平台上跑得像C Ruby一样快,甚至更快。

当然,C Ruby还有很多可以提升的空间。比起当时的JRuby,这就是一个巨大的进步。所以,我相信,作为第一个做JVM上Ruby编译器的项目,XRuby这个项目对整个软件开发社区的发展是有好处的,这也是我愿意参与其中的重要原因。

很多人对于参与开源项目,尤其是像XRuby这样的编译器项目,第一个反应是我不行,因为我不会这个,不懂那个。实事求是的说,参与XRuby之初,我也只是对语言的实现有兴趣,对编译器的了解也仅限于大学所学过的那点编译原理的知识,没有什么实战的经验。

但我还是加入到XRuby中,因为我相信我可以在这个过程中学会这个项目所需要的知识。直到现在,我也不敢说自己精通编译器。随着项目发展,我不断补充着 自己的知识,对编译器实现的理解也是越来越深:从最开始的只是贡献一些builtin的代码,到后来重写了这个runtime的实现,再到后来修改编译器 的实现。希望我走过的这条路可以让那些希望进入XRuby项目或是其他开源项目的人借鉴。”

不仅郑晔的XRuby参与之路可以让我们很多有志之士得以借鉴,他的程序员之路也是一段更值得我们学习的经验。郑晔将自己的程序员之路分为了三个阶段,第 一阶段是大学毕业前的初学阶段:“大学之前,我对计算机的了解几乎是零。经过四年的学习,我找到了自己真正喜欢的事情:编程,因为用程序解决问题让我很有 成就感。于是毕业的时候,我放弃了继续读书的想法,我知道我需要的是更多的实践。”

第二阶段是大学毕业后的前三年,实践阶段:“投身到实际的项目中,我对软件开发有了真实的体验。起步的时候,我遇到了几个良师益友,让我走上我认为的正确 道路。我曾做过一个长达两年的项目,这让我对软件开发的生命周期有了一个相对完整的认识,个人能力也在这个过程中得到了极大的提升:从最开始的负责某个模 块的编写,到后来负责整个系统的设计,直到最后基于此设计出一个框架,拿了公司Java大赛的冠军。经过这段时间的实践,我逐渐开始对软件开发有了一些自 己的看法,也终于可以写出自己满意的代码。此外,我的blog之路也始于这段时间,并一直坚持下来,不断进行自我总结的同时,也结交了许多朋友。”

随后两年时间为第三阶段提高阶段:“我在公司内部做了一次调转,工作内容的转换,让我有机会接触到更多的东西:从图像识别到并行计算,再到多核程序优化, 我的技术视野不断开阔,同时,利用业余时间完善着自己的知识体系,将原本零散的知识串在了一起。实际上,我认为自己这段时间做得并不出色,不过,恰恰是这 段时间,我开始反思一些东西,逐渐的掌握了一些做事的基本原则,懂得了踏踏实实做事,也不忘抬头看路的道理。也正是在这个阶段,我接触到了XRuby,找 到了自己的乐趣所在。”

郑晔希望自己在加入ThoughtWorks之后,进入到自己程序员生涯的第四个阶段,贡献阶段,用自己所学为别人带来更大的价值。软件开发不应该仅仅是自娱自乐,更应该是做一些真正对别人有价值的事情。(未完待续)
 

你可能感兴趣的:(ruby,编译器,jruby,thoughtworks,java,编程)