我觉得 Ruby 不够动态…

发布: (2026年5月4日 GMT+8 22:58)
5 分钟阅读
原文: Dev.to

Source: Dev.to

Introduction

这篇文章说实话更像是个人的随想,而不是技术文章。

过去几年里,我逐渐成为了 Crystal 的信徒。从这个角度审视 Ruby 最近的动向,我有时会想:“那正是 Crystal 社区多年来一直在深耕的领域,而 Ruby 的真正优势并不在这里,对吗…?” 我一直没法把这种感觉和很多人分享,这让我感到很沮丧。

我只真正了解 Ruby 和 Crystal,所以对自己的想法缺乏信心,常常处于一种模糊的状态。把这些想法写下来可以帮助我梳理思路,于是鼓起勇气写下这篇个人随笔。

Missing Reversibility in Ruby

我在 Ruby 中感受到的不完整之处在于许多操作缺乏可逆性。可以定义一个变量,但很难干净利落地删除它。模块有 include,却没有 de‑include。虽然有 remove_methodremove_constundef_methodUnboundMethoddefine_method 等机制,但似乎没有一个一致的可逆模型来把方法或行为从一个结构中取出并安全地移植到另一个对象结构中。

Ruby 被视为动态语言,允许在运行时进行各种修改。然而,这种自由似乎主要倾向于“以后添加东西”。能够删除已添加的内容、拆解结构并重新组装成另一种形式,或撤销这些更改的能力,并没有得到系统化的实现。

也许 Ruby 并没有足够的动态语言特质。

A More Dynamic Ruby?

理想情况下,如果有一种 Ruby 实现能够像机器学习那样,接受输入数据和期望输出,然后在运行时的元层面上探索如何优化其对象结构,那将会很有趣。作为其基础,我想它需要能够观察、转换和重构自身对象的机制——尽管我并不确定这是否真的可行。

即便实现了类似的东西,实际使用时可能也会被划分为两个阶段:

  1. 通过学习或编译生成对象结构
  2. 执行生成的结构

我觉得那样会相当乏味。

Comparison with Crystal

我对 Crystal 深入研究,已经稍微远离了 Ruby。有人可能会认为 Ruby 应该能够做更多类似 Crystal 的事。但实际上需要的恰恰相反。Crystal 有其无法逃脱的结构约束。它通过对类似 Ruby 的灵活性加以限制,来实现速度和低内存占用。作为一个 Crystal 信徒,我认为如果你想要一门语言能够做 Crystal 那样的事,Crystal 本身更适合。让 Ruby 去做同样的事并没有什么有趣的,我想看到的是只有 Ruby 能做到的东西。

与 Crystal 相比,Ruby 是一门面向工业的编程语言,因此在很多方面它不能随意行动。能够在运行时自由转换对象结构的语言会很危险,工业界大概也不欢迎。不过,奇怪的是,在主流语言中,Ruby 却常被视作最动态的语言之一。我的直觉是,语言的世界里仍有一个更为动态的广阔前沿等待被探索。

Conclusion

我希望有一天能看到有人尝试把编程本身的世界进一步扩展到更动态的领域。

This post was machine‑translated from Japanese into English using ChatGPT.

0 浏览
Back to Blog

相关文章

阅读更多 »

无符号大小:五年之误

快速提示给不熟悉 C3 的读者:它是一种遵循 C 传统的系统语言。以下具体细节是 C3 的,但这些权衡适用于任何语言……

DAG 工作流引擎

DAG 工作流引擎:一个面向生产的 DAG(有向无环图)工作流引擎,由 YAML DSL 驱动。验证、执行并可视化工作流,支持…

代码是一种商品。判断不是。

价值转移:AI 能编写代码——高质量代码、整洁代码、高速代码。这并不使开发变得简单;它改变了真正价值所在的位置。当代码…