AI 年度盘点与2025发展趋势展望,50+案例解析亮相AICon 了解详情
写点什么

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

  • 2007-09-28
  • 本文字数:1622 字

    阅读完需:约 5 分钟

随着大举进军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 代码,完全遵循 MVC DRY (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 一道,都有各自的一席之地。

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

2007-09-28 20:342759
用户头像

发布了 74 篇内容, 共 12.2 次阅读, 收获喜欢 3 次。

关注

评论

发布
暂无评论
发现更多内容

2022年6月中国数据库排行榜:TiDB卷土重来摘桂冠,达梦蛰伏五月夺探花

墨天轮

数据库 TiDB 国产数据库 polarDB KingBase

为你推荐一款高效的IO组件——okio

HarmonyOS开发者

HarmonyOS

【云计算】多云管理平台和公有云两者之间是啥关系?

行云管家

云计算 公有云 私有云 多云管理平台 云管理

【大咖秀】博睿数据眼中的AIOps,选择正确的赛道正确的人

博睿数据

AIOPS 智能运维 博睿数据

多云管理平台cmp是什么意思?谁能清楚解释一下

行云管家

云计算 云服务 多云管理 云资源 云管理

大数据培训Flink高频面试题分享

@零度

flink 大数据开发

“减负”,让“猪”可以飞得更高

鼎道智联

2022 年 5 月产品大事记

FinClip

web前端培训高频面试题

@零度

前端开发

「大模型」之所短,「知识图谱」之所长

博文视点Broadview

架构实战营 第 6 期 模块八课后作业

火钳刘明

#架构实战营 「架构实战营」

Meta公司新探索 | 利用Alluxio数据缓存降低Presto延迟

Alluxio

facebook 数据缓存 presto Alluxio meta

API如何检测安全配置是否有错误?

百家饭隐私计算平台创业者

安全 API

技术分享| 快对讲,全球对讲

anyRTC开发者

快对讲 抗丢包 网络传输FEC GT-RTN 语音对讲

数仓的基本概念

五分钟学大数据

数据仓库 6月月更

Mass区块链哈希娱乐游戏开发平台搭建

开发微hkkf5566

你对PHP数据类型或者其他编程语言的数据类型了解多少呢

迷彩

php 基础 6月月更 InfoQ极客传媒15周年庆

从“化学家”到开发者,从甲骨文到TDengine,我人生的两次重要抉择

TDengine

数据库 tdengine 开源 时序数据库

“易 +”开源计划丨基于 WebRTC 的低延时播放器设计和实践

网易智企

开源 IM 低延时直播

焱融看|混合云环境下,如何实现数据湖最优存储解决方案

焱融科技

【网易云信】深度剖析「圈组」关系系统设计 | 「圈组」技术系列文章

网易智企

音视频 IM Discord

【网易云信】深度剖析「圈组」消息系统设计 | 「圈组」技术系列文章

网易智企

音视频 IM Discord

区块链哈希竞猜娱乐游戏俱乐部系统开发

开发微hkkf5566

一次主从表集成流程开发过程

agileai

数据同步 企业服务总线 预置样例 集成流程 主从服务

洞见科技入选「爱分析· 隐私计算厂商全景报告」,获评金融解决方案代表厂商

洞见科技

隐私保护 隐私计算 数据流通

搜狐员工遭遇工资补助诈骗 黑产与灰产有何区别 又要如何溯源?

郑州埃文科技

网络安全 网络灰黑产 IP溯源

产品开发的早期阶段,是选择开发app还是小程序?

开源直播系统源码

软件开发 APP开发 小程序开发 直播源码

作为程序员,对于底层原理真的有那么重要吗?

C++后台开发

后端开发 Linux服务器开发 C++后台开发 底层原理 底层开发

20年技术老兵放弃大厂CTO头衔!这家创业公司凭什么吸引他?

XTransfer技术

CTO 跨境支付

算力网络照进现实,浩鲸科技如何构建?

鲸品堂

算力网络

【云图说】每个成功的业务系统都离不开APIG的保驾护航

华为云开发者联盟

云计算 华为云 业务系统

观点:Rails还是PHP?适合才是最好_Ruby_高昂_InfoQ精选文章