回 帖 发 新 帖 刷新版面

主题:[转帖]动态语言,别再说不 -- 孟岩 (Ruby)

相信很多人都听过一个禅宗故事,说是两个僧人赶路,趟过一条小河的时候,看到一个漂亮的少妇困于其中,向他们呼救。其中一个有心施以援手,但想到佛家的色戒,便犹豫起来,不知如何是好。可另一个和尚却大大咧咧地冲过去,抱起少妇,趟过小河。于是前者的心里就很不舒服,一路上闷闷不语,后来实在忍不住,就问自己的同伴,既然身为佛门中人,怎能不顾清规戒律,如此轻薄。然而那位和尚却回过头来,淡淡地说:“我已经把她放下了,你还抱着呢?”

也许不太贴切,但是这几天中外豪杰们围绕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所代表的一类动态的、自由的程序设计语言和开发思想已经迎来了它们的时代,它们将和其他的科技一起,在下一个轮回中改变我们的工作,改变我们的生活,改变我们的观念,直到下下个轮回将它们扫进历史的功劳簿中为止。

所以,该放下的时候,就勇敢地放下吧。当然,如果想再跟发展大势打一打,那就打一打,反正在技术进步的路上,保守的一方终究是要被解决的。

回复列表 (共19个回复)

11 楼

存在,即是合理。

12 楼

c++,java,.net,动态,什么类,乱七八糟的,类不类呀,花样翻新,曾出不穷,怎么闹腾还不就是0与1,能跑得出去吗?有条件语句足矣,有C足矣。
  看5楼格子裙的贴有感而发,C!!再让我日你500年!!!C确实可以防老。

13 楼

Ruby的一些特性是非常出色的,很有Lisp的味道。

Justforfun了解函数语言(Functional Language)不?

14 楼

无知者的无谓和无耻归根结底是无知者的无知导致的狭隘造成的。

这种没有意思的争论就像当年VC 和 VB之争一样。真正精通两者技术的人更本不削参与这种帮派争斗。

狭隘,自大,总觉得自己的就是最好的。其他“下三烂的货色”不削一顾。

15 楼

都是装腔作势的人。
其实语言之争的答案很简单。市场细化而已。
拿刀作比喻的话。。杀鸡的时候请用菜刀,杀牛的时候请用牛刀,修脚的时候前面那些刀都不好使了,请用修脚刀,同样剪指甲的时候还是指甲刀好,动手术的时候,千万要用消过毒的手术刀。当然,动手术是个精细活,光一个手术刀不行,手术刀还分了好多种什么皮片刀、柳叶刀、铲刀。。不一而足,还有各式的钳,各式的钩。。针。。剪。。。
说白了,还是不够专业。

16 楼

孟岩现在也就是个御用枪手罢了。技术有多高不知道,但是已经没有了贞操了。

17 楼

这种问题我认为应该抛开技术理念
推动科技发展得核心原动力是什么?
经济利益得驱动!!!
java,Ruby的存在和流行和其对经济的重要推动十分不开的。
企业的愿望是什么?低投入,高产出,资金周转周期短。
java恰恰符合企业的愿望
我不知道Ruby是否会取得统治地位
但我知道动态语言一定是以后的主流

18 楼

只要自己喜欢就行了,什么合适就用什么,如果出来个“新”东西就疯狂追捧,会把自己搞得很累,而且如果什么都是三斧子半功夫,岂不是到头来什么都不会?至少我不会这山望着那山高。

世界如此精彩正是因为各不相同,我们不能指望天空是一种颜色,那样太单调也太不公平!Ruby和Rail我都不懂,也许将来一辈子也不需要懂,也许明天就必须学习他,看实际需要吧。

我习惯用C++,如果老板规定我必须用Java做项目,我当然用Java,如果没有这个要求我可能还是用C++,如果老板规定我用C#做项目,我当然用C#,否则我可能还是用C++。

19 楼

ouhps

我来回复

您尚未登录,请登录后再回复。点此登录或注册