郑晔今年五月份正式加入了ThoughtWorks,郑晔在自己的博客中是这样评价ThoughtWorks的,“在这里,你可以对很多事情发表看法,尽 管看起来与你的工作没什么关系,每个人都随和,相处起来十分舒服,这样一群人,真正做起工作来却是毫不含糊,大家决不会仅仅满足于交出一个仅仅可运行的版 本,不会交出满目疮痍的代码。需要帮助的话,只要把问题抛出来,只要有人懂,一定会毫不犹豫的过来帮忙。我们想要的是把事情做得更好,在技术上走得更远。 大家都放心大胆的走在技术的道路上。让我兴奋的是可以和一些高水平的人一起做有趣的事。可以收到来自Martin Fowler的邮件,可以和yawl、Charles和Ola Bini讨论了JRuby编译器的实现。让我得到更多的机会贡献自己的力量。”
对于现在这种状态的满意溢于言表。郑晔多年的计算机技术积累使他有足够的知识和能力参与到XRuby中,而最根本的还是他对于编程的热爱,编写代码,从来不曾分清过是郑晔的工作还是他的爱好,当然,他也不需要分清。
最近大家都特别看好Ruby的未来。郑晔认为Ruby不仅仅可以用在日常脚本或是Web应用上,它会得到越来越广泛的应用,会在越来越多程序员的日常开发 中扮演越来越重要的角色。现在,ThoughtWorks正尝试着让Ruby运用于企业开发,并且已经取得了不错的效果。最近的重点Mingle是一个敏 捷项目管理工具,也是用Ruby开发的。
“Ruby语言最吸引我的地方是它的优美。对于很多用惯了像C/C++、Java这种静态语言的人来说,初涉Ruby会有一种震撼的感觉,它会让那些我们 习以为常的繁琐操作变得异常简单,这也是开发效率大幅度提升的根本,这是许多动态语言的共同特征。随着计算机硬件的不断进步,机器的价值越来越低,人的价 值则越来越高,所以,提高开发效率对于从事软件开发的人来或组织来说,显得更加重要。再有,我们知道,程序设计语言是架设在问题领域和解领域之间的桥梁, 主流程序设计语言的进步就体现在越来越靠近问题领域,从汇编语言到C,再到C++,再到Java,无不如此。相比于很多静态语言,Ruby更接近问题领 域,所以,我们可以更多把自己的精力放在要解决的问题上。UML也是一种向问题领域靠近的方式,不过,在我看来,相对于这种使用于模型的方式,Ruby之 类动态语言更容易为程序员们所接受。还有很重要的一点,Ruby语言具有很强的元编程能力,这也是越来越多人关注的DSL(Domain Specific Language)的基础,通过适当的定制,可以让语言更加靠近问题领域,提升抽象层次。从实现角度来说,相对我所了解到其它动态语言来说,Ruby有一 个设计良好的对象模型,只要理解了这个对象模型,就很容易对Ruby语言进行整体上的把握。”郑晔还谈到“XRuby团队现在有大约十几个人的规模,经常 性提交代码的只有五六个人。开源项目不同于公司的项目,我们无法预测团队规模如何发展,加入到这个团队完全是依赖于个人对于开源的热情和对技术的热爱。我 们希望有更多的人加入这个项目中来,在这个过程中,可以体会到乐趣,还会有许多收获。这个团队欢迎任何贡献,鼓励任何尝试。我们一向欢迎任何对XRuby 有兴趣的人加入其中,和我们一起体会开发的乐趣。”
XRuby目前最新发布的版本是0.2.0,这可以说是一个里程碑式的版本,已经可以运行Ruby的单元测试框架。有了单元测试框架作为基础,就可以大大 提高开发效率,下一个里程碑版本0.3.0的目标就是通过所有Ruby自带的单元测试,而XRuby 1.0的目标是运行Ruby on Rails。XRuby所做的事情是整合Ruby和Java平台,这样,就可以将Ruby的开发效率和Java的丰富资源结合起来。
从这个角度来说,XRuby和JRuby团队拥有着共同的目标,所以,许多人认为这两个团队是互相竞争的。事实上,两个团队是在互相帮助。两个团队之间会 互给建议,分享经验。郑晔说在他和Ola Bini之间这种交流体现得最为明显,因为他们现在都是ThoughtWorker。
每个人都希望自己能够同高水平的人一起工作,郑晔也一样。能同一些高水平的人一起合作,感到很兴奋,因为有机会和他们一起合作,才有机会近距离观察他们思 考问题和处理问题的方式。代码可以轻松复制,但是代码背后隐藏的思想却不像代码本身那么显而易见。如果不是同这些高水平的人一起工作,很难发现背后隐藏的 点点滴滴,也正是这些点点滴滴才让这些人与众不同。
许多人眼中的高手,郑晔说其实他们也都是一些普通人,只是他们对自己所做的事情都很有激情,也能脚踏实地的把事情一点一点地做好。他们通常十分谦虚,不会 过分强调个人的工作,这使得大家的交流变得容易了许多,也有益于让事情向着最恰当的方式发展。这些人做事通常都有一定的美感。
“我很喜欢编程是一种艺术的说法,”郑晔说,好的程序员不会允许自己做的事情向着丑陋的方向发展,这是他们做事质量的一个重要保证,这种美感是在日常学习 工作生活中不断的思考逐渐养成的。这些人通常思路会比较开放,他们会非常包容的看待一些问题,吸纳别人的优点,不会将一些非技术的界限看得非常清楚。做为 一个技术人员应该很清楚,我们做出选择的依据是技术。开源项目是无国界的,它的生命力是由它自身的优点和其参与者的热情所决定的。
郑晔谈到从大学时代开始,软件开发中有三个领域一直是他所希望有机会从事的,分别是操作系统、编译器和游戏。想把任何一个做好,都需要对计算机有着深刻的 理解,作为一个程序员,像操作系统和编译器的这些知识虽然很少能够直接应用到工作中,但懂得了它们的基本原理,可以让人写起程序来如虎添翼。郑晔对编译器 尤其有好感,理解程序设计语言背后的东西,是郑晔能够写出好程序的根源。
说到编译器,大家会想到词法分析、语法分析、代码生成等等这些令人望而却步的词汇。其实,做一个简单的编译器并不难,不过,从参与XRuby的经验来看, 编译器只是整个开发中的一环,后面的Runtime和数量庞大的builtin占了相当大的比重,它们是让语言更具生命力的部分。
同普通的软件一样,编译器的开发首先要弄清楚需求。很多人谈到编译器,就会想到设计一种新的程序设计语言,其实,这个世界最不需要的就是一种新的程序设计 语言,当然,这并不能阻挡很多人去设计新的语言。我看到过一些号称很有热情的软件开发者,设计了一些声称全新的语言,实际上,却没有很强的针对性,所以, 这些语言注定没有很强的生命力。从需求的角度来说,XRuby既不是第一个在做JVM上做编译器的动态语言,也不是第一个在JVM上做Ruby的,但它做 了JVM上的Ruby编译器,这是之前没有人做过的,独一无二的,也是它的价值所在。 (全文完)