听说Ruby 性能不好,为什么还有这么多人推荐 Ruby

Python011

听说Ruby 性能不好,为什么还有这么多人推荐 Ruby,第1张

借用《Programming Ruby》推荐序中的一段话来回答你吧(顺便也推荐一下这本书):事实上,执行性能与开发效率是软件开发中的一对矛盾,所有的程序设计语言都必须面对这个矛盾,作出自己的选择。 在当时,大多数新语言的选择是上下通吃。它们一方面提供了丰富多彩的高级抽象,另一方面又提供了强有力的底层操作能力,希望由此实现高性能与高效率的统一。C++、Java、C#和Delphi都是走的这条路线,甚至VB从5.0开始也强化了底层操作机制,并提供了编译模型,不落人后。 Ruby实现了最纯粹意义上的面向对象,让Smalltalk、Perl和Lisp的灵魂在新的躯壳里高歌。相比于Python,Ruby的思想更加清晰一致,形式更加灵活;相比于Perl,Ruby更简单质朴,绝少光怪陆离之举;相比于Smalltalk和Lisp,Ruby更富有现代感和实干气质;相比于庙堂之上的“工业语言”,Ruby自由挥洒、轻快锐利;而相比于JavaScript和PHP,Ruby从Smalltalk继承而来的深厚底蕴又大占优势。面对执行性能与开发效率的谜题,Ruby毫不犹豫地选择了开发效率,选择了对人脑的友好。

尽管如此,有时候语言本身的差异未必能在一个具体程序里体现出来,比如一个XML流解析程序,用各种脚本语言来做,不应该有太多性能差异,原因是各种脚本语言底层的XML解析库,实际都是C写的实现,最终的parser很可能是libxml;这样一来,语言本身更多是一个wrapper,实际跑的核心代码是C code;所以性能的问题,失去了具体场景单讨论语言本身未必有多大意义,还得看项目本身对语言的使用情况。ruby开发的程序员成本真的比其他语言比如python,php更低吗?一个熟练ruby程序员和一个熟练python程序员再一个熟练php程序员开发同一组web功能,各自选择熟练的框架,ruby程序员所使用的man hour一定最低吗?我表示怀疑,在熟练的情况下,遵照MVC的原则进行开发,PHP和python本身的开发效率不认为一定低于RoR;原因是现代的开发框架,设计理念上都是你中有我,我中有你;比如就ORM来说,PHP, Python都有成熟的实现,routing,templating这种必须的piece,所有的框架都设计得足够好,很难说任何一个超越其余的一个层次;花多少man hour来实现一个项目,团队熟练程度决定大部分,语言本身和框架本身的边际效用,不一定有想像的那么大。另外,我觉得ruby不是好学的语言,至少不比python更好学,比php我觉得要难学得多;概念多,选择多,对学习者的干扰也多;这个因素应该已经被一些公司和团队意识到了,国内把ruby作为主项目语言的,或者乐意做这种切换的,也只是局限在一个很小的圈子里,真正要考量的时候,PHP或者java是更实际的选择;个人觉得有两个方面ruby很特别开放的Object系统,所有的对象(包括“类”对象)都可以在runtime修改扩充,这让在ruby下做一些事成为自然的可能,而在其他语言则不得不做各种work around;ruby的OO可元编程能力特别强大;ruby的括号是可选的,虽然这看起来只像个语法糖,但要写DSL的时候,ruby可能是最最自然的语言openfreezerliftelephantputelephantintofreezershutfreezer这样极致的可读可懂性,别的语言很难做到不露痕迹。事实上Rake就是一组DSL,RoR的ActiveRecord是一个DSL实现;Sinatra的API也是一组DSL;很多templating language也被实现成DSL;