文章摘要
AI编程工具如Cursor和Claude Code正在消除编程语言之间的障碍,使开发者能够跨语言工作。作者原本专注于Ruby开发,但在2025年借助这些AI工具,成功参与了C++、C和Rust项目,实现了职业转型。这一转变得益于团队需求的变化和AI工具的辅助,极大地扩展了开发者的技术能力。
文章总结
标题:AI编程助手正在消除编程语言障碍
在2014年至2024年的十年间,我是一名专注于Ruby的开发者,主要工作在Ruby生态系统中,包括Rails开发以及Ruby的核心工具如IRB、RDoc和debug gem。然而,尽管我在技术栈中游走,但我始终局限于Ruby的边界。Ruby不仅是我的主要编程语言,几乎是我唯一掌握的语言。
这一情况在2025年发生了改变。这一年,我开始参与Sorbet(C++)、RBS解析器(C)以及ZJIT(Rust)等项目。这一转变得益于多种因素,尤其是AI编程工具如Cursor和Claude Code的引入,这些工具在Shopify内部得到了广泛推广,极大地改变了我的职业生涯。
机遇的完美风暴
在深入探讨AI的影响之前,我需要承认两个关键因素促成了这一转变:
首先,我们Ruby开发体验团队的路线图发生了变化,要求Sorbet支持RBS,这意味着我不得不开始接触C++和C等系统编程语言,这些语言涉及的概念是我在Ruby中从未遇到过的。
其次,Shopify的Ruby和Rails基础设施团队中有许多乐于分享知识的专家,如Alexander Momchilov、Alexandre Terrasa和Max Bernstein等。他们的指导和辅导为我提供了学习C/C++/JIT基础知识的机会。
然而,真正不同的是,AI从根本上改变了学习曲线。
系统编程项目的复杂性
以ZJIT为例,这是一个新的即时编译(JIT)Ruby编译器。这个项目完美地展示了挑战:它既需要深入的概念理解(如JIT和垃圾回收的工作原理),也需要语言和工具特定的专业知识(如Rust的惯用法、C编程惯例和Ruby的构建系统)。在ZJIT项目中,我需要同时处理多个领域:
- Rust(ZJIT的编写语言)
- C(Ruby的编写语言)
- JIT知识(编译器理论、优化策略)
- ZJIT特定概念(其架构和设计决策)
- Ruby内部机制(虚拟机的工作原理)
- Ruby构建系统(基于autoconf和Makefile等工具的特定惯例)
一个拉取请求通常同时涉及2到4个领域。Claude在前三个方面(语言语法、通用概念、标准模式)非常有用,但在后三个方面(项目特定知识、深度内部机制和构建系统的怪癖)则表现不一。尽管如此,这仍然将我的学习障碍减少了一半。
AI作为互补的编程伙伴
真正的突破在于,我不再将AI视为代码生成器,而是将其视为具有互补技能的编程伙伴。这并不是让AI为我编写代码,而是我们像一对工程师一样合作,各自发挥优势。AI在语言特定的语法和模式上比我更了解,而我则更理解项目需求和约束。这种合作模式创造了一种高效的学习动态:
- 我提供任务需求和项目背景
- AI识别现有模式并充当语言专家
- 我质疑某些方法是否可行
- AI通过实际修改代码或推断理论,并给出结果
- 通过对话,我既学习了语言,也学会了如何有效应用它
例如,当我需要为ZJIT分析Ruby字节码指令时,我可以让Claude Code检查之前做过类似工作的拉取请求,并逐行解释我不理解的部分。我可以问一些“愚蠢”的问题,如“为什么JIT编译器需要分析?”而不用担心浪费别人的时间。我可以立即获得对不熟悉的Rust语法的澄清。在这个过程中,我逐渐建立了对语言和系统的理解。
当然,有时我们也会一起走错方向,这时只能依靠我的导师和团队成员的澄清和知识分享来纠正。AI加速了学习,但人类专家在纠正错误方面仍然不可替代。
语言障碍正在消失
最让我兴奋的是,我们不再需要花费100多个小时学习C语言才能为C项目做出贡献。AI充当了第二双眼睛,帮助我们避免新手常犯的错误,如使用错误的语法声明变量、误解类型惯例或与不熟悉的工具斗争。我们可以从第一天就开始做出有意义的贡献,边学边做。
这并不意味着取代深度专业知识——我们团队的语言专家仍然不可或缺。但这确实意味着,更多的开发者现在可以在多种语言中高效工作。语法、标准库函数和常见模式的认知负担可以被卸载,让我们专注于解决实际问题。
对于一个花了十年时间成为“Ruby开发者”的人来说,在不到一年的时间内成为多语言开发者,感觉是革命性的。我怀疑我只是这一趋势的早期参与者,这一趋势将彻底改变我们对编程语言专业化的看法。
评论总结
主要观点总结:
AI作为编程伙伴的积极影响:
- 观点:AI可以作为编程伙伴,帮助开发者学习新语言和技术,提升效率。
- 论据:
- "This is great, and I think this is the right way to use AI: treat it as a pair programming partner and learn from it." (评论1)
- "AI has been incredibly helpful in answering my questions and speeding up my learning." (评论25)
AI降低学习新语言的门槛:
- 观点:AI使得学习新编程语言变得更加容易,减少了入门障碍。
- 论据:
- "entry barrier is much lower now. research advanced topics is much faster." (评论8)
- "AI has basically removed my fear with regards to programming languages." (评论10)
AI对主流语言的偏好:
- 观点:AI在处理主流语言时表现更好,可能导致非主流语言更难普及。
- 论据:
- "AI makes mainstream languages (for which a lot of data exists in the training data) even more popular." (评论6)
- "The less mainstream language, the less exposure in the training set leads to worse output." (评论20)
AI生成的代码质量问题:
- 观点:AI生成的代码可能存在错误,尤其是对于不熟悉的语言或复杂任务。
- 论据:
- "It got it wrong. The command was generated outside of the for, and never updated inside the loop effectively making it useless." (评论17)
- "I know how many mistakes these tools make in the languages I know well - it also makes them in the ones I don’t." (评论25)
AI对编程思维的影响:
- 观点:AI可能削弱程序员的系统性思维,导致对代码的理解不足。
- 论据:
- "Writing C or assembly without fully reasoning about what’s going on is going to be a really bad time." (评论11)
- "What about the part of programming and software development that relies on programmatic/systemic thinking?" (评论18)
AI对开发效率的提升:
- 观点:AI可以显著提高开发效率,尤其是在跨领域任务中。
- 论据:
- "the biggest productivity unlock from AI in the dev workflow is that it enables people to more easily break out of their box." (评论2)
- "AI tools make it so much easier to shift gears between two or more languages." (评论28)
AI对编程语言设计的影响:
- 观点:AI可能推动编程语言向更严格的类型检查方向发展。
- 论据:
- "I think AI will push programming languages in the direction of stronger hindly milner type type checking." (评论4)
- "Maybe we will finally see M-expressions for Lisp developed some day?" (评论14)
总结:
评论中普遍认为AI在编程中起到了积极的辅助作用,尤其是在学习新语言和提升开发效率方面。然而,AI生成的代码质量、对主流语言的偏好以及对程序员系统性思维的潜在负面影响也引发了担忧。总体而言,AI被视为一个强大的工具,但其使用仍需谨慎,尤其是在复杂任务和非主流语言中。