热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开源Web框架PHP与Rubyon到底哪个优秀

PHP与RubyonRails两大阵营均拥有大量各自的忠实粉丝。拿两者作比较,本身就是难以取舍。无论谁赢了,都会引来对方粉丝的口水
  • PHP与Ruby on Rails两大阵营均拥有大量各自的忠实粉丝。拿两者作比较,本身就是难以取舍。无论谁赢了,都会引来对方粉丝的口水。受此影响,在两者选其一这个问题上,开发者通常会显得犹豫不决。这篇文章的出发点虽然是比较,但并不是一边倒式地唱盛唱衰,而是辩证式的综合对比。没有好坏,适合自己的才是最好的。

    实际上,拿PHP与Ruby on Rails比较是个伪命题,是不公平的。相比于Ruby on Rails语言加框架的完整性,PHP仅是一门编程语言。你看,PHP已经输在起跑线上了。但PHP拥有四两拨千斤式的轻巧与灵活,这就意味着它消耗极少的内存资源,性能卓越。另一方面,PHP社区是成熟的、稳定的,各种PHP扩展插件与工具包百花齐放,百家争鸣。如此看来,PHP又扳回了一成。

    PHP具有性能高、插件多的优势,并不意味着它没有缺点。PHP语法源自脚本风格,却加入面向对象特性,这种画虎不成反类犬的不伦不类,饱受诟病。这也许可以成为Ruby on Rails粉丝攻击的软肋。另一方面,如前所述,PHP作为单一编程语言,不具备Ruby on Rails的框架特性。这就意味着,除非借助插件与工具,单靠PHP从零开始开发应用程序,需要非常高的编程成本。比如,为取得与数据库的连接,你不得不从头开始写一个数据库连接器API。但有时候,缺点其实也是优点。不同于Ruby on Rails,受限于自身的框架,PHP则可以灵活自如的选择成熟稳定的第三方插件与工具。这就好比说,单身的同志也大可不必太羡慕成双成对的鸳鸯,因为没有选择往往意味更多的选择。不同的是,爱情鼓励专一,而“脚踏几只船”是PHP的卖点,开发人员可以同时选择不同的框架,实现与各种单一功能特性的最佳匹配。在这一点上,对于没有选择的Ruby on Rails来说,只有羡慕的份儿了。正因如此,相对于PHP开放性地支持第三方插件而言,Ruby on Rails天生的封闭特性,无可避免地要面临性能换取功能的挑战。每当遇到无法满足业务程序需求的时候,就意味着Ruby on Rails需要更多的研发成本投入。这绝对是一大利空。

    刚才强调了PHP的很多优势,如果就此打住,相信会招来Ruby on Rails粉丝的无数口水。是时候该替这个后起之秀说说话了。Ruby on Rails作为一个框架,是专为Ruby这门编程语言设计的。Ruby的设计理念很清晰,就是完全的面向对象,语法非常紧凑,清晰,代价是损失一定的灵活性。从编程语言的性能对比来看,Ruby通常会比PHP慢,耗用更多内存。不过,Rails框架能帮助Ruby快速开发出Web应用程序,算是一种弥补吧。这是一个典型的功能换性能的例子。作为一个Web框架,Rails具有许多非常多非常棒的特性。比如,Rails的ActiveRecord特性能支持数据库表记录与Ruby对象的映射,带来的好处是,Rails帮助开发人员隐藏繁琐的SQL细节,直接使用Ruby就轻松实现对数据库的增删改查。换句话说,Ruby开发人员无需依赖SQL,照样玩转数据库。另外,Rails支持很多的HTML特性,比如HTML代码生成器,session机制等,可以更加轻松便捷地构建Web应用。这也觉得是一大利好。

    Rails众多强大的特性,从另一个角度来说,也是一个弊病。比如,Rails虽然屏蔽SQL,同时也意味着Ruby开发人员失去了直接操控SQL的机会。功能多也未必全是需要的。这样看来,鱼和熊掌,真是不可兼得。

    说了这么多,到底谁赢谁输呢?还是那句话,没有谁好谁坏,只有谁更适合。选择自己熟悉的领域始终是没错的。从个人的感觉来说,还是偏好PHP。第一,PHP先入为主,大量的网站采用的都是PHP,尤其是论坛。起码PHP提供的工作机会更多一些吧。第二,Rails提供的很多特性,其实PHP都具备,重复发明轮子是不鼓励、不推荐的。最后,PHP是轻巧、灵活的,快速的,很符合乒乓球式的小、快、灵特点。如果不需要框架的辅助,PHP本身其实就够了,如果需要,以此提高开发效率,也很容易集成现有各种成熟、稳定的插件与工具。基于这三点,即便Ruby on Rails具有很多优点,个人还是把奖颁给了PHP。


  • 推荐阅读
    • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
    • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
    • 高质量SQL书写的30条建议
      本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
    • gitlab重置password
      ruby没怎么学,自己搭建的gitlab的rootpassword又忘了。幸好看见此帖子,试验okhttp:roland.kierkels.netgitreset-your-git ... [详细]
    • Allegro总结:1.防焊层(SolderMask):又称绿油层,PCB非布线层,用于制成丝网印板,将不需要焊接的地方涂上防焊剂.在防焊层上预留的焊盘大小要比实际的焊盘大一些,其差值一般 ... [详细]
    • 导读:在编程的世界里,语言纷繁多样,而大部分真正广泛流行的语言并不是那些学术界的产物,而是在通过自由发挥设计出来的。和那些 ... [详细]
    • Monkey《大话移动——Android与iOS应用测试指南》的预购信息发布啦!
      Monkey《大话移动——Android与iOS应用测试指南》的预购信息已经发布,可以在京东和当当网进行预购。感谢几位大牛给出的书评,并呼吁大家的支持。明天京东的链接也将发布。 ... [详细]
    • Oracle Database 10g许可授予信息及高级功能详解
      本文介绍了Oracle Database 10g许可授予信息及其中的高级功能,包括数据库优化数据包、SQL访问指导、SQL优化指导、SQL优化集和重组对象。同时提供了详细说明,指导用户在Oracle Database 10g中如何使用这些功能。 ... [详细]
    • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
    • Oracle分析函数first_value()和last_value()的用法及原理
      本文介绍了Oracle分析函数first_value()和last_value()的用法和原理,以及在查询销售记录日期和部门中的应用。通过示例和解释,详细说明了first_value()和last_value()的功能和不同之处。同时,对于last_value()的结果出现不一样的情况进行了解释,并提供了理解last_value()默认统计范围的方法。该文对于使用Oracle分析函数的开发人员和数据库管理员具有参考价值。 ... [详细]
    • 本文详细介绍了在ASP.NET中获取插入记录的ID的几种方法,包括使用SCOPE_IDENTITY()和IDENT_CURRENT()函数,以及通过ExecuteReader方法执行SQL语句获取ID的步骤。同时,还提供了使用这些方法的示例代码和注意事项。对于需要获取表中最后一个插入操作所产生的ID或马上使用刚插入的新记录ID的开发者来说,本文提供了一些有用的技巧和建议。 ... [详细]
    • Whatsthedifferencebetweento_aandto_ary?to_a和to_ary有什么区别? ... [详细]
    • 开发笔记:Python之路第一篇:初识Python
      篇首语:本文由编程笔记#小编为大家整理,主要介绍了Python之路第一篇:初识Python相关的知识,希望对你有一定的参考价值。Python简介& ... [详细]
    • POCOCLibraies属于功能广泛、轻量级别的开源框架库,它拥有媲美Boost库的功能以及较小的体积广泛应用在物联网平台、工业自动化等领域。POCOCLibrai ... [详细]
    • 1、概述首先和大家一起回顾一下Java消息服务,在我之前的博客《Java消息队列-JMS概述》中,我为大家分析了:然后在另一篇博客《Java消息队列-ActiveMq实战》中 ... [详细]
    author-avatar
    兜兜岁月真伟大
    这个家伙很懒,什么也没留下!
    PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有