AI时代已来,你准备好应对挑战了吗? 了解详情
写点什么

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

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

关注

评论

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

深度学习进阶篇-预训练模型[4]:RoBERTa、SpanBERT、KBERT、ALBERT、ELECTRA算法原理模型结构应用场景区别等详解

汀丶人工智能

自然语言处理 深度学习 预训练模型 Transformer BERT

AE模板:短信消息聊天对话气泡动画Smart Text Message

Rose

AE模板下载 Smart Text Message 对话框气泡生生成器插件

DR5白金版 for mac(PS一键磨皮插件Delicious Retouch)支持ps2022 v5.0汉化版

Rose

DR5白金版 PS一键磨皮插件 dr5插件 汉化版PS插件 dr5插件教程

软件测试/测试开发丨Web自动化 PageObject 设计模式

测试人

程序员 软件测试 自动化测试 测试开发 Web自动化测试

文心一言 VS 讯飞星火 VS chatgpt (23)-- 算法导论4.2 5题

福大大架构师每日一题

福大大 文心一言 讯飞星火

photoshop神经滤镜是什么,神经滤镜功能揭秘~

Rose

photoshop神经滤镜 Neural Filters插件 ps滤镜下载 PS2023破解

简直人生外挂,直接涨薪25K,跪谢这份Java性能调优实战宝典

做梦都在改BUG

Java 性能优化 性能调优

阿里“妈宝级”之作,Kubernetes原理剖析与实战应用手册,太全了

做梦都在改BUG

Java Kubernetes k8s

分布式事务的21种武器 - 7

俞凡

架构 云原生

使用Go语言实现门面模式:简化复杂子系统的访问

Jack

Maven Cannot resolve plugin org.apache.maven.plugins

Andy

Office 2021和 Office 365 有什么不同之处?office 2021 和 365 区别是什么

Rose

Office 365 Office 2021 office下载

国外顶级架构师编写2580页DDD领域驱动设计笔记,看到内容后破防了

做梦都在改BUG

Java 架构 领域驱动设计 DDD

Nautilus Chain上线主网,为DeFi和流支付的未来构建基础

西柚子

CMake构建指南:如何提高C/C++项目的可维护性

小万哥

Linux 程序员 C/C++ 后端开发 cmake

iOS MachineLearning 系列(19)—— 分析文本中的问题答案

珲少

非常全面的 SpringBoot 保姆级笔记,面面俱到,太牛了

做梦都在改BUG

Java spring 微服务 Spring Boot 框架

耗时一周整理的牛客网上最火Java面试八股文,面试必备

架构师之道

Java 面试

学懂缓存雪崩,缓存击穿,缓存穿透仅需一篇,基于Redis讲解

Java你猿哥

Java redis 缓存击穿 缓存雪崩 Redis缓存穿透

2023-05-27:给你一个只包含小写英文字母的字符串 s 。 每一次 操作 ,你可以选择 s 中两个 相邻 的字符,并将它们交换。 请你返回将 s 变成回文串的 最少操作次数 。 注意 ,输入数据

福大大架构师每日一题

Go 算法 rust 福大大

Parallels Desktop如何退出账号?PD18虚拟机退出账号方法

Rose

pd18虚拟机 PD如何退出账号 Parallels Desktop下载 Parallels破解版 Mac虚拟机下载

Java面试集锦

源字节1号

微信小程序 开源 软件开发 后端开发

爆肝了!阿里最新版的这份Spring Security源码手册,狂揽GitHub榜首

做梦都在改BUG

Java spring spring security Spring Security OAuth

Nautilus Chain上线主网,为DeFi和流支付的未来构建基础

EOSdreamer111

关于Spring Cloud Alibaba,看阿里这篇笔记真香

Java你猿哥

分布式事务 微服务 Spring Cloud 服务治理 Spring Cloud Aliababa

Java面试很难?啃完阿里老哥这套Java架构速成笔记,我都能拿30K

做梦都在改BUG

基于Redis讲解,学懂缓存雪崩,缓存击穿,缓存穿透

做梦都在改BUG

Java redis 缓存穿透 缓存击穿 缓存雪崩

C语言编程—数组

攻城狮Wayne

五十万字总结!2023最新Java面试八股汇总(含答案,收藏版)

采菊东篱下

Java 面试

阿里巴巴工程师1480道Java面试题及答案整理( 2023年 整理版)

Java你猿哥

Java MySQL redis JVM java面试

工厂+策略在springboot项目中的使用场景

做梦都在改BUG

Java Spring Boot 工厂模式 策略模式

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