【AICon】AI 基础设施、LLM运维、大模型训练与推理,一场会议,全方位涵盖! >>> 了解详情
写点什么

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

  • 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:2913300

评论 1 条评论

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

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

低代码助力企业数字化转型:实现高效应用开发与部署

互联网工科生

低代码 数字化

低代码实现探索(六十)从ERP软件学习低代码

零道云-混合式低代码平台

macOS Sonoma 正式版系统已发布,macos14值得更新吗

iMac小白

macos macOS Sonoma MacOS14系统 macOS14

iWall for Mac(动态桌面壁纸软件) 5.1.0中文激活版

mac

苹果mac Windows软件 动态壁纸软件 iWall

低代码平台技术分享官丨业务流那些事之单据追踪

inBuilder低代码平台

通过Java Record提升代码质量:简洁而健壮的数据对象

树上有只程序猿

java 14 数据类型

语音识别技术的应用及优化

来自四九城儿

软件测试|最全的Python for循环和while循环使用介绍

霍格沃兹测试开发学社

如何在Mac电脑上快速锁定屏幕

iMac小白

macos mac电脑 苹果电脑

软件测试|一篇文章教你SQL与NoSQL、数据库重要概念、SQL的基本语句

霍格沃兹测试开发学社

软件测试|f-string格式化输出的这些用法,90%的Pythoner不知道

霍格沃兹测试开发学社

解锁企业数据管理的利器——DataOps

数造万象

FaceFusion:探索无限创意,创造独一无二的面孔融合艺术!

汀丶人工智能

人工智能 深度学习 计算机视觉

KDD 2023 | 蚂蚁“优化器三部曲”之 WSAM

AI Infra

人工智能 开发者 算法 优化器 KDD

软件测试|教你轻松玩转Python日期时间

霍格沃兹测试开发学社

如何使用ChatGPT编写更好的代码

这我可不懂

人工智能 语言模型 ChatGPT

天翼云云电脑:IAAS基础设施带来的计算革新

天翼云开发者社区

云计算 云电脑

软件测试/测试开发丨App自动化—高级控件交互方法

测试人

Python 程序员 软件测试 自动化测试

软件测试|什么是Python函数及名称空间?

霍格沃兹测试开发学社

ido预售官网、私募网站开发 代币发售、智能合约项目 任意链任意机制模式

西安链酷科技

IDO代币预售

【深入MaxCompute】人力家:借助Information Schema合理治理费用

阿里云大数据AI技术

大数据

语音识别技术的挑战与机遇

来自四九城儿

云计算引领数字化时代

Finovy Cloud

云服务 云计算,

智慧公厕建设的好处和意义?提高城市形象和吸引力的秘密武器

光明源智慧厕所

智慧厕所 智慧公厕

Node.js 做 Web 后端的优势在哪?为什么是明智的选择?

高端章鱼哥

node.js Web 后端开发

OP链质押挖矿系统开发源码搭建

l8l259l3365

FaceFusion:探索无限创意,创造独一无二的面孔融合艺术!

汀丶人工智能

人工智能 深度学习 计算机视觉 图像生成

区块智能合约DAPP软件系统开发

西安链酷科技

做市商系统 c2c交易 otc交易

天翼云GPU云主机:共享信息技术与虚拟机的完美融合

天翼云开发者社区

云计算 云主机

从技术角度聊聊2023年怎么入局小游戏赛道?

FN0

小游戏 小游戏开发 小游戏引擎 小游戏运营

06. 机器学习入门2 - 理解特征和向量

茶桁

人工智能 机器学习 特征向量

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