透明思考


Transparent Thoughts


为什么Ruby on Rails不一样

一个客户正在考虑用Ruby on Rails做他们的项目,但是又有些顾虑。其中一个问题颇有意思。

4、网上搜索到的“初期入门,Ruby更容易,但一旦达到一定复杂度,那么Ruby的难度骤然加大。Python入门不容易,复杂的时候也不会太痛苦。rails有入门简单,深入难的问题。rails生成的目录是做什么用途?o/rmapping如何实现的?如何把数据从web中传递到数据库的。这些都是Ruby程序员早晚要面对的问题。Python则不会这样,如果搞不清楚这些,大概根本没办法开始。集成度太高的快速开发工具都有这个特点,无论是VB、Delphi,还是.net,有多少使用了半年以内的开发人员可以说清楚工程目录下面所有的文件的用途、每个文件中的语法?我相信很多很有经验的用户也未必说的清楚。”你们怎么看?

第一,每个称职的程序员都必须了解那些“窗帘背后”的东西。做不出东西,和做出东西却不知道是怎么做的,两者没有区别。从某个角度,我并不认为Rails“入门简单”,因为有很多魔法需要去了解。而且使用Rails的新手们需要更严格、更紧密的指导,他们需要和有经验的程序员结对,不然他们很容易迷失而找不到最好的(或者说,最符合惯例的)解决办法。Rails程序员的高产是以初期的严格训练换来的,经过了这样的训练之后他们对项目有清晰的了解并且对代码有审美能力,所以我看不出有什么理由会“难度骤然加大”。

第二,Rails和“VB、Delphi和.NET”的最大区别在于Rails不做代码生成。代码生成是邪恶的,如果你需要维护自动生成的代码的话。而Rails不做代码生成的一个重要原因是Ruby的表达力,它能够在运行时变那些“传统语言”用代码生成才能变的一些魔术。有多少人能弄清楚一个Rails项目里所有的犄角旮旯呢?很多人都可以。因为这里没有自动生成的难懂的代码,并且每件事情都有约定俗成的惯例。不仅是自己的项目,就算别人的项目也很容易弄懂的,大家都用同样的惯例做这些事。

另一个有趣的blog这样说Ruby on Rails的缺点:

1.Ruby由日本人创造的,尽管ROR是丹麦的小伙子David开发的

如果我没理解错的话,这话的意思大概就是“Ruby on Rails没有缺点”。当然我并不这么认为,不过我确实认为它是目前看来最舒服的一个工具。