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

Python010

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

尽管如此,有时候语言本身的差异未必能在一个具体程序里体现出来,比如一个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;

Ruby 是一个源自于日本的程式语言,并且由于 Ruby on Rails 这套便于快速开发网页应用程式的框架而在近年走红,如果你从事网页相关开发工作,我想大概已经听过 Ruby on Rails 这套网页框架,但或许你分不太出来 Ruby 以及 Rails 的差别,以及 Ruby 除了 Rails 之外、还能用来做些什么?

与其他常见的程式语言相比,Ruby 具备了更有弹性的语法,在 Ruby 的哲学当中,通常要完成某个行为不一定只有一种方法,往往会有数种不同的方法让开发者选择。也因为这样的弹性,通常开发者会透过 Ruby 设计「特定领域语言」(Domain Specific Lanauge)来解决问题,有点像是我们平常讲的是中文、但是会透过中文定义一组针对「法律」相关问题的「法律语言」。

Ruby on Rails

不过当然,Ruby on Rails 还是多数人接触 Ruby 语言的主要原因,同样使用 DSL 的设计概念,Rails 标榜著以下两个设计哲学:

1. 惯例大于设定(convention over configuration),在多数的情况下都使用 Rails 预设的设定,而减少手动去指定各项参数

2. 不重复(Don’t repeat yourself),尽量减少重复的程式码复制贴上到各处,而用比较有架构、组织的方式重用

在开发上速度很快,加上 Rails DSL 的语法相当简易,透过Rails Girls 这样的新手教学活动,几乎在一天之内就可以做出简单的网站。也因此很多人甚至常常开玩笑说会写 Rails 不见得会写 Ruby。

说了这么多,作为一个长期的社群参与者以及 Ruby 语言的使用者,在今年当中我观察到很多迹象,都显示目前是大家尚未入门要学习的好时机。主要原因有三个:

广泛地被大小企业采用

以前提到 Ruby 或 Rails 的使用状况往往我们会想到的都是新创或网路公司的例子,但近年来越来越多传统企业在面对网应用路开发需求时,也纷纷选择 Rails 作为主要架构,像是在国内的部分,我们可以发现在社群的求职看板上,包含知名连锁书局、纺织业等等的例子。

Ruby 以及 Rails 的效能有很大的进步

以往通常 Rails 开发者都会被其他语言的开发者嘲笑在速度上可能不佳,但在近期的改版当中,Ruby 2.1 以及 Rails 4.1 都有很大的效能进步,是有史以来最快的版本。

社群以及教育资源遍地开花