AI编程工具比较

写这篇文章的契机

前段时间我写了篇文章《用AI写代码后,乐趣减少了吗?》,探讨了AI工具对编程体验的影响。最近因某些原因,我重新体验了几款主流AI编程工具,发现了一些新的思考点,因此想分享我对这些工具的最新体会。

AI编程工具概览

  • GitHub Copilot
  • JetBrains AI Assistant
  • Cursor
  • Windsurf
  • Gemini code
  • Claude code 因封禁了我的账号,不提了

一个静态与动态代码开发的案例

前段时间我开发了一个门户网站,用AI生成静态代码非常高效,只需提供截图,AI就能快速输出代码,大大提高了我的效率。

然而,当我开始实现动画效果时,比如"首页元素在页面载入时向上移动"以及"动画触发时机"等需求,情况变得复杂起来。这些任务需要我投入大量时间与设计师沟通需求、与AI交流要求,还要学习动画组件的基本用法。

这表明AI编程并非网上热议的"vibe coding"(纯靠气氛编程)那样简单,而是需要工程师全程参与:作为审核者,更多时候是作为新技术的学习者,不断地学习和优化AI提供的代码。"副驾驶"这个比喻更准确地描述了AI编程工具的角色。

AI对技术细节解释的局限性

最近我用Expo搭建了React Native开发环境。当我询问demo中视觉滚动动画实现思路时,各AI编程工具给出的答案大同小异,主要是罗列使用的组件、属性和方法。

对于不熟悉动画基础的开发者来说,仅靠这些表面信息是不够的。如果对scroll距离、React ref、React自定义hook、CSS动画属性、滚动时防止底部遮挡等概念不熟悉,那么在尝试实现新的动画效果时,将面临无尽的修改和反复调试。

这说明AI工具在解释深层技术原理方面仍有局限,需要开发者具备足够的基础知识来理解和应用AI的建议。

多任务Agent模式的局限

有些开发者尝试同时开启10个AI任务,让AI工具在后台并行处理多个需求。但这种方式存在明显问题:由于各任务之间缺乏上下文联系,AI生成的代码往往包含大量重复逻辑。

理论上,开发者可以先全面了解这10个需求,提前规划出可复用的逻辑,然后指导AI生成更高效的代码。但现实中,许多重复逻辑是在编码过程中自然浮现的,很难预先全部识别。

这种"上帝视角"的开发方式对开发者的全局规划能力要求极高,实际应用中效果往往不如理想。AI工具更适合作为迭代开发过程中的协作伙伴,而非完全独立的代码生成器。

AI编程工具的真正价值

在体验了多种AI编程工具后,我认为它们之间的差异并不显著。无论是GitHub Copilot、JetBrains AI Assistant还是其他工具,本质上都是换汤不换药。真正决定开发质量和效率的,仍然是开发者本身的技术素养和思维能力。

AI编程工具的真正价值在于:

  • 基础知识解惑:遇到不熟悉的技术概念时,AI可以提供快速解释,节省搜索时间
  • 新组件学习:学习新组件或库时,AI能够提供使用示例和基本概念解释
  • 静态页面生成:对于标准的静态页面或CRUD操作,AI可以生成初始代码,由开发者进行调整
  • 文档和测试:AI在生成文档、commit消息和测试代码方面表现出色
  • 错误诊断:帮助分析代码错误和日志问题,提供可能的解决方案

最有效的工作方式是:开发者先掌握相关技术知识,然后带着明确的需求和思路,让AI协助编写代码。这种"有经验的指导者+高效的执行者"的组合,才能真正发挥AI编程工具的价值。