写点什么

观点: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:343184
用户头像

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

关注

评论

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

使用FL studio中文版进行音乐合并和剪切

懒得勤快

DeFi去中心化平台源码开发|智能合约系统搭建

量化系统19942438797

区块链难懂?人民日报评论员讲给你听

CECBC

从安卓转到Java开发,我吃透了这份pdf,终于4面拿下美团offer

Java~~~

Java spring 面试 微服务 JVM

fil矿机怎么购买?fil矿机在哪买?

fil矿机怎么购买 fil矿机在哪买

记一次PHP渗透测试实战教程

网络安全学海

php 网络安全 信息安全 渗透测试 安全漏洞

一文带你了解大厂亿级并发下高性能服务器是如何实现的!

Linux服务器开发

事件驱动 多进程 Linux服务器开发 IO多路复用 高性能服务器

TCP 三次握手

W🌥

计算机网络 TCP/IP 8月日更

聊聊 PC 端自动化最佳方案 - WinAppDriver

星安果

Python 自动化 WinAppDriver

CSS 文档中定位指南:static、relative、absolute、fixed、sticky

devpoint

CSS 8月日更

绝了!阿里甩出“源码阅读指南”,原来源码才是最经典的学习范例

Java 编程 架构 面试 程序人生

舍弃Kong和Nginx,Apache APISIX 在趣链科技 BaaS 平台的落地实践

API7.ai 技术团队

nginx 开源 网关 kong APISIX

程序员投入时间和精力实现财富增长之道,这可能会伴随你程序员整个生涯(请不要连续点赞)

孙叫兽

程序员 赚钱 教程 引航计划 签约计划第二季

手把手 Golang 实现静态图像与视频流人脸识别

声网

音视频 人脸识别

LeetCode题解:80. 删除有序数组中的重复项 II,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

企业数字化转型第一步,云服务器的部署以及搭建

九河云安全

波场DAPP钱包开发|波场DAPP特点

Geek_23f0c3

钱包系统开发 DAPP智能合约交易系统开发 波场DAPP 波场钱包

网络攻防学习笔记 Day102

穿过生命散发芬芳

态势感知 网络攻防 8月日更

ipfs矿机挖币哪家最好?ipfs矿机公司实力排行如何?

ipfs矿机挖币哪家最好 ipfs矿机公司实力排行如何

从新手村出来,我在 Apache APISIX 社区发出了第一个 PR

API7.ai 技术团队

开源 后端 API网关 APISIX

「独立思考」的背后是一个残酷的世界

非著名程序员

提升认知 个人提升 独立思考 8月日更

RESTful API

escray

学习 极客时间 如何落地业务建模 8月日更

基于时间和窗口的算子(六)

Databri_AI

flink 窗口函数 算子

🏆「作者推荐」【JVM 性能调优】JVM分析与调优技巧分析(原理篇)

码界西柚

JVM JVm虚拟机 8月日更

用区块链加强知识产权保护

CECBC

前端之算法(一)

Augus

数据结构与算法 8月日更

图谱可视化|手把手教你采集明星人物关系并进行图谱展示

Python研究者

知识图谱 8月日更

Karmada: 云原生多云容器编排平台

华为云原生团队

开源 容器 k8s多集群管理 多云管理平台 多云

趁着课余时间学点Python(十)面向对象的理解(前奏)

ベ布小禅

8月日更

企业不可忽视的三大关键时刻

石云升

管理经验 关键时刻 体验设计 8月日更

新药开发瓶颈问题或将被打破,北鲲云超算平台开启药物研发“加速度”

北鲲云

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