Ruby 到底怎么了?
Ruby 和 Ruby on Rails 在早期就出现在 Web 开发领域了。然而,虽然现在 JavaScript 和 Python 都占据了主导地位,Ruby 还是仍然占有一席之地。
如果你已经在网络开发领域摸爬滚打了足够长的时间,你就会目睹许多语言和框架的兴起与衰落。Ruby 及其 Web 应用框架 Ruby on Rails 是最耀眼的明星。2008 年,Rails 推出仅仅三年后,该杂志就提出了这个框架是否会成为 Java 的继承者的问题,指出它将 Web 开发中的繁重工作挤出,并且与 Ruby 相关的初创公司看到了大量的风险资本投资。
15 年之后,认为 Ruby 会取代 Java 的想法看起来很荒谬。TIOBE 索引可以跟踪各种语言的查询,而 Ruby 在我最后一次查看的时候,排名是第 16 位。它位于 MatLab 和 Object Pascal 之间。(Java 位列第四,令人敬佩。)Filted 是一家提供虚拟环境的公司,求职者可以在虚拟环境的世界里,让未来的雇主看到他们的技能。这家公司甚至连 Ruby 都不在它的八大语言中。他们表示,雇主在 Ruby 上的测试时间仅为 0.5%。
但是,现在还不能将 Ruby 与 FORTRAN 或 ALGOL 一起放在博物馆里。我与 Ruby 的现任和前任程序员进行了访谈,以了解这门语言的兴起和衰落。他们与大家分享了他们对于 Ruby 是怎样和为何被排除在最流行语言之列的观点,以及为何他们觉得 Ruby 还有前途。
Ruby 最初之所以如此受欢迎,有很多原因,但是最重要的一点是,Ruby 可以让开发速度更快、更容易,尤其是前端应用。这一点没有改变。“Ruby on rails 依然是一个很好的方法,可以让一支小型团队拥有大型团队的影响力。”《编程 Ruby 3.2》(Programming Ruby 3.2)的合著者 Noel Rappin 说,“这依然是从零到真正的有价值的产品的最快捷的途径。”
“当涉及到为用户提供坚实的前端体验时,Ruby 一直是最好的语言,”BoutiqueSetup.net 的电子商务教练 Pulkit Bhardwaj 解释说,“它为最终用户提供了易用性,并提供了稳定、安全的体验。它还提供了一个实验的空间,因为 Interactive Ruby 能够逐行提供即时的表达结果。”
Ruby 一直以来都和一个强大的开源河区有着密切的关系。Kevin Trowbridge 是 Qwoted 的首席技术官,他认为,语言本身的性质与此有很大关系。“它是所有编程语言中最有文化的,”他说,意思是“它编写起来很简单,很容易读懂。这也是你拥有一个很强大的社区的原因,以及它的哲学,即它为产品、开发人员的生产力和幸福感而优化。”
但是,这些优势并没有对 Ruby 和 Ruby on Rails 产生什么实质性的影响。在此期间,其他的语言和架构也没有停滞不前。Matthew Boeh,2006 年就开始了 Ruby 的开发,他说,“Rails 是在 Web 转型和发展的关键时期诞生的。它既受益于这种增长,也推动了这种增长,但它不会是唯一的成功故事,这是一个预料之中必然发生的事情。”
Boeh 最近在 TypeScript 商店的 Lattice 担任高级软件工程师的工作。“你可以说 Ruby 是它自己成功的牺牲品,因为它的社区是近年来命令行复兴的重要推手,”他说,“在 21 世纪早期,它向那些从未听说过 Lisp 的人介绍了 REPL 驱动的开发,向那些会被 Perl 的 CPAN 吓跑的人介绍了包管理,向那些高度企业化的 Java 世界以外的人介绍了测试驱动的开发,诸如此类。这些都是当今桌上的筹码。但是它们都被 Ruby 爱好者普及和使用了。”
如果说现在有一种语言在 Ruby 曾经统治过的领域里占主导地位,那就是 JavaScript。只有当这种语言摆脱浏览器,接管世界其他地方时,这才成为现实。New Relic 的开发者关系部主任 Jemiah Sius 说:“随着 JavaScript 成长为全栈语言,工程师已经能够用一种语言甚至是共享代码库来构建前端、后端和移动项目。Ruby 很容易学习,而且有很高的安全标准,还有一个活跃的社区。但当有人想到全栈时,他们会想到 JavaScript——Node.js,React,或任何他们喜欢的框架。”
Qwoted 的 Trowbridge 指出,JavaScript 之所以能够承担起这一重任,因为这种语言已经从开发人员曾经鄙视的语言中得到了改进。事实上,随着时间的推移,它变得越来越像 Ruby 了。“浏览器供应商努力使其形式化、标准化、简化和增强,”他说,“它比以前的 JavaScript 好多了。”
“目前形式的 JavaScript 生态系统在 2004 年是不可想象的,这不仅需要命令行的复兴,也需要 Web 平台的腾飞。”Lattice 的 Boeh 补充道。“你知道吗,从 1999 年到 2009 年,发布一个新版本的 JavaScript 标准花了整整十年的时间?我们现在每年都有一个。Rails 在最后一个时期变得非常重要,在那个时期,即使不懂 JavaScript,也可以成为一个全栈开发人员。”
与此同时,Python 已经主导了当今最热门的发展领域之一,即人工智能和机器学习。Bhardwaj 说:“Python 在科学界很受欢迎,因为他们可以比以往更快地建立模型和算法的原型,所以它比 Ruby 领先好几年。另一方面,Ruby 被认为执行缓慢,并未受到开发者的重视。”New Relic 的 Sius 也同意这一观点,他说:“当有人想到一种通用语言,可以创造从游戏到虚拟现实,到人工智能,再到机器学习的一切时,每个人都知道 Python 是最大的赢家。”
有很多原因促使 JavaScript 和 Python 超越了 Ruby,它们超越了语言本身的品质。“理论上 Python 和 Ruby 是相当的,”Qwoted 的 Trowbridge 说, “它们都是动态的、解释性的脚本语言,最适合在服务器上使用。它们不能非常有效地使用内存,因此运行起来很昂贵,但它们具有令人难以置信的灵活性,所以它们编写起来也相当快,对初学者也很友好。”
但是当涉及数据科学时,Python 就有很大的优势,因为像 TensorFlow 和 Keras 这样的库现成可用。Bhardwaj 说:“这些框架使程序员很容易开发数据可视化和编写机器学习的程序。”
同时,JavaScript 已经催生了看似无穷无尽的库,开发人员可以轻松地下载并调整这些库,以满足几乎任何目的。Trowbridge 说:“作为一个技术专家,你可以按照你认为正确的方式进行你自己的英雄之旅,”。但是说到 JavaScript 时,“这些库都很出色。为什么要忽略所有这些呢?”
其中许多库是由社区成员开发的,这激发了其他人的贡献,这是参与开源的任何人都熟悉的雪球效应。但有一个大玩家在这里产生了巨大的影响。Python 的 TensorFlow 被 Bhardwaj 称为“游戏规则的改变者”,由谷歌发布,该公司紧随学术界的步伐,将 Python 作为自己的内部脚本语言。作为主流网页浏览器的制造商,谷歌显然也对提升 JavaScript 有兴趣。而且 Trowbridge 认为谷歌在使 JavaScript 比以前更快、更有内存效率方面功不可没。他说:“在某些方面,它感觉几乎像一种低级语言。同时,人们普遍认为 Ruby 在性能上是落后的,部分原因是它缺乏同样的企业赞助商,没有资源来改进它。”
而在一些 Ruby 曾经兴盛一时的领域,它并没有被另一种语言所取代;相反,情况已经发生了变化,所以这些领域已经无法辨认了。“我最初是为一家当地创意公司的客户制作营销网站和在线商店,我认为这也很容易错过网络开发世界的底层已经被自动化的程度,Lattice 的 Boeh 说。“在几年内,整个业务不再可行 -- 没有人对这样的定制网站感兴趣,因为他们可以用 WordPress 或 Shopify 做得相当体面。”
尽管如此,Ruby 并没有消失 --- 而电子商务巨头 Shopify 是最大的原因之一,因为 Ruby on rails 是它的主要开发平台。“Ruby 仍然是创建电子商务应用程序的最佳选择,因为它的动态功能和灵活性,”BoutiqueSetup.net 的 Bhardwaj 说,“你可以通过不同的模块构建你的应用程序,并在以后再修改它们。这使得更新应用程序以获得更多功能变得更容易。”
虽然 Shopify 显然没有像谷歌这样的规模,但它的目标仍然是作为 Ruby 的赞助人,就像谷歌为其喜爱的语言所做的那样。例如,Shopify 最近开发了 YJIT,这是一个即时编译器,可以提高 Ruby 的性能,并已被纳入 Ruby 标准。
Qwoted 的 Trowbridge 表示,Ruby 也在蓬勃发展“作为一种优秀的服务器端‘胶水’语言,它可以很好地用于 Web 应用程序的服务器组件,就像在 Rails 的‘仅 API’模式中一样。” 他指出,在某些方面,这种角色“使 Ruby 基本上回到了它的起点。”
总而言之,几乎所有与我交谈过的人都认为,Ruby 和 Ruby on Rails 将继续在许多环境中使用。Trowbridge 说:“有许多语言仍然被大量使用并具有相关性,而不像以前那样热闹了,我会把 Java 作为最主要的例子,并建议 Ruby 和 Java 将分享类似的发展轨迹。”
最后,从 Ruby 的社区中,你似乎找不到其他语言对 Ruby 的热情和热情,即使是那些在许多领域“击败”Ruby 的语言。例如,Lumenova AI 的首席技术官 Cosmin Andriescu 说,“ Rails 仍然有一个主要的优势,它拥有大量的 Ruby gem 库,相对于很多 JavaScript 框架来说,这些框架拥有不稳定的 API,在所有必要的 Web 开发工具中都不够成熟。”Boeh 更直截了当地将 Python 描述为“我见过的最讨厌使用它的人的语言”。
“我仍然在个人项目中使用 Ruby,并希望我能够再次专业地使用它,”Boeh 补充说,“现在 Ruby 世界有很多令人兴奋的发展,截至 6 个月前,还有很多的就业机会。Ruby 永远不会再成为下一个大的新事物,但我认为它将继续存在下去。”
Josh Fruhlinger,作家兼编辑,住在洛杉矶。
原文链接:
https://www.infoworld.com/article/3687219/whatever-happened-to-ruby.htl
声明:本文为 InfoQ 翻译,未经许可禁止转载。
免费版“Github Copilot”,编程能力还翻倍?!谷歌硬刚微软,推出全新Colab编程平台
微信扫码关注该文公众号作者