30岁的鲁比是处于中年危机还是文艺复兴?

生活作者 / 花爷 / 2025-04-17 16:59
"
    Ruby的创造者松本幸弘(Matz)于1995年12月发布了这门编程语言的第一个公开版本,使Ruby差一点就迎来了它的30岁生日。它

  At 30 years old, is Ruby in a mid-life crisis or a renaissance?

  Ruby的创造者松本幸弘(Matz)于1995年12月发布了这门编程语言的第一个公开版本,使Ruby差一点就迎来了它的30岁生日。它在日语新闻组Usenet中传播开来,在万维网之前,新闻组是一种交流对话和媒体的流行方式,然后在20世纪90年代末传播到更广泛的社区。

  这要感谢Ruby友好的社区,在很大程度上也要感谢Matz。(Ruby社区有一句格言:“Matz很好,所以我们也很好。”)在今年萨拉热窝举行的欧洲Ruby大会上,Matz说他创造Ruby是因为他“懒惰又傲慢”。

  这听起来不像是为创建和维护一门编程语言30年的理由,但这是他嘲弄的谦卑的标志,这种谦卑滋养了Ruby,并在几十年里使Ruby成为一个普遍受欢迎的社区。

  随着web相关技术的快速发展,PHP和Python等轻量级、易于学习和易于运行的语言应运而生,这种编程语言应运而生。虽然这三种语言有无数其他用途,但时间和外部因素往往促使它们更受欢迎。对于Ruby来说,这是2004年的Rails框架和两本书——1999年Dave Thomas的《Pragmatic Programmer》和2005年WHY的《Guide to Ruby》*。

  虽然Thomas的书没有详细介绍Ruby,但它提到了它,并且作者在出版后的许多年里继续推广这门语言。总的来说,这本书已经取得了长期的成功,并且在Ruby早期就增加了人们对它的兴趣。

  有时候,Ruby on Rails感觉像是对Ruby本身的祝福和诅咒。对许多开发者来说,它们是一回事。Rails事件通常有更多的参与者。Ruby最近的许多特性和变化都来自Rails的上游。

  最后,Rails的创造者和37Signals的创始人David Heinemeier Hansson (DHH)在更广泛的编程和技术社区中是一个更知名的名字,并且在网上是一个声音。与我交谈的一位EuRoKu与会者表示,尽管社区不愿承认这一点,但这两个项目是高度相关的。

  21世纪初出现的许多Web 2.0网站都是在Rails上运行的,现在还有很多(至少是部分地),包括Airbnb、GitHub、Twitter(现在的X)、Netflix和Shopify(另一个主要的Ruby贡献者和赞助商)。Rails引入了许多特性,任何老开发人员(像我一样)都会记得它们是多么具有开创性,而许多年轻开发人员现在将其视为理所当然。作为当时的Drupal PHP开发人员,我记得我羡慕地看着数据库表创建、管理和迁移等特性。

  虽然对Rails的兴趣和搜索项跟踪显示只有过去的四分之一,但实际使用量仍然相当接近峰值。这表明许多使用它的开发人员处于高级级别,并且很大程度上知道他们在做什么。

  2024年的行星氩气调查证实了这一点:近70%的受访者拥有超过7年的经验,并且运行他们的应用程序的时间大约相同。我不知道有多少新项目选择Rails,但已有足够多的现成项目来维持一个20年的项目的健康兴趣。

  如果去掉Rails发布后Ruby的兴趣高峰,那么Ruby的受欢迎程度就和30年前一样。根据Tiobe的统计数据,它更受欢迎。2023年Stack Overflow调查显示,Ruby在50种语言中排名第16,IEEE和PYPL从2024年开始的调查也得出了同样的结论。

  我们很容易将负面或不准确的统计数据与前所未有的昙花一现进行比较,但随着时间的推移,你会看到一个不同的故事。

  每一门有几十年历史的语言都有一定程度的技术或社区包袱,我对Ruby的总体印象和在EuRuKo的活动中都是如此。社区是友好和热情的,但充满了推荐和人名,这对我来说毫无意义。诚然,所有社区都在一定程度上这样做,也许还有其他活动支持新来者,但很少有初学者级别的会谈。

  但遥远的过去已经说得够多了。Ruby最近增加了什么,改变了什么,或者计划了什么来保持当前开发人员的兴趣,或者吸引新的开发人员?

  Ruby是一种解释性语言,这意味着它在运行时从人类可读的代码转换为机器可运行的代码,通常是在运行在物理机上的虚拟机中。对Ruby和所有解释型语言的一个现代批评是,它们对于现代应用程序的规模来说太慢了。

  Ruby有一个默认解释器CRuby(以前称为“Matz的Ruby解释器”),它将代码翻译成由Ruby虚拟机运行的指令。但是Ruby和Ruby社区已经添加了可选的、性能更高的解释器,特别是在过去的几年里,包括多个“即时”(JIT)编译器选项,这是一种流行的技术,可以为解释型语言带来编译代码的速度。

  其他编程语言,如C、c++和Rust,都是编译语言,在运行之前将人类可读的代码转换为机器可读的代码。虽然主要不是为作为编译语言运行而设计的,但Ruby的其他选项使其成为可能。

  然而,编译语言并不是什么新鲜事物,正如我在KubeCon EU总结中提到的,WebAssembly (WASM)是一些人的现在和许多人的未来。基本上,WASM允许您在浏览器中运行受支持的语言(但现在也提供了更多,也许这是将来的文章),将复杂而强大的应用程序带到浏览器中。自2022年以来,Ruby已经能够编译为WASM。如果您在浏览器中使用过Mastodon,它是一个作为WASM运行的Ruby on Rails应用程序。

  在Ruby诞生之初,单体是常见的应用程序架构模式——用一种语言编写一个大型代码库,处理所有功能和服务。近年来,微服务已经成为更流行的架构设计,至少在理想世界中是这样。

  应用程序不再是一个大型的、多功能的、单语言的代码库,而是被分解成各种各样的代码库和相互通信的语言。Ruby在设计时从未真正考虑过这种架构,您可以跟踪它的衰落与微服务的增长是平行的。

  近年来,Ruby添加了一些特性来跟上变化,这些变化可能会让非Ruby开发人员感到惊讶或感兴趣。其中包括异步和线程代码,允许应用程序与其他应用程序和服务同时通信。

  许多现代语言都支持这些特性,但是Ruby的语法比Javascript简单。EuRuKo的开发人员对其他一些即将到来的功能感到兴奋,所有这些功能都将继续为使用该语言编码增加创造性的选择。

  虽然许多开发人员现在可能不把Ruby作为一开始的选择,但它也直接或间接地启发了许多其他语言,这些语言可能适合当代微服务驱动的开发人员。

  Elixir于12年前首次出现,它的灵感来自Ruby,它的创造者jos

  Valim来自Ruby社区。Elixir针对高并发性和低延迟进行了优化,使其非常适合金融和电信行业。

  十年前创建的Crystal也有Ruby社区的成员作为维护者。它的语法更多地受到Ruby的启发,但增加了使语言更加稳定和可靠的特性,包括以编译而不是解释的方式运行。

  为什么长期的Ruby开发人员仍然在使用它,尽管他们可以选择大量新的和闪亮的选项?Dave Thomas告诉我他是如何在20世纪90年代在Usenet论坛上从其他几十种语言中发现Ruby的。“我惊呆了。我和鲁比玩了一天。第二天我和它一起玩。从那以后,我一直在玩它,当我有选择的时候,它就成了我选择的编程语言。”

  为什么30年后Thomas还在继续使用Ruby ?“Ruby让你找到表达自己的方式,而不需要太多的指令。就像当您写散文并试图为您的单词找到正确的措辞和结构时,Ruby让您在代码中做同样的事情。你可以尝试各种好的表达方式,而不仅仅是一种方式。”

  我不太可能将我当前的任何项目切换到Ruby,而且我不确定有多少使用其他语言的开发人员也会这样做。然而,在与Ruby社区交谈时,我反复听到的一种态度是“创造性选择的自由”。

  许多其他编程语言社区都充满了关于“正确方法”的建议,当然,这取决于您与谁交谈。Ruby社区采用了一种不同的方法,它提供了一些温和的固执己见的工具,让您找到自己的方式。

  技术世界充满了来来去去的趋势,人们会告诉你你的决定是错误的。如果Ruby社区是少数几个不做评判的社区之一,那么无论它的趋势或使用率如何,它都将持续多久。

  _______

  *如果你还没有读过WHY的指南,它是免费的,包括编程书、漫画和自我实现的超现实之旅。由于这种奇怪的组合,它是分裂的。有人说这是他们唯一学习编程的书。另一些人则认为它完全令人困惑和困惑。尽管如此,其独特的风格和神秘的作者也增加了人们对这门语言的兴趣。

  Chris Chinchilla

  科技作家、播客和视频制作人。晚上看小说、玩游戏、听音乐。技术作家、播客和视频制作者。晚上看小说、玩游戏、听音乐。chrischinchilla.com

分享到
声明:本文为用户投稿或编译自英文资料,不代表本站观点和立场,转载时请务必注明文章作者和来源,不尊重原创的行为将受到本站的追责;转载稿件或作者投稿可能会经编辑修改或者补充,有异议可投诉至本站。

热文导读