PCon全球产品创新大会最新日程一览,这里直达 了解详情
写点什么

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

  • 2015 年 9 月 28 日
  • 本文字数:1659 字

    阅读完需:约 5 分钟

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

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

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

  • 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 更快来的简单。

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

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

  • 有许多新框架成为 Rails 的有力竞争者——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 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。

2015 年 9 月 28 日 19:003845
用户头像

发布了 1008 篇内容, 共 329.9 次阅读, 收获喜欢 301 次。

关注

评论

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

Android Studio项目用Git上传至码云(OSChina),android开发基础有哪些

android 程序员 移动开发

Android Volley 源码解析(一),ffmpeg音视频开发实战2019下载

android 程序员 移动开发

CDP客户数据管理平台体系化搭建

知了一笑

CRM 客户数据平台 CDP DSP DMP

Android 四大组件全解读,kotlin极简教程

android 程序员 移动开发

Android UI- PullToRrefresh自定义下拉刷新动画,android开发入门书

android 程序员 移动开发

Android WebView与Native通信总结,Android中高级面试必知必会

android 程序员 移动开发

Android Zygote 从何而来?揭开Android系统启动的面纱,flutter真机调试

android 程序员 移动开发

Android UI - 实现广告Banner轮播效果,Android大厂74道高级面试合集

android 程序员 移动开发

Android 可能你想要的APK瘦身笔记,2021最新安卓大厂面试题来袭

android 程序员 移动开发

Android 启动优化: JetPack App Startup 使用及源码浅析

android 程序员 移动开发

Android 如何从应用深入到Framework (一),2018移动应用开发前景

android 程序员 移动开发

Android 存储进化:分区存储,2021最新Android笔试题及答案

android 程序员 移动开发

Android WebView判定网页加载的错误,androidtv开发者模式

android 程序员 移动开发

Android 使用Face++ SDK进行人脸识别和年龄检测,android开发网络框架

android 程序员 移动开发

Android 内存性能优化,灵魂一问-如何彻底防止APK反编译

android 程序员 移动开发

Android wifi属性简介 及 wifi信息获取(wifi列表、配置信息

android 程序员 移动开发

Android UI - 实现广告Banner轮播效果(1),Android进阶

android 程序员 移动开发

Tailwind CSS 入门和实践

全象云低代码

CSS 大前端 低代码开发

Android View Binding使用详解,阿里巴巴安卓面试题答案

android 程序员 移动开发

使用桥接模式设计复杂的消息系统

Tom弹架构

Java 架构 设计模式

Android 实现双Launcher的无缝切换,flutter免费视频教程

android 程序员 移动开发

Android Studio真机 设置 和 错误排查,安卓面试题最新2020

android 程序员 移动开发

Android 单元测试之 Mockk,idea开发android教程

android 程序员 移动开发

Android 可控制概率家务转盘,移动端跨平台开发大型项目

android 程序员 移动开发

Android 存储空间的最佳实践,【金九银十】

android 程序员 移动开发

Android Tab简介,android工程师面试题目

android 程序员 移动开发

Android ViewPager2 & TabLayout,fluttertextfield高度

android 程序员 移动开发

Android 使用微信开放平台分享内容到微信,apm性能监控系统

android 程序员 移动开发

Android Studio项目用Git上传至码云(OSChina)(1),flutter面试题

android 程序员 移动开发

百度人脸活体检测系统通过信通院“护脸计划”首批优秀级安全防护能力评估

百度大脑

信通院 人脸活体检测

Android _《看完不忘系列》之Retrofit,flutter下载文件

android 程序员 移动开发

为什么我不会在新公司中使用Rails-InfoQ