InfoQ

InfoQ

新闻

我的书签

登录注册 以永久保存书签。

该内容已经被标记书签!

标记书签错误,请重试!

观点:Rails还是PHP?适合才是最好

作者 高昂 发布于 2007年9月28日

领域
架构 & 设计,
语言 & 开发
主题
Web框架 ,
故事和案例分析 ,
Ruby on Rails ,
Ruby
标签
Rails ,
案例研究

随着大举进军Rails号角的吹响,Rails成为Web 2.0中小型站点开发的框架新宠。一夜间rails与敏捷开发的思想逐步深入人心,在这个技术浪潮中涌现出的成功站点也不在少数。然而,Derek Sivers最近在O’Reilly站点上发表的一篇名为两年RoR开发付之东流,重返PHP的七大理由的文章,激起了rails开发者们强烈的反响。

Derek Sivers是CD Baby以及HostBaby的创建者,自CD Baby站点于1998年创建以来,经历了数次代码重写,从最初的HTML到之后的PHP,两年前Derek又将站点用rails重写,而如今又重新回归到PHP语言上来。缘何如此?Derek在文中写道:

2005年1月份,我在O’Reilly的Blog上撰文宣布,将放弃cdbaby.com站点原先十万行杂乱的PHP代码,并准备从头开始使用Rails将站点的代码重写。于是我雇用了当时最好的Rails程序员,开始着手这个庞大的计划...最初的几个月进展非常顺利,但是在后续的开发过程中,需求开始与Rails实现显得有些冲突,并且使项目陷入窘境,有时我不得不问自己放弃原先的计划而使用Rails是否真是值得的...两年之后,我们在rails开发上经历了各种挫折,最终发现总共才完成了期望工作量的一半。

Derek一直在思考这个问题“有没有什么是Rails能做而PHP做不到的?”答案是否定的,于是Derek决定摒弃两年来使用Rails编写的代码,重新使用一直熟悉的PHP来将网站全部重写。Derek在文中写道:

仅仅用了两个月,只有我一人进行开发,并且没有使用任何框架,仅是在vi编辑器之下,使用PHP重新编写了CD Baby整站的代码,而且效果出乎意料的好。这应该是我写出过最好的PHP代码,完全遵循MVCDRY(Don't Repeat Yourself)的准则,这些获益应归功于使用Rails开发过程中得到的经验和智慧。

Derek进而总结了从Rails转回到PHP的七个原因:

  • 有什么是Rails能做而PHP做不到的?...没有;
  • 我们整个公司的Web代码都是用PHP写成的,请别忽视应用间的整合问题;
  • 别要你不需要的额外功能;
  • PHP小巧而快速;
  • PHP代码完全按照我自己的方式运作;
  • 我喜欢直接使用SQL;
  • 语言就像女朋友:你觉得新的更好那是因为你有了进步。

当然,Derek并没有否定Rails框架的好处,并总结了Rails为开发者带来的益处,当然更重要的是Rails经验为开发者带来的对问题看法的转变和技术的提高等。这些Rails的益处包括:

  • 通过Active Record将数据封装在模型类中,通过接口向Web应用提供数据,符合Martin Fowler提出的Active Record模式思想;
  • 具备自动加载(__autoload)机制;
  • 真正的MVC分层设计;
  • 所有的HTML代码来自于抢有力的模板机制;
  • 极度简化的代码量。

Rails与PHP是面向敏捷Web开发的两种主要语言。针对两者在Web开发领域中的关系,JavaEye的站长robbin也曾做出过这样的评价

根据我的观察,其实现在互联网应用,PHP仍然是当仁不让的第一开发语言,占据了最大的市场份额。这是有内在的原因的,因为PHP超级简单易用,是当前 web开发技术当中,学习起来最快的了。有点编程基础的人,学习一天,第二天就可以干活了。对于互联网开发来说,速度是第一重要的事情,拖拖拉拉做不出来网站,机会就永远丧失掉了,对于熟练的开发人员来说,RoR可以提供比PHP还要快的开发速度,这就注定RoR肯定会流行。

在一篇名为“漫谈rails与php”的帖子中,从框架和语言、MVC、ORM以及各自优缺点等各方面都做了评论,axgle在结尾处这样写道

我想说的是php将继续发展下去,已经发布了的php5以及正在发展中的php6也将有一些新的特性加入。而rails也在不断发展中。我相信rails和php一道,都有各自的一席之地。

其实,语言或开发框架相关的争论并不鲜见,然而争论的最终结果往往是选择合适的语言或框架才是最正确的。在接触新技术的初期,不能仅靠对技术的热情而对不熟悉的领域主观臆断,因事先估计不足而使得结果事与愿违。程序的编写不仅要靠设计良好的语言和框架,靠经验的积累和技巧的沉淀有时才是最重要的。

高昂 是IEEE-CS、CCF会员,博士研究生,关注开源软件发展与进步。

资产还是包袱 发表人 liu ozzzzzz 发表于
里面是不是也有作者的Cdbaby.com团队更熟悉PHP的原因? 发表人 霍 泰稳 发表于
Re: 里面是不是也有作者的Cdbaby.com团队更熟悉PHP的原因? 发表人 田 乐 发表于
  1. 返回顶部

    资产还是包袱

    发表人 liu ozzzzzz

    如果没有前面的遗留系统,使用ROR无疑是最佳选择。而一旦要同遗留系统做整合,就需要考虑很多了。这里与其说是技术的选择,不如说是财务的选择。

  2. 返回顶部

    里面是不是也有作者的Cdbaby.com团队更熟悉PHP的原因?

    发表人 霍 泰稳

    就像我们在一个系统里面要引入一个新的开发方法一样,要遇到很多困难,在遇到困难的时候通常会想到原来方法的诸多好处,然后自然不自然就转到原来的老路上去了,然后说新方法的缺点?我想Cdbaby.com对PHP较Rails更加熟悉。

  3. 返回顶部

    Re: 里面是不是也有作者的Cdbaby.com团队更熟悉PHP的原因?

    发表人 田 乐

    我看CDBaby的这个老大还真是喜欢在语言之间切来切去呀。PHP的单元测试不好做,重够就麻烦。原先他需要重够,束手无策选择了Rails。等自己的思路清晰了再用PHP重写,也可以理解,因为他对PHP掌握更多嘛。
    不知道这位老大之前说过的Ferret问题是否是他选择PHP的原因呢?Ferret这个不兼容Lucene的索引估计不少人都烦……他的网站其实选择Solr比较合适。估计没有看到,出手早了。没准什么时候他又杀回Rails了呢^__^

深度内容

大规模视频网站的计费与流量管理

本次分享将会就大规模视频网站的计费与流量管理这个话题,从操作层面细细进行讲解和分析,为系统工程师们揭示平日里我们没有关心的另一些内容。同时也希望本次分享能揭示行业中的一些“潜规则”,让互联网行业的流量与带宽管理更为开放与简洁。
本次演讲视频录制于QCon杭州2011

专访Jeffery Richter:Windows 8是微软的重中之重

Jeffery Richter以其多本Windows核心技术的经典著作而闻名,同时,他深入掌握微软的.NET等一系列核心技术,2012年1月,Jeffery Richter在北京接受了InfoQ中文站的专访,谈到Windows 8和WinRT编程,并就异步编程、Windows编程中的可扩展性、性能和安全性方面给出自己的建议。

应用云平台的可用性——从新浪SAE看云平台设计

云计算平台的可用性,相比传统互联网服务而言,更加复杂和困难,也更具有挑战性。本文借助新浪SAE云平台为读者讲述了云平台可用性的定义、如何打造高可用的平台,以及对云计算的用户提出了建议。

JVM定制改进 @ 淘宝

淘宝高度重视Java平台的健康发展,组建了一个团队专注于Java平台的底层部分的性能、功能与稳定性改进;工作主要基于OpenJDK中的HotSpot VM开展,其中一些通用的功能随后也会逐渐反馈给OpenJDK社区。希望能与使用Java平台开发应用的大家交流经验。
本次演讲视频录制于QCon杭州2011

"伤得起"的云计算应用——对云端应用之架构的思考

2011年4月21日至22日是值得云计算从业者纪念的日子。Amazon的IaaS服务出现故障,导致许多商业网站的服务中断,影响非常严重。作为云计算用户,我们需要思考的是,如何保证即便在云服务不可用的情况,我们的应用架构仍然能够屹立不倒?本文正是站在云计算用户的角度试图探讨这一问题。

让交付的速度跟上思考的速度

12人的技术团队,4组刀片服务器,每月20亿的访问量,每日1次准时部署,99.9%的可用性。这可能吗?当然。想知道如何做的吗?百姓网将与您分享他们在DevOps实践过程中的经验和技巧。
本次演讲视频录制于QCon杭州2011

架构之路——穿行在产品和业务之间

篱笆作为一家起源于社区的电子商务公司,反映到技术层面就是同时要面对产品和业务,以及经营战略的变化调整。如何在产品和业务的夹缝之间完成技术架构的抽象与平衡,寻找更有效的价值定位,这当中有些经验教训和个人感悟愿与众人分享。
本次演讲视频录制于QCon杭州2011

特性注入:成功三部曲

本文将对特性注入以及相关方法做一个扫盲性的介绍。我们会解释这个框架的关键要素,并附上实例来证实它们。为了让文章保持相对较短,我们不会深入到某个工具或方法中,而是会给出一些参考资料,以便大家做进一步的研究。