当前位置:首页 » 网站技术 » 经验之谈

软件开发不应该自娱自乐 要做有用的东西

...

  郑晔,是一个热爱编程的程序员。(网络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为人诟病大多也是因为性能的原因。

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

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

  郑晔今年五月份正式加入了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编译器,这是之前没有人做过的,独一无二的,也是它的价值所在。

继续阅读
员工卸载杀毒软件导致公司损失11万被告
大连天地软件园工程正式启动 投资150亿元
2007微型软件公司(Micro ISV)
流氓软件案很棒小秘书终审败诉
卡巴斯基:杀毒软件收钱不会超过2年
Google发布在线演示应用软件
趋势科技张伟钦:中国是杀毒软件商的完美市场
北京市软件业规模全国居首
金山软件预计募资最多达7.67亿港元
发表评论

昵称:
最新评论
暂时没有评论!