来源: 作者:51boo 发布时间:2007-01-10
相信很多人都听过一个禅宗故事,说是两个僧人赶路,趟过一条小河的时候,看到一个
漂亮的少妇困于其中,向他们呼救。其中一个有心施以援手,但想到佛家的色戒,便犹
豫起来,不知如何是好。可另一个和尚却大大咧咧地冲过去,抱起少妇,趟过小河。于
是前者的心里就很不舒服,一路上闷闷不语,后来实在忍不住,就问自己的同伴,既然
身为佛门中人,怎能不顾清规戒律,如此轻薄。然而那位和尚却回过头来,淡淡地说:
“我已经把她放下了,你还抱着呢?”
也许不太贴切,但是这几天中外豪杰们围绕Ruby和Rail爆发的口水战,让我不由得想起
这个小故事。
前几天著名大嘴Joel Spolsky在自己的一亩三分地里对Ruby进行了FUD性的攻击,引发互
联网上一片口水战,Ruby之父matz和Rails之父DHH都卷入其中。似乎是要与此相呼应,
在国内技术论坛上,这几天围绕Ruby的争论也突然攀登新高峰了。国外的大气候和国内
的小气候都有共同特点,就是站在传统技术立场上的人对于RoR的火爆看不下去了,首先
站出来发难,从而引发Ruby支持者们的回击,然后双方厮杀在一起,连带旁边相干不相
干的看热闹的、拉架的、含沙射影的、慷慨激昂的,瞬间就浩浩荡荡,横无际涯了。而
争论来争论去,无非还是Ruby的性能问题、可用性问题、前景问题,等等等等。
可能是老生常谈了,但倒R派的观点让我想起多年前我们这些C++ fans对Java的鄙视言
论。那个时候C++程序员们说,Java只能用来在页面上用applet作一些可笑的小动画,
Java只能对对火柴棍排序,Java慢得像牛车,Java有内存泄露,Java狂耗内存,Java愚
蠢的弱类型容器可以把鲸鱼装进一个笔筒,Java居然没有指针,Java做不了系统程序设
计,Java写不了操作系统,Java解决不了我手头的超超级复杂的巨牛无比的难题,诸如
此类,不一而足。冠冕堂皇的理由可以找出一大箩筐,但大皮袄下面无非就是一个
“私”字而已。骨子里的想法是,我费了好大的牛劲才混了个C++三品顶戴,你Java一闹
腾,就把我的似锦前程给搅黄了,怎能不妒火中烧,羞愤交加?
可是这些年过去了,当时我们吐那点酸水起了什么作用了吗?Java统治了企业计算,统
治了手机应用开发,统治了大学教育。不但如此,Java在开源领域里也如日中天,接
Eclipse之威在桌面应用中也占了一座大山头。一些传统上属于系统程序的项目,比如编
译器、语法分析器、高性能的服务器软件等等,也大量转用Java开发。不错,Java还是
不能用来写F-22战斗机的火控系统,但是这跟我们这些坐在cubic里写民用软件的家伙有
个鬼的关系!人们对于简单、标准化和生产率的要求不可阻遏地突破了早期对Java筑起
的FUD防线。面对Java的空前绝后的成功,我们这些当年曾经对革命力量翻白眼吐舌头的
家伙,在沉默的面对现实之后,已经完成了一次观念上的涤荡。我们已经认识到,技术
的发展趋势是不以个人利益为转移的,干这行就要有顺应技术大潮的勇气,要有不断破
旧立新的魄力。我觉得我已经放下了曾经有的那种盲目的固执和一厢情愿。
然而时间没过多久,随着Java成长和腾达起来的一代人(其实不少也就是我的同龄
人),又开始重蹈覆辙。面对以Ruby为代表的新兴动态语言的蓬勃发展,他们也有点坐
不住了。靠革命起家的人最怕革命,当年的下里巴人翻身做主了,摇身一变成阔佬了,
就开始对新的革命力量摆谱使脸色,甚至以FUD战术加以弹压了。与当年如出一辙,手段
还是以攻为守,情绪还是慷慨激昂,笔法还是义正言辞,什么Ruby未经验证啦,什么
Ruby性能低劣啦,什么Rails可扩展性不佳啦,什么Ruby不能解决“大型的”、“复杂
的”、“企业级的”、“高性能的”问题啦。最要命的是,哪怕自己90%的时间不过是在
字符串处理,这些阔佬们也还是一致宣称自己做着世界一流的、大型的、复杂的、企业
级的、非Java不可、没Java不行、没Java就要上吊抹脖子跳楼挖坑的巨牛无比的大项
目,听着让人心惊肉跳兼之无比崇敬。你说Java还能火几年?我说怎么也得5年!5年?
那是上升期!少说十年,后面还有平台期。你还别不服,反正我退休之前Java说什么也
别想凉下来,谁也别想威胁我的顶戴花翎。企业级啊,架构师啊,经验啊,高手啊,我
混成这样我容易吗我?谁冒出来我就跟谁急,我就用口水淹死他!
可惜,这些大话对于我这种记性不幸没那么差劲的人来说,太似曾相识了,让我一眼就
看出这言论背后的“私”字来。想来也真是轮回,当年我们C++这一批人放下的东西,原
来你们Java这一批人还抱着呢。不过,技术的大潮真的是后浪推前浪,往后看吧,我相
信,当年C++挡不住的东西,今天Java也挡不住。大趋势已经摆在这了,接不接受、什么
时候接受,那是个人的问题,但是总体的发展是无可逆转的。
Ruby的兴起,其实只不过是一个积累了几十年的技术趋势的能量释放。世界上第二个程
序设计语言Lisp及其后续家族成员都是最最动态的语言。早在七十年代,伴随着图形界
面的出现,Smalltalk就以其纯粹的面向对象和纯粹的动态性获得有识之士的认可。自
1986年代Perl出现以来,大量开发者就认识到,动态语言开发效率高,限制少,能够自
由的表达思想,轻松完成在传统语言中非常困难的工作。很多人都预言动态语言迟早会
成为主流。然而在整个1990年代,无论是计算机硬件条件还是软件工程的水平,都还不
够成熟,再加上Perl自身存在一些问题,动态语言始终只是作为主流语言的一种有力的
补充而存在。2000年之后,PHP大流行,在Web开发领域三分天下有其一。但是PHP本身完
全是为Web而做,当扩展到其他领域时,就凸显出先天不足的劣势,因此地主稳坐,霸业
难成。直到现在,无论是硬件条件、软件开发的方法,还是客观应用环境都逐渐成熟,
在这个时候,Ruby借Rails框架赢得广泛关注,当然不是偶然的现象。在TIOBE全球程序
设计语言排名表中,Ruby排名一年间跳升15位,而根据O’Reilly公司对于图书市场的统
计,Ruby相关书籍的销量在2005年增长15倍的基础之上,今年又增长了7倍,已经超过
Python和Perl。再看看是谁在关注Ruby,抛开一手把Ruby炒热的“Pragmatic
Programmer二人组”Dave Thomas和Andy Hunt不说,一大批编程老枪都在尝试或者已经
转向Ruby,这其中的著名人物包括Robert C. Martin、Martin Fowler、Bruce Tate等。
如果这些还不够令人印象深刻的话,我们应该注意一下近期有关Ruby的一些事件。最近
Sun雇用了开源项目JRuby的两名主要开发者,让他们可以全职开发JRuby,从而正式将
Ruby语言搬上JVM。同时,微软也在上个月的一次有关.NET语言的技术会议上邀请
RubyCLR的主要开发者John Lam发表演讲,外界传言他将加入IronPython开发者Jim
Hugunin所在的团队,从而加速Ruby for .NET的开发进程。另一个致力于Rich
Internet Application的软件巨头Adobe于几天前刚刚发布了用以将Flex 2.0整合到
Ruby on Rails中的SDK。对于那些整天盯着巨头们脸色行事的人来说,这些消息就算不
是金口玉言,至少也是明确的迹象了吧。
然而,比上面一切都更为重要的是,今天的世界已经变了,已经不是15年前C++统治一切
的那个世界,也不是10年前Java中彩票的那个世界,甚至也不是5年前Visual Basic狂练
葵花宝典的那个年代。互联网改变了太多的东西,经济形态和公司业务的形式和途径都
已经并且仍在发生迅速的、根本性的变化。开放、互联、敏捷、整合、平等、自由、高
速、专业,所有这些给我们带来了新的经济运行模式,也对软件的开发提出了新的要
求。Ruby,以及Ruby所代表的一类动态的、自由的程序设计语言和开发思想已经迎来了
它们的时代,它们将和其他的科技一起,在下一个轮回中改变我们的工作,改变我们的
生活,改变我们的观念,直到下下个轮回将它们扫进历史的功劳簿中为止。
所以,该放下的时候,就勇敢地放下吧。当然,如果想再跟发展大势打一打,那就打一
打,反正在技术进步的路上,保守的一方终究是要被解决的。