写点什么

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

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

关注

评论

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

开源图编辑库 NebulaGraph VEditor 的设计思路分享

NebulaGraph

数据库 图数据库 知识图谱 NebulaGraph

需求子任务的数据管理提效实践

转转技术团队

开发工具 测试赋能

开源一夏 | 为什么应该参与开源项目

baiyutang

开源 架构 微服务 开源文化 CloudWeGo

QCN9074, 802.11ax,Wallys, 4x4 MU-MIMO, 6GHz, wifi6E,

wallys-wifi6

QCN9074

字节跳动基于ClickHouse优化实践之Upsert

字节跳动数据平台

OLAP Clickhouse 数据库优化 数据库开发 数据库·

兆骑科创创新创业服务平台,双创活动承办,企业落地孵化

兆骑科创凤阁

华为云SparkRTC面向低时延、大通量传输业务的技术探索

华为云开发者联盟

云计算 后端 华为云

水滴低代码搭建——6倍提效,新品首发素材审核系统实践之路

京东科技开发者

CMS 低代码 表单 素材 低代码开发

从这 5 个 DevOps “恐怖故事”,我们能学到什么?

飞算JavaAI开发助手

明源云参加2022数字化转型发展高峰论坛并获多项殊荣

科技热闻

深度学习公式推导(1):神经元的数学公式

老崔说架构

阿里IM技术分享(八):深度解密钉钉即时消息服务DTIM的技术设计

JackJiang

架构设计 即时通讯 im开发

开源一夏 | 使用 HTML、CSS 和 JavaScript 的简单模拟时钟

海拥(haiyong.site)

开源 8月月更

Github又爆神作!野生程序员自学SpringCloudAlibaba必备学习笔记开源(阿里2022最新版)

Java永远的神

Java 程序员 面试 微服务 SpringCloud

人非圣贤孰能无过,Go lang1.18入门精炼教程,由白丁入鸿儒,Go lang错误处理机制EP11

刘悦的技术博客

Go Go web go语言 Go 语言

49张图带领小伙伴们体验一把 Flowable-UI

江南一点雨

spring springboot workflow flowable

浅谈成功的企业知识管理

Baklib

影响全彩LED显示屏质量的几个因素

Dylan

LED显示屏 全彩LED显示屏 led显示屏厂家

Redis API——List功能实践与性能测试【Go版】

FunTester

应用实例分析——图像检索

Geek_e369a5

图像搜索

华能 + Alluxio | 数字化浪潮下跨地域数据联邦访问与分析

Alluxio

数字化 国产化 东数西算 大数据 开源 数据编排

《游戏机图鉴》:发展、继承、崩溃、复兴,游戏机的前世今生

图灵教育

知识管理体系在企业中的作用

Baklib

如何成就更高远控帧率和流畅度?向日葵SADDC算法浅析

贝锐

算法 视频解码 视觉策略 远程控制

构建元宇宙概念NFT商城系统——艺术数字藏品平台源码部署

开源直播系统源码

软件开发 数字藏品软件开发 数字藏品源码出售

深入浅出分布式事务的实现原理

清风

面试 分布式事务 后端 原理 事务

得物黑科技|AR测量脚型,解决尺码烦恼

得物技术

AR

【Metaverse系列二】3D引擎知多少

ThingJS数字孪生引擎

元宇宙

兆骑科创赛事承办平台,高层次人才引进,创业服务平台

兆骑科创凤阁

阿里SpringBoot实战手册横空出世!从此不再是易学难精

冉然学Java

Java 编程 程序员 Spring Boot 构架

首届腾讯云大数据峰会开幕在即,现场将发布全新一代产品矩阵

科技热闻

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