写点什么

不要学习“网红”编程语言

  • 2022-03-10
  • 本文字数:3968 字

    阅读完需:约 13 分钟

不要学习“网红”编程语言

Ruby on Rails 的衰落是毋庸置疑的,而且今年以来的衰落速度比以往更快。


先看 Google Trends,虽然不太科学、但至少能说明一点问题。无论是 Ruby 还是 Ruby on Rails,多年来在 Google Trends 都处于一路走低的状态。



如上图所示,二者先是急剧上涨、然后是一路横盘。但从 2016 年开始明显下跌后,它们的命运就基本已经注定了。不知道为什么 2020 年这里又有一次断崖式下降,这可能只是 Google 数据出了问题。但不管怎么说,状态不好是肯定的。


十年前,极受追捧


Ruby 是一种用于面向对象编程的解释性脚本语言,核心优势就是允许开发者快速构建并启动应用程序。Ruby 语言本身采用大量英语单词,所以上手难度更低。但由于可扩展性不佳,Ruby 应用程序的运行速度往往不及其他语言。


这门编程语言由 Yukihiro Matsumoto 于 1993 年开始创建,于 1995 年正式发布。虽然和 Java 基本上可以算是同时期(Java 诞生于 1993 年,正式发布于 1995 年),但在 2004 年 David Heinemeier Hansson 发布 Ruby on Rails 之前,Ruby 一直非常小众。


Ruby on Rails (也简称为 Rails)是一个使用 Ruby 编程语言的开源 Web 应用程序框架,曾一度大受欢迎,Rails 的出现极大的推动了 Ruby 语言的发展。在 2004 年之后,Rails 社区贡献出了广泛的插件(Gems)、书籍(光 2006 年就有 10 本关于 Rails 的书籍问世)、培训、一个主要会议(RubyConf)等等。随着 Rails 风头正劲,甚至连最保守的公司都开始考虑采用 Ruby。


《From Java to Ruby》一书的作者 Bruce Tate,曾是一位 Java 程序员,在当时也变成了一名 Ruby 狂热分子,他曾在 2007 年提出一个“木马计(Trojan Horse)”的方法,让一些领路人在保守的公司里为 Ruby 树立威望:


  • 先找到一个不那么令人兴奋的技术问题。

  • 私底下使用 Ruby 解决此问题,尽可能在管理层发现不了的情况下工作。

  • 创建一个草根阶级联盟,通过培养文化的方式培养 Ruby 布道者。


“实现一个试点项目,用这个策略来暗度陈仓,在眼皮底下把 Ruby 整合进系统。剩下的工作让 Ruby 完成就可以了。不过,为了建立你的试点项目,你首先需要创建一个案例,让 Ruby 看起来足够吸引眼球,从而让大家甘心冒这个风险。接着,你得在你的试点策略里面添筋加骨。鉴于人们对采用一门新语言与生俱来的抵抗力,你要选择一个不给疑虑留任何余地的方法。最终,你得愿意为成功建立制度根基。”


从 2000 年开始,到该时代中期,Ruby 受欢迎程度在 TIOBE 指数评级中逐渐达到顶峰,人们认为 Ruby 还有它的旗舰级 Rails 框架,可以大大提高生产力。不少现在的大型网站,比如 Twitter 和 Groupon 在当时都是这门框架的使用者之一。


只不过,人们也逐渐发现它存在一些致命缺陷。Groupon 工程师 Sean McCullough 在 2013 年的一个技术会议上讲道,“要在 Groupon.com 整个网页上更改一种颜色,估计需要三个月的时间。这导致我们无法以需要的速度进行迭代。”


Groupon 工程师不得不研究 Ruby on Rails 的一系列替代方案,最终选择了流行的 Node.js,并花了一年时间进行迁移。Groupon 还表示,更换之后页面加载速度得到了显著提升,高达 50%。从 2008 年引进,到 2013 年替换掉,Groupon 在这个坑里挣扎了 5 年。而在同一时期,备受扩展性问题困扰后,Twitter 也放弃了 Ruby on Rails。


现在,Ruby 确实不咋行了


接下来,让我们一起从课程、实践、社区情况来看看当年盛极一时的网红编程语言发展现状。


现在,很多朋友可能注意到,专门的 Ruby 播客或者新闻网站已经越来越少。除了一个每周通讯网站(‍https://rubyweekly.com/‍)还能保持高质量,其他的真就没什么了。


这就突出了 Ruby 语言正陷入恶性循环:因为缺乏好的信息和教程,新手开发者就不愿选择它;而因为没有足够的新人,市场对信息和教程的需求也随之减少。


因为在劳动力市场上不被看好,编码训练机构 Coding Dojo 决定从 2017 年开始将 Ruby 课程从全美六大学区内尽数撤下,同时增加 Java 的全栈开发课程。Coding Dojo 课程负责人 Speros Misirlakis 曾表示,“我们一直在关注各地市场、把握技术需求,并发现 Java 的人气位居榜首。相比之下,Ruby on Rails 在招聘热度、市场需求和开发者关注度等方面都远远落后。”


到现在,以 Udemy 为例,截至 2022 年 3 月,上面只有 109 种关于 Ruby(on Rails)的课程。但 Python、Java 和 JavaScript 等语言的课程量都超过 10000 种。目前质量最高的 Rails 课程之一最后公开更新是在 2020 年。当然,go-rails 等其他服务也在提供相关课程,但 Ruby 衰落的趋势已经非常明显。


十年前,Ruby 背后还有高度活跃的社区,比如 GitHub、热门 repo。现在情况也发生了变化,支持并使用 Ruby 的开发者越来越少,曾被经常提起的 gems 服务,现在基本属于无人问津。再举个典型的例子,Rails 的 Azure 支持。


对微软 Azure 的支持状态可谓一团糟。相关一部分成果无人维护,过去几年来也毫无动静。大量问题被提出之后就长期搁置。例如,Azure 官方库中有 22 个问题仍在开放,其中的依赖性问题大多源自 Nokogiri 库版本过老。我知道这例子有点极端,但它确实能反映出生存状态的一个侧面。


最近十年来,现代 SaaS 方案中的 API 几乎都不提供官方 Ruby 客户端或 SDK。


形成鲜明对比的是,Java、JavaScript、Python 甚至是 Rust 可都在支持之列。


Slack 没有官方的 Ruby 客户端或者 SDK(其他语言都有),Dropbox 也一样。之前提到过,Azure 倒是有,但基本没有维护。在所有 HubSpot API 实施意见中,Ruby 版本的人气(根据 stars 和 forks 判断)和更新频率都是最低的。像 Monday、Teamleader 或者 Notion 这样的现代项目管理方案都没提到过 Ruby。这里要澄清一下,我举的都是不支持 Ruby 的 SaaS 项目。支持 Ruby 的也不少,从 AWS 到 Square,都提供一流且维护良好的 gems 供用户选择。


虽然没对 Ruby gems、repo、待解决问题等量化指标做过数据分析,但单是浏览一下基本情况就已经看得出相当负面的趋势。而且从部分 SaaS 服务上看,Ruby 确实不太受待见。


2010 年时 Ruby 的 SDK 和 API 客户端都是最亮眼的,之所以出色,是因为当时的 API 与 SaaS 开发团队往往会自己动手编写 Ruby 版本,所以客户端质量自然不在一个层面上。但近年来情况大变,而相应的社区版本要么维护不善、要么压根没有。


关注大型 SaaS 或者软件公司,我们会发现运行在 Ruby(on Rails)上的成果基本都有点年头了。


特别是在 2020 年之后,已经很难找到任何立足 Rails 构建的成功 SaaS 产品。GitHub 诞生在 2008 年,Shopify 是 2006 年,Twitter 是 2006 年,Groupon 是 2008 年,Zendesk 是 2007 年,Airbnb 是 2008 年,Fiverr 则是 2010 年。我能想到的诞生于 2010 年之后、而且运行在 Ruby 或 Rails 上的成功厂商就只有 Stripe(2011 年)和 Gitlab(2014 年)。在比较流行的 Ruby 开源项目方面,我能想到的也只有 Discourse 和 Mastodon。但这里确实也有幸存者偏差的因素:成功的企业需要经历漫长的磨练才会显露,所以不管用不用 Rails,成功的 SaaS 都得用时间证明自己。


2010 年那会 Rails 的成功催生出使用模型视图控制器(MVC)架构建立快速应用开发(RAD)框架的市场需求。可以肯定地说,Rails 这类框架确实拥有比较明确的市场定位,但还不至于火到那个程度。这些架构的解决能力和适用范围都比较差,所以无论使用哪种语言,Rails 本身的流行度下降甚至在根源上来自 MVC 和 RAD 方法的逐渐衰落。


2021 年 StackOverflow 的调查结果也支持了这样的判断:Ruby 与 Rails 在各项评比中基本都处于象限底端。Ruby 得到的“赞”和“踩”基本相当。很遗憾,StackOverflow 并不提供可供访问的趋势指标,倒是有一款基于标签活动的独立工具。经过查阅,发现 Ruby 这几十年来持续下滑、而且身处底部象限。TIOBE 指数也给出了类似的结论,Ruby 稳定保持着每况愈下的生存状态,逐渐落后于其他语言。


请谨慎选择学习


虽然彻底消亡并不容易,就像 Pascal、COBOL 乃至 Perl 当下也仍然存在一样。Ruby 的情况要好一些,这艘船还远远没沉、只是速度越来越慢。


不过人气并不能直接决定语言的质量。毕竟如果用人气来衡量,那 IE 6 将是人类历史上最好的网络浏览器。Ruby 仍然保持着 2005 年时的出色开发体验,而且体验只会越来越好。Rails 也仍是实现原型设计演示的好方法,能帮助大家在几天之内更稳妥地构建起最小可行性产品。


那我们是不是不该在职业规划中学习 Ruby 或者 Rails?话可不能这么说。市场对于 Rails 和 Ruby 开发者的需求仍然相当旺盛,或者说市场对任何语言的开发者都需求旺盛。自 2008 年以来出现的一切 SaaS,在未来几十年中都需要新的开发者加入进来。


但我们也要考虑到,在 Ruby 陷入萎缩的同时,Node.js 开始快速流行。在过去的十年里,开发领域的创新成果可谓百花齐放。HTML5、Node.js、Angular 和 React 已经在前端和后端遍地开花。JavaScript 与 Python 在市场需求稳定性上也越来越具有优势。Python 是过去十年中增长速度最快的主流编程语言,目前已经扩展到 Web 开发、数据科学、科学编程等多个领域。Stack Overflow 的调查也显示出,JavaScript 已经成为全球应用最广泛的语言。


另一方面,很多技术都会有自然的生命周期。开发者们的关注和精力就那么多,流向了其他地方、自然也就不再流向这里。


所以这里还是想提醒大家,如果 Ruby 继续保持过去十年来的衰落趋势,那各位一定要认真考虑学习这门语言的风险——也许 Ruby 终有一天也会像 COBOL 或者 Perl 那样成为时代的眼泪。


参考链接:


https://berk.es/2022/03/08/the-waning-of-ruby-and-rails/


https://www.infoq.cn/article/From-Java-to-Ruby--Strategies


https://www.datacenterknowledge.com/archives/2013/12/06/need-speed-groupon-migrated-node-js


https://siliconangle.com/2013/11/11/how-groupon-web-traffic-moves-from-legacy-ruby-on-rails-to-node-js/


2022-03-10 18:2913848

评论 1 条评论

发布
用户头像
2020-2022年的当红语言当属 “Rust”啊,作者还停留在上个世纪吗?

2022-04-09 22:05
回复
没有更多了
发现更多内容

技术人的 2023 用QCon大会画上完美句号

IT蜗壳-Tango

Qcon

Python笔记三之闭包与装饰器

Hunter熊

Python 装饰器 闭包 装饰器类 装饰器参数

QCN9274, QCN6274, QCN9224 and QCN6224-Do you know the specific requirements?

wifi6-yiyi

qcn9274 qcn6274

观测云产品更新 | 智能监控、应用性能监测、场景图表等优化

观测云

APM 智能监控

CodeWhisperer:编码世界中的声音启迪者

亚马逊云科技 (Amazon Web Services)

人工智能 云上探索实验室 Amazon CodeWhisperer

厦门钨业:智慧采购减少采购环节,构建高效产业链

用友BIP

智慧采购

一步一步教你写kubernetes sidecar

华为云开发者联盟

开发 华为云 华为云开发者联盟

2024-拒绝瞎忙,专注一件事

玄兴梦影

总结 质量 专注

英特尔锐炫显卡暴风成长:游戏领域大放光彩,AI应用表现抢眼

E科讯

中国中化、保利集团、中交集团、中国中车……2023年,更多央国企选择用友BIP

用友BIP

数智化转型

作为铭文跨链赛道龙头,SoBit 有何突出之处?

大瞿科技

软件开发

Geek_8da502

记一次JSF异步调用引起的接口可用率降低 | 京东云技术团队

京东科技开发者

深入理解技术内容运营

小万哥

程序人生 软件工程 后端开发 技术写作 内容运营

一文看懂指标管理难题:规范与效率如何兼得?

先锋IT

一文搞懂Go GC演进史,讲的太细致了!

王中阳Go

Go golang 面试题 垃圾回收 GC

软件开发者必读!2024年30大趋势提前曝光!

SoFlu软件机器人

【并发编程】CountDownLatch详解与原理

小明Java问道之路

并发编程 AQS 后端 多线程 CountDownLatch

一款降压型开关模式转换器解决方案

梦笔生花

华为云CCE集群健康中心:一个有专家运维经验的云原生可观测平台

华为云开发者联盟

云原生 后端 华为云 华为云开发者联盟

2023 年总结与技术心得

Geek_231712

携手开发者探索AI PC无限可能,英特尔人工智能创新应用大赛启动

E科讯

一个不会画画的我遇到AI绘画的时代

战场小包

AI AIGC AI绘画 Stable Diffusion controlnet

浅析RobotFramework工具的使用 | 京东物流技术团队

京东科技开发者

坚果的2023年终总结-激流勇进的一年

坚果

年终总结 坚果派

大模型和深度学习的工作总结

6个核桃

基于深度学习的探地雷达图像去杂波

小酌江风雪

InterSystems 数据库的存储过程存在哪里

HoneyMoose

taobao.trades.sold.get( 查询卖家已卖出的交易数据)丨淘宝店铺订单接口

tbapi

淘宝API接口 淘宝店铺订单接口 天猫店铺订单接口 淘宝店铺交易接口 天猫店铺订单交易接口

摸鱼摸出来的vue3+element-plus毒蘑菇后台管理:新标签页的实现。

23朵

Vue3 element-plus 后台管理

不要学习“网红”编程语言_开源_Tina_InfoQ精选文章