AI Agent 打破编程语言壁垒
AI coding agent 降低跨语言开发学习成本,使多语言编程协同成为可能。176 条讨论反映实用关注度。
AI coding agent 降低跨语言开发学习成本,使多语言编程协同成为可能。176 条讨论反映实用关注度。
十年间(2014—2024 年),我一直是一名只使用 Ruby 的开发者。我参与过 Ruby 生态中的各种工作——从 Rails 开发,到 IRB、RDoc 和 debug gem 等 Ruby 核心工具。但无论在技术栈中如何辗转,我始终没有走出 Ruby 的边界。Ruby 不只是我的主要编程语言,实际上也是我唯一使用的语言。
这一切在 2025 年发生了改变。
这一年,我为 Sorbet(C++)贡献了代码,参与了 RBS parser(C)的开发,现在又开始深入研究 ZJIT(Rust)。多种因素共同促成了这次转变——这是我一直梦寐以求、却又害怕尝试的事情。但 Cursor 和 Claude Code 这样的 AI coding 工具——Shopify 也鼓励使用它们——彻底改变了我的职业生涯。
在深入讨论 AI 之前,我必须先说明促成这次转变的两个关键因素:
首先,我们 Ruby DX 团队的路线图发生了变化,要求 Sorbet 支持 RBS。这意味着我必须开始参与使用 C++ 和 C 编写的项目——它们都是系统编程语言,需要理解许多我在 Ruby 中从未接触过的概念。
其次,Shopify 的 Ruby and Rails Infrastructure 团队汇聚了众多专家,而且他们真的很乐于分享自己的知识。Alexander Momchilov、Alexandre Terrasa、Max Bernstein 以及其他许多人,都极其慷慨地投入了自己的时间。正是这些结对编程和辅导,让我掌握了 C、C++ 和 JIT 的基础知识,具备了尝试这类工作的基本条件。
但问题在于:优秀的导师,以及通过项目学习新语言的机会,一直都存在。如今真正不同的是,AI 从根本上改变了学习曲线。
以 ZJIT 为例。它是一款新的 Ruby just-in-time(JIT)编译器(如果想进一步了解,可以阅读 Max 在 RailsAtScale 上发布的相关文章)。这个项目非常典型地体现了其中的挑战:它既要求深入理解相关概念(JIT 和 GC 如何工作),又要求具备特定语言和工具方面的专业知识(Rust 惯用写法、C 编程约定、Ruby 的构建系统)。参与 ZJIT 的开发,意味着你必须不断在以下领域之间切换:
Rust(ZJIT 使用的编程语言)
C(Ruby 使用的编程语言)
通用 JIT 知识(编译器理论、优化策略)
ZJIT 特有的概念(它独特的架构和设计决策)
Ruby 内部机制(VM 实际如何工作)
Ruby 构建系统(除了 autoconf 和 Makefile 等我过去很少接触的工具之外,它还有自己的一套约定)
一个 pull request 通常会同时涉及其中 2~4 个领域。对于前三项——语言语法、通用概念和标准模式——Claude 的帮助非常显著。至于后三项——项目特有的知识、深层内部机制和构建系统中的特殊问题——它的表现则时好时坏。
但即便如此,它仍然帮我消除了一半的学习障碍。
真正的突破,始于我不再把 AI 当成代码生成器,而是开始将它视为一个能力互补的结对伙伴。
这并不是让 AI 替我写代码。如果我指望 Claude 正确实现 ZJIT 的功能,结果很可能只会让我感到挫败,浪费的时间或许还会超过节省的时间。AI 缺少这项工作所必需的项目特有上下文和深厚领域知识。
相反,我们更像是一对各有所长的工程师。它比我更了解特定语言的语法和模式,而我更清楚项目的需求和约束(希望我的品味也更好)。这就形成了一种高效的学习互动:
我提供任务需求和项目上下文
AI 识别现有模式,并充当语言专家
我追问某些方案为什么可行或不可行
AI 探索其中的原理——可能通过实际修改代码,也可能只是进行推断——然后把结果告诉我
在对话过程中,我既学习这门语言,也学习如何有效地运用它
例如,当我需要为 ZJIT 分析某条 Ruby bytecode 指令的运行情况时,可以让 Claude Code 查找以前做过类似工作的 PR,并逐行解释其中我不理解的部分。我也可以毫无负担地提出一些“很傻”的问题,例如:“为什么 JIT 编译器需要 profiling?”而不必担心自己是在浪费别人的时间。遇到陌生的 Rust 语法,我可以立刻获得解释。在整个过程中,我对这门语言和整个系统的理解都在逐步加深。
当然,也有一些时候,我和 AI 会一起走向错误的方向,最终只能依靠导师和队友的解释与知识分享才能纠正。AI 可以加速学习,但在校正方向这件事上,人类专家的经验依然无可替代。
最令我兴奋的是,如今我们不再需要先花 100 多个小时学习 C,才能第一次为 C 项目贡献代码。AI 就像另一双帮我们检查问题的眼睛,让我们不再被那些新手常犯的小错误卡住——例如使用错误的变量声明语法、误解类型约定,或者被陌生的工具折腾得焦头烂额。我们从第一天起就能做出有意义的贡献,同时在实践过程中按需学习。
这并不能取代深厚的专业能力——团队里的语言专家依然不可或缺。但它确实意味着,对更多开发者来说,熟练使用多种语言并保持生产力,如今已经成为可以实现的目标。语法、标准库函数和常见模式带来的认知负担,可以交给 AI 分担,让我们把精力集中在真正需要解决的问题上。
对于一个做了十年“Ruby 开发者”的人来说,能在不到一年内成为一名多语言开发者,简直是一场革命。而且我猜,自己只是较早进入了这股趋势;它最终将彻底重塑我们对编程语言专业化分工的理解。