微信号:infoqchina

介绍:有内容的技术社区媒体

我为什么不在新公司中使用Rails?

2015-10-02 08:14 谢丽 译

从流量来说,在线文档上传及分享社区Scribd是世界第三大Rails站点。Jared Friedman是该公司的联合创始人兼首席执行官。他从2006年就开始使用Rails,Scribd第一个版本是用Rails 0.7编写的。现如今,Rails已经成为美国硅谷创业公司默认的Web应用程序开发框架。但Friedman认为这是个错误,并在近日撰文阐述了这一观点。


Friedman列出了以下几个方面的原因:


1|Rails巅峰期已过


Friedman认为,现在在一家新公司中使用Rails就像2007年在一家新公司中使用Java Spring,其依据是谷歌趋势中Web框架的搜索量变化,如下图所示,:


2|Rails有个大难题


Ruby——基准测试显示,截至目前,Ruby是主流编程语言中最慢的。语言设计是一个原因,但更深层次的原因是Ruby没有一个大型的企业赞助商。在2007年,Python、PHP及JavaScript也都是相当慢的脚本语言。Facebook对PHP进行了巨大的投资,构建了HipHop转译器,提升了PHP的运行速度。谷歌则构建了一个快速的JavaScript JIT编译器,无意间促成了服务器端JavaScript应用的暴增。相比之下,Ruby解释器仅仅是志愿者的工作成果。在2007年到2012年之间,有多个项目试图提升Ruby的运行速度,如Rubinius、JRuby、YARV,但只有JRuby仍然在积极开发,而且最新的版本让人看到了希望,只是仍然有很长的路要走。


此外,Twitter是第一家基于Rails成长起来的大型科技公司,它曾试图优化Ruby解释器,但Twitter工程师最终还是决定使用一种速度更快的语言重写Twitter,因为那比让Ruby更快来的简单。


3|开发停滞,已被其它框架追赶


Rails 3于2010年8月发布,但GitHub四年之后才升级到这个版本,因为该版本的新特性没有足够的吸引力。Scribd在升级到Rails 3的过程中也遇到了很大的麻烦,导致他们现在都不确定是否还会升级到Rails 4。与此形成鲜明对比的是JavaScript的快速发展。Scribd经历了从Prototype到jQuery到Coffeescript到 Angular再到React的转换,每一次转换都能带来生产效率的提升。


4|“新兵训练营(BootCamps)”


过去两年出现了许多编程新兵训练营。当讲授服务器端开发时,他们绝大多数都会讲授Rails,而不是其它语言。这导致优秀的开发人员,尤其是那些具有计算机科学学位的开发人员看轻那些训练营项目。Friedman注意到一种趋势,就是有经验的开发人员不想使用Rails。


5|许多新框架成为其有力竞争者


Friedman得出这一结论的一个依据是Coding VC 对AngelList上广受欢迎的公司所使用的服务器语言的统计分析,如下图所示:


另一个依据是indeed.com上的就业趋势统计,如下图所示:



Charles Nutter是JRuby的核心开发人员。他评论说:


我讨厌类似这样的文章,用传闻和猜测混淆视听。


因此,他几乎是逐条反驳了Friedman的观点,而且言辞颇为激烈。他认为,谷歌趋势并没有给出总数,只能体现一种相对增长,而实际上,Rails比Node.js流行。关于性能,Nutter指出,在处理相对稳定的Rails请求时,JRuby的性能比CRuby更好。对于“Rails开发停滞”的观点,Nutter认为十分荒谬,因为熟悉内情的人都知道,Rails是发展最快的框架之一。




网友AnneOminous在声援Nutter的同时指出,Friedman提到的关于Twitter的信息是错误的。Twitter的其中一名创建者之所以使用Scala重写Twitter引擎的某些部分,是因为他不擅长Ruby,未能正确使用。后来的分析也证明,他使用Scala所做的工作并不比使用Ruby快多少。对于Friedman有关GitHub的说法,也有网友指出,GitHub之所以在Rails 3发布那么久之后才升级到Rails 3,是因为他们自己派生了Rails,使用了许多内部补丁。


  • 总之,对于Friedman的观点,反对者居多,但也有少数网友持赞同观点。若感兴趣,可点击阅读原文跳转到英文原文阅读。


版权归属InfoQ,禁止私自抄袭转载。

回复关键词React | 架构师 | 运维 | 云 | 开源 | 物联网 | Kubernetes | 架构 | 人工智能 | Kafka | Docker | Netty | CoreOS | QCon | Github | Swift | 敏捷 | 语言 | 程序员


今日文章推荐


荐文|九月十篇精选干货技术文章

Airbnb副总裁分享Airbnb的架构要点

Twitter如何构建高性能分布式日志

当当开源elastic-job 分布式作业调度框架

写代码这事儿,架构师你可以说不么?

投稿可勾搭:

邮箱:editors@cn.infoq.com

合作QQ:1073600161

 
InfoQ 更多文章 Facebook如何实现PB级别数据库自动化备份 学术派Google软件工程师Matt Welsh谈移动开发趋势 Spotify为什么要使用一些“无聊”的技术? 妹纸们放假了,汉纸们做啥? 大多数重构可以避免
猜您喜欢 formatR代码自动化排版 达内成为中国教育创新“20+”论坛创始成员 快乐编程的好习惯有哪些? MySQL for update 死锁案例 浅析 Android 打包流程