该帖已经被评为隐藏帖
|
|
---|---|
作者 | 正文 |
发表时间:2007-02-01
摘自CSDN http://community.csdn.net/Expert/topic/4893/4893315.xml?temp=.7034723 基于以下的这么一个原因,你也许不会在本文中读到Ruby on Rails的不好,那就是:我爱Ruby,我爱Ruby on Rails。在我开始学习Rails的第一天起,我就觉得Rails是构建在令人惊叹的语言上的一个奇异的框架。我认为David在以下两个方面做了一些奇异的事: 跟上创新的思维,把Web编程提高到一个新的高度。 没有人否认Ruby on Rails已经将Web编程世界作为了它的目标。 那Ruby on Rails会不会成为主流?我的答案是否定的,尽管它具有这么多好的品质。也许,正如你所猜到的,我对此的确信并不是来自于技术基础的考虑的。 实际上,一个成功的Web开发框架取得成功是许多因素一起作用而造成的,但是在我深入介绍这些因素之前,请允许我讲一个相关的故事。 你曾经遇到过Smalltalk或者Lisp的程序员吗?你知道,这些人不管你怎么告诉他们,他们总是回答“Smalltalk在二十年前就做过这些了”,或者说“没有任何东西被创造发明出来,直到Lisp的出现”。当你在和他们交谈的时候,他们总是用一种愉快的眼神礼貌地听你说,当你说完的时候他们会耸耸肩膀,不管你指出的东西,并善意的向你推荐一个三十年的老技术,这个技术是他们曾经学过的最后的东西,并且这个技术从那个时候就已经指出了他们所提供的所有的每个技术要点。 我相信从现在起的十年内,人们将会回忆起Ruby on Rails,并且会有相同的反应。我不能确定在十年以后我们将会有什么样的Web框架,但是我很确信的是现在的许多Ruby on Rails 的疯狂爱好者将会有同样的态度:“那样是很好的,可是Ruby on Rails 在十年前已经把这些做完了,并且做的更好。” 有趣的是,也许他们真的是对的。但是到那个时候,这将不再重要,不管它在技术上如何的出色,而Ruby on Rails可能也将只会是为专家们所知道的小范围使用的技术了。 那么为什么我认为Ruby on Rails永远都不会跨过这个裂口呢? 首先,Ruby 再一次:我爱Ruby,我真的热爱。它是过去几年里面很少的几个能够让我惊叹的语言之一,不管什么时候我读到一个我不曾知道的特性的时候,他会让我大叫“Yeah!”。我觉得它的语法和概念的十分的雅致,同时也非常强大。当然我并不是喜欢它的所有东西,但是Ruby是我现在所使用的所有语言中排在Java之后的第二位的语言,而第三位的却排的很远很远去了。但是它是一个复杂的语言,包含可许多高级的习惯用语,而这些习惯用语对于PHP和Visual Basic程序员却是很难理解的。 无可否认,PHP和Visual Basic是便宜的对象(我们谈论的是那些甚至没有命名空间的语言),但是不管是否喜欢它,他们都是Web标准。任何想在Web竞技场成功的人一定有一个令人瞩目的故事来告诉给这些程序员,告诉他们一些能够说服他们转换到Rails技术平台上的东西,并且要对于他们的管理来说也是一个轻松的事情。 如果没有这两个条件,Rails将不会成功的,并且我预测 Ruby和Ruby on Rails将总会很难出售给任何超过10个员工的组织机构的。 Ruby on Rails本身 Ruby on Rails只是太高级了。我是认真的。它具有难以置信的数量的灵巧特性,而这些特性都涉及到了许多的技巧(Ruby相关的或者由David他自己发明的)。对于有才能的开发者,这些特性的确是一个梦想的实现,MVC配线,scaffolding,默认配置,单元测试(甚至是现在的集成测试,非常棒!),凡是你能够想到的。David碰到过那些Web开发人员最近几年都一直在面对的问题,也体验过那些痛苦的时刻。Ruby on Rails本身就是一个伟大的例子,它展示了如何将我们在过去的五年中的所有关于软件开发的知识都包括进来了。 但是这对于协作开发的开发者来说,仍然是一个难以跨越的鸿沟。有些时候,太多的技巧本身就只是太多的技巧了,并且它很可能出现的情况是,代码流太直接或者太聪明而让一般的开发人员难以明白。开发人员能够从命令式编程转向面向对象编程, 但是那是一个艰苦的斗争。我不相信 Web世界已经准备好来拥抱Rails的明智。 仍然没有可靠的IDE 所有的动态语言的狂热者会迅速的指出说他们不需要使用IDE来使用Ruby,Phthon,Groovy或者其他的语言。并且他们会迅速的补充到说:“如果你需要一个IDE,那说明你还不够Ruby化或者Phthon化,并且你最好回到你原来使用的语言去,而不要管他们这些已经成熟的人。 这没有任何意义.可以忽略掉这些人,他们并不明白现实世界是怎么样运作的和开发人员是怎么样想的,并且他们也是为什么有这么多的伟大技术都不能成为主流技术的原因之一。永远都不要羞于去说需要一个IDE或者索要一个IDE。当然的,也有不好的方式来使用IDE的(例如,你希望它能够为你生成代码),但是如果你对Ruby on Rails感兴趣,机会就是你是一个有分寸的开发人员,并且你知道如何调整一个IDE来让你比在使用emacs的时候获得更高的生产效率。代码完成或者导航,测试,重构,项目管理,源控制集成等等。有太多的性能能够列出来,而如果你有这么一个工具能够具有这些性能,那它将会让你具有更高的生产率。 这是2006年, 不是1996年。每一天我们正在写的程序和我们正在解决的问题都是数量级的更加困难于那个时候,并且我们的工具需要能够保持跟上这样的需求。Emacs是一个很好的文本编辑器,但是不再能够满足现代的开发了。 过于狂热 朋友们应该也能看出我对这个话题有多么强烈的感觉。还好我还能比较冷静,但是Ruby on Rails的狂热用户们却对Ruby评论家和批评家的态度不是那么仁慈。有很多人会来说服你,他们说它已经找到了所有问题的最终答案,并且他们并不害怕让你知道。我对这些人只有一个建议:你也许是正确的,但是请谦逊一点。它永远不会受到伤害的。 个人思想的拥挤 如果你想用Ruby来写一个Web应用程序,只有一个解决方案。只有一个,Ruby on Rails. Ruby on Rails机会已经占领了使用Ruby的Web开发领域,我在想这究竟是不是一件好事呢?所有对于Java的赞扬都是因为你可以数出一大堆的Web框架来,这是被称之为的多元化和对更好的东西的不断追求。每一个框架都是构建在它之前所构造出来的优势之上,而把它之前的错误都丢弃了(当然也会引起一些它本身的错误)。每次这个领域会变得更好一些,然而却始终只能屈服于永恒的自然选择的法则。 我担心Ruby on Rails在Ruby世界中将会扮演Java世界中的JUnit的角色:在它被推出的时候还是一个伟大的工具,但是它却让它的开发社区进入了冰河世纪,在好几年中没有任何的创新和竞争的出现。不管Ruby的命运如何,我希望它的爱好者们能够保持清醒的头脑,并且愿意不断挑战Rails的方式,因为一个简单的原因,不断的质疑已经有的东西是一种很好的方式,并且不管已有的东西看起来是多么的好。 企业级的能力和可扩展性还不能确定 这是一个关于Rails并没有处理好的证据,他们立刻迅速的指出BaseCamp和其他的产品。到现在为止的问题是,应该有其他的明显的成功的Rails案例,并且不应该只有一个由Rails社区开发的例子。当然,这是一个鸡和蛋的问题:很多的公司都在Rails上衡量Ruby,但是只有当他们发现有其他的公司在他们之前已经采用了它,这些公司才会愿意跳过这一步。所以到现在,最缺的就是证据。 在最终被认可之前,Java也用了一段时间才达到了企业级挑战的需要的,并且它在超越这个挑战的时候尽管也存在大量的障碍例如很差的性能和受到质疑的规范。我认为只有当Ruby通过克服它自己的EJB2崩溃的问题,否则它将不会具有企业级的水平。 缺少从Internet供应商的支持 你会问这有什么大不了的? 毕竟Java也是基本不被Internet供应商支持的。两者最大的不同是在服务器端的Java的目标是面向企业级的。任何想要运行Java2EE 应用程序的人都会建立他们自己的服务器。 Ruby on Rails是面向不同群体的:“Web sites in-between”,这些站点并不是大规模的可扩展的,但是他们每天仍然有一些访问量的。许多的这类人使用外部托管,并且如果Rails不为他们提供本地的和预安装给他们的话,他们不会走的很远。PHP并不需要他们伤脑筋,因为实际上99%的Internet服务商都安装了的。 当然,一点点的访问技巧能够允许你运行你自己的Rails应用程序,不管你是否提供对它的支持,并且假定他们会给你所需要的酥油的权限并且你不需要让它具有太高的扩展性,但是即便当Ruby on Rails能够达到PHP的一半的穿透能力的时候,它将仍然不能够达到它成为主流所需要的人群。 请注意到,我没有说任何的关于频繁的错误报告,弱的国际化支持或者积极的记录,而这些领域是Ruby on Rails受到最多的批评的地方。我并不担心这些,因为这些正是Ruby还处在初期的一种表现。他们迟早会被修复的,并且我不认为这些会成为在Ruby in Rails为人们所接受的过程中的一个重要的角色。 我想说的你都看到了。我的关于Ruby on Rails的预计,很长的一段话。我很抱歉写的太长,一般的我都试图让我的文章能够显得短而精准。我只希望我至少达到了最后一个目标。 我将会以一个积极方式来总结:我希望我是错的。我真的希望能是这样。接下来的工作,我希望可以在Java和Ruby之间有一个选择,但是现在,当还在怀疑中的时候,我通常的是仍然回到Java来完成我个人的项目,这是基于以上列出的一些原因。 正如你所知道的,当框架和语言为我的商务活动而竞争的时候我会很乐意见到并选择一个我所喜欢的。但是现在,我还看不到竞争。 呵呵,我也希望elsjc (米格27) 的希望实现: ) 我喜欢Ruby, 喜欢这让人耳目一新的,web开发的突破 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-02-01
RoR恐怕也没想成为主流吧,很多情况下RoR是不适用的,而且现在RoR所依赖还不成熟,第三方类库太少了,而且BUG不断……
|
|
返回顶楼 | |
发表时间:2007-02-01
这篇文章的英文原文作者是testng(JUnit的替代性Java测试框架)的作者,针对他的博客,有过广泛的争论,DHH也有过回复,那就是rails为什么要成为主流?就像cookoo所说,如果主流的定义就是大规模团队做外包开发的话,rails还是不要成为主流比较好些。
|
|
返回顶楼 | |
发表时间:2007-02-01
隐藏吧,没什么意义的文章,在用的继续用,拒绝用的继续拒绝
|
|
返回顶楼 | |
发表时间:2007-02-01
为什么一定要争个你死我活呢?其实看看现在业界的变化。jdk 7 将会更好地支持dynamic language,允许你的应用既有java也有ruby或者python.而.net似乎正在往函数式语言的方向发展。我想以后的应用肯定是多种语言整合的或者多种思考方式融合的。
|
|
返回顶楼 | |
浏览 3722 次