wes0 2006-11-12
原文来自:
http://blog.thinkphp.de/archives/170-Keynote-of-Tim-Bray-some-interesting-comparison-between-PHP,-Rails-and-Java.html
觉得很有趣。首先有趣的是作者的身份,TimBray是sun公司负责web技术的主管,但是在比较中丝毫看不出作者对Java偏袒;其次是作者的结论,正如在回帖中有人提及的那样,“Java赢在开发工具,却输在开发效率”。这可真有是个绝妙的讽刺!第三点是这个贴子在原出处和TSS上都得到了激烈的讨论。看来随着RoR的出现和逐渐成熟,一次类似当年Java出现时的语言优劣的争执又将无可避免的上演了。
我们自己应该以一个什么样的态度来迎接这次变革呢?其实归根结底,希望用某种编程语言来大幅度的降低软件开发的复杂度是不切实际的。动态语言在灵活性、初期的开发效率(之所以强调初期,因为个人认为动态语言的灵活性在提高开发效率的同时会弱化采用工具或者其他控制手段保证代码质量的可能。)有着先天的优势;但是像Java或者C#这样强类型的准静态语言(Java和C#都已经并且将越来越多的加入很多有意义的动态语言的特征,比如Java6对脚本语言的支持)在实现复杂的业务逻辑、开发大型商业系统、以及那些生命周期很长的应用中也有着非常强的优势。
记得七八年前,自己开始从一个C++的熟练使用者向Java语言迁移时,刚开始的确对Java语言的简单(比起C++要命的灵活性)很欣赏,因为在一个大型项目里最重要的是代码的健壮性。但是随着Java的越来越成熟,使得Java越来越复杂,而且和Java相关的很多概念也越来越超越Java语言本身。这无疑大大的增加了学习Java的成本。
再来看RoR,的确非常轻盈和简单。这得益于它对动态语言和OO特性的完美结合。但是个人认为纯粹技术上的优雅不一定会换来商业上的成功。对于软件工业来说,最重要的还是分解业务逻辑的复杂度和不确定性。毕竟,正如我的一个同事所说的那样,“无论用任何语言,初期的开发成本我们还是投入的起的。”呵呵,据他说,他经历的项目在初期的开发上占的成本大概只占到整个项目开发成本的1/6到1/5。
注:初期开发成本,是指一个项目中,最初完成开发人员视角的系统功能时所花费的成本。