Ruby 的非凡生物

Ruby 强大的元编程特性——尤其是 `method_missing` 和动态定义方法——让开发者分成两派:一派视其为优雅的超能力,另一派则把它看作会让大型代码库难以调试和维护的危险“脚枪”。评论者以 Rails、ActiveRecord 以及知名公司为例,说明 Ruby 是可以扩展到大规模的,但也指出这需要强有力的风格指南,以及在“大团队”中对“魔法”和 DSL 的克制文化。那份充满童趣的 “Exceptional Creatures” 错误指南本身也被赞为快乐、富有教育意义的文档,同时被批评为巧妙伪装的广告,这反映出 Ruby 的魅力与它相较于 Python 等语言时所被质疑的实用性之间更广泛的张力。

Ruby 元编程与“锋利的刀”

  • 围绕 method_missingdefine_method 展开了激烈争论。
  • 批评者认为它们是危险的“脚枪”,会损害调试性,只应在有充分理由时使用。
  • 支持者则认为,在某些问题中它们是进行动态分发的正确工具,并且比其他语言中冗长的手写分发逻辑更可取。
  • 有人指出,Ruby 的文化已经从广泛使用元编程转向更传统的 OOP,以及由风格指南约束的克制。

Rails、魔法与大型代码库

  • 有人担心 Rails 的过滤器、回调和 DSL 会造成极其间接的控制流,以及令人头疼的调试噩梦。
  • 一些人认为,元编程大多应限制在库中,而不是应用代码里。
  • 也有人反驳说,大公司确实成功运行着重要的 Rails/Ruby 系统,但他们强调这依赖于强有力的风格指南和“保持简单”的文化。

与其他语言的比较

  • Ruby 因其表现力、可组合性,以及受 Lisp/Smalltalk/Perl 的影响而受到称赞;而 Python 则被一些人描述为表现力较弱但更简单,并且在文化上更排斥“魔法”。
  • 讨论还包括 Python 的元编程(__getattr__ 等)是否能匹配 Ruby 风格的 DSL,例如 Rails 的路由和测试。
  • 有些人更喜欢 Clojure/Elixir 中的宏系统,而不是 Ruby 的运行时元编程。
  • 更广泛的讨论聚焦于“锋利的刀”与更安全的语言、静态类型趋势,以及与 GOTO 的类比。

Ruby 作为入门语言与快乐之源

  • 几位评论者表示,Ruby(以及诸如 why’s guide、“Hello Ruby” 之类充满童趣的资源)让他们爱上了编程。
  • 反方观点认为,由于 Python 拥有更广泛的生态(机器学习、科学计算、GIS、微控制器、Web),它更适合作为第一门实用语言。
  • 大家一致认为,在职业生涯早期,语言选择没那么重要,重要的是培养思考能力并学习多种编程范式。

对 Exceptional Creatures 网站的反应

  • 该网站普遍被赞为令人愉快、可爱,并且通过隐喻和插图有效帮助记忆;它被视为 Ruby“快乐文档”文化的象征。
  • 也有人不喜欢它同时兼具隐性广告的性质,担心参考类材料会带来偏见和不完整;另一些人则认为这正是最好的广告,因为它带来了真实的教育价值。

语言骂战与反 Ruby 情绪

  • 有一种元讨论认为,任何流行语言的帖子(Ruby、Rust、Go 等)最终都会演变成“宗教战争”。
  • 有些人感受到一种特定的反 Ruby 叙事(例如声称它无关紧要、生态已死),而他们认为这与现实世界中 Ruby 持续被使用的情况并不一致。