编译丨千山
如果你在Web开发领域摸爬滚打了许久,你就会亲眼见证众多语言和框架的兴起和衰落。在群星明灭中,Ruby和它的Web应用框架Ruby on Rails就像一颗流星,在爆发出璀璨光华后又渐渐归于寥落。
曾经,Rails的出现极大地推动了Ruby语言的发展。在Rails风头正劲时,即使是最保守的公司也开始考虑采用Ruby,甚至业界提出过“Ruby将挑战Java”的言论。
但现实是,站在十几年后的今天回望,Ruby将取代Java的想法似乎很可笑。根据TIOBE公布的2023年1月编程语言排行榜,Ruby位列第十六,介于MATLAB和Object Pascal之间,同时Java的人气依旧,排行第四。而且相较Java,Ruby在招聘热度、市场需求和开发者关注度等方面都远远落后。
TIOBE 2023年1月编程语言排行榜,图源:互联网
但是,暂时还是不要把Ruby和某些已经“入土”的语言放在一起。尽管Ruby不再占据主导地位,但在编程语言界仍然有它的一席之地。本文试图追溯这门语言的兴衰,通过一批Ruby程序员之口,解析Ruby为何崛起、又如何从鼎盛期衰落,以及为什么他们认为Ruby仍然有未来。
Ruby是一种用于面向对象编程的解释性脚本语言,核心优势就是允许开发者快速构建并启动应用程序,特别是对于前端应用程序,这一点始终未变。
这门语言由松本行弘在1993年创建,1995年正式发布,基本和Java算是同期。但相比Java的“光环”,Ruby一直非常低调。
直到2004年,David Heinemeier Hansson发布了世界上首个Web MVC框架Ruby on Rails。这个小众语言开始让世界为之惊喜。
Ruby的发展可以说适逢其会。1994年万维网诞生,十年后,Web 2.0逐渐兴起。这期间,Rails的诞生又加速了Ruby的发展。从2000年开始,Ruby以“黑马”之姿走出日本,受到全球开发者的关注,其受欢迎程度在TIOBE指数评级中逐渐达到顶峰。当时,不少大型网站,比如Twitter和Groupon都对这门语言青睐有加。
松本行弘曾在接受采访时如此评价Ruby的“盛世”:“首先是得益于Web的快速发展,几乎所有的软件开发平台都在瞄准Web这个领域。也就是说,在Web上能够开发的应用变多了,这是一个主要的背景。另外,Ruby的优势在于开发效率比较高。这两点结合起来,我认为就是Ruby on Rails成功的主要原因。”
归根结底,促成Ruby崛起的因素有很多,但离不开这门语言自身的特质。
首先,开发速度快。“Ruby on Rails仍然是小团队影响大团队的好方法,”《Programming Ruby 3.2》一书的合著者Noel Rappin说:“从零开始构建真正有价值的产品,这仍然是最快的方法之一。”尤其对于创业公司以及最小化可行产品的开发来说,试错成本高,任何小小的延误都可能招致失败,因此Ruby on Rails就成了一种战略上的选择。
再者,使用简单。由于Ruby语言本身采用大量英语单词,上手难度低,而且Ruby on Rails的语法简单明了,程序员只需编写少量代码就可以解决复杂的任务。清晰的语法可以让开发人员在多个项目之间切换,这让开发和维护代码更为便利。
最后,社区的支持。强大而又凝聚力的社区对Ruby的发展发挥了巨大作用。Qwoted的首席技术官Kevin Trowbridge认为,这与语言本身的性质有很大关系。“它是所有编程语言中最通俗易懂的,易读易写,这种理念不但有助于优化产品,更能提升开发人员的生产力和幸福感,这也解释了为什么它有如此强大的社区支持。”
当然编程语言界的竞争向来激烈,Ruby在向前推进的同时,其他语言和框架也没有停滞不前。甚至随着时代的发展,当互联网公司逐渐更关注规模伸缩等问题时,Ruby开始暴露出可扩展性不佳等缺陷。
“Rails出现在网络转型和发展的风口浪尖,它既受益于这种增长,也推动了这种增长,但它不会是唯一成功的个例。这是一个既定的结论。”从2006年开始成为Ruby开发人员的Matthew Boeh这样描述。
在他看来,某种程度上甚至可以说“Ruby是其自身成功的受害者”。
“因为它的社区是近年来命令行复兴的主要驱动力。在本世纪初,它向那些从未听说过Lisp的人介绍了repr驱动的开发,向那些被Perl的CPAN吓跑的人介绍了包管理,向Java世界之外的人介绍了测试驱动的开发……这些在今天都是习以为常的必需品。尽管这些都不是Ruby的原创,但都是Ruby爱好者推广和使用的。”
如果说现在有一种语言在Ruby曾经统治的领域占据主导地位,那就是JavaScript。
“随着JavaScript发展成为一种全栈语言,工程师们可以用一种语言,甚至一个共享代码库来构建前端、后端和移动项目,”New Relic开发总监Jemeah Sius说,“Ruby很容易学习,有很高的安全标准,还有一个活跃的社区。但当有人想到全栈时,他们想到的是JavaScript、Node.js、React或其他他们喜欢的框架。”
Qwoted的首席技术官Trowbridge指出,JavaScript之所以能够填补这一空白,是因为它已经从开发人员曾经不屑一顾的语言中得到了改进。事实上,随着时间的推移,它变得更像Ruby了。“浏览器厂商在正规化、标准化、简化和增强方面做出了努力,”他说。“它比过去的JavaScript好太多了。”
“当前形式的JavaScript生态系统在2004年是不可想象的——它需要命令行复兴和网络平台的起飞,”Boeh补充道。“从1999年到2009年,整整十年时间才发布了一个新的JavaScript标准版本。而现在是一年一次。”
与此同时,Python已经主导了当今最热门的开发领域之一,人工智能和机器学习。“Python在科学界流行起来,因为他们可以比以往更快地建立模型和算法原型,所以它比Ruby领先了几年”,Bhardwaj说,“另一方面,Ruby被认为执行缓慢,因而没有得到更多关注。”
New Relic的Sius对此表示赞同。“当有人想到一种多功能语言,可以创建从游戏到VR到AI到ML的所有东西时,每个人都知道Python是明显的赢家。”
JavaScript和Python能在和Ruby的较量中占据上风的因素有很多,而且并不局限于语言本身的特性。
Qwoted的Trowbridge说:“Python和Ruby有很多相似处,比如,它们都是动态的解释性脚本语言,适合在服务器上使用。它们运行效率不高,所以运行起来很昂贵,但它们都有令人难以置信的灵活性,所以对初学者来说也很友好。”
但当涉及到数据科学时,由于TensorFlow和Keras等框架的现成可用性,Python无疑更有优势。Bhardwaj说:“这些框架使程序员更容易构建数据可视化和编写机器学习程序。”
与此同时,JavaScript已经产生了数不胜数的库,开发人员可以轻松下载并适应乎所有目标。其中许多库都是由社区成员开发的,这也推动了其他人的贡献,就像滚雪球一样,任何参与开源的人都熟悉这种效应。
在这场博弈中,还有一个不可忽视的大玩家在发挥着巨大的影响力,那就是主导了TensorFlow发布的谷歌。
谷歌将Python作为其内部脚本语言,同时对提升JavaScript也表现得兴趣盎然。Trowbridge认为谷歌使JavaScript比以前更快,内存效率更高。与此同时,人们普遍认为Ruby在性能上落后,部分原因是它缺乏类似的企业赞助商和资源来改进它。
在Ruby曾经兴盛的一些领域,它还没有被其他语言所取代。更确切地说,整体环境已经发生了变化,所以这些利基市场已经不再被识别。Boeh表示:“我最初是为一家本地创意机构的客户制作营销网站和在线商店,我认为人们很容易忽视网络开发世界的底层已经被自动化取代了。几年之内,整个业务就不复存在了——当他们可以用WordPress或Shopify做得相当不错时,没有人对这样的定制网站感兴趣。”
2023年,Ruby已经30岁了。相较Pascal、COBOL乃至Perl这些语言来说,Ruby的情况要好一些,但衰落之势似乎不可逆转。就像远行之船,固然没有下沉,但航速还是越来越慢。
Ruby到底还有没有未来?面对这一质疑,一众开发人员还是表现乐观。
其中,电子商务巨头Shopify是最大的原因之一,因为Ruby on Rails是它的主要开发平台。Bhardwaj说:“Ruby仍然是开发电子商务应用程序的最佳工具,因为它具有动态功能和灵活性。你可以通过不同的模块构建应用程序,然后再进行修改。这让我们更容易更新应用以获得更多功能。”
虽然Shopify的运营规模远不如谷歌,但它仍然致力于成为Ruby的赞助人,就像谷歌为其青睐的语言所做的那样。例如,Shopify最近开发了YJIT,这是一个即时编译器,可以提高Ruby的性能,并已内置于Ruby标准中。
Trowbridge表示,Ruby“作为一种出色的服务器端‘粘合剂’语言,它在Web应用程序的服务器组件上表现出色,就像Rails的‘只使用API’模式一样”。他指出,在某些方面这个角色“让Ruby基本上回到了它的起点”。
“总而言之,几乎所有与我交谈过的人都相信Ruby和Ruby on Rails将继续在许多环境中使用。就像很多语言虽然不再像以前那样流行,但仍在大量使用。我认为Java就是个典型案例,Ruby和Java将会有相似的发展轨迹。”
最后,还有很多人认为,Ruby的社区对Ruby始终抱有温暖和热情,这是很难在其他语言中找到的。就像Lumenova AI的首席技术官Cosmin Andriescu所说:“Rails仍然有一个主要的优势,它有大量的Ruby gem库。相较之下,不少JavaScript框架的API不稳定,在必要的Web开发工具方面还不够成熟。”
Boeh补充道:“现在Ruby世界有很多令人兴奋的发展。Ruby永远不会再成为下一个重要的新事物,但我认为它会一直存在下去。”
软件的生命周期有其固有的规律,一门编程语言能够坚持走过三十年绝非易事。
“Ruby有很多特性,我觉得最为大家喜爱的是它的简洁、高效以及人性化。但同时也有开发者不喜欢Ruby,因为一旦应用到工作中,由于Ruby太灵活,犯错的概率会随之增大。还有人说Ruby很多东西都是在运行时来决定的,比较麻烦。”Ruby之父松本行弘在接受采访时曾如是说。
他认为,这实际是一个取舍的问题。“从使用Ruby的角度来说,我个人认为最重要的是灵活性,当然容易写出bug的确很烦,不过我还是想要保留Ruby最重要的特性。而且,Ruby会持续改进,进一步提高开发效率。”
对于开发人员来说,是否要在职业规划中学习Ruby,同样是一个取舍问题。一方面,在过去的十年中,开发领域可谓百花齐放,Node.js、Angular和React在前端和后端各领风骚,JavaScript在市场需求稳定性上越来越具有优势,Python后来者居上快速“杀入”主流编程语言圈;另一方面,不少公司对Ruby和Rails的开发者依旧有需求,自2008年以来出现的一切SaaS,在未来几十年中都需要新的开发者加入进来。说到底,任何语言都是有应用场景限制的,而场景的变化是非常快的。不管你学不学、用不用Ruby,你总得深入一个语言。深入以后,才会有进一步衡量与评估的眼界。
https://www.infoworld.com/article/3687219/whatever-happened-to-ruby.html
https://zhuanlan.zhihu.com/p/108825259?utm_source=wechat_session
https://www.duidaima.com/Group/Topic/OtherLanguage/3300
来源: 51CTO技术栈