近几个月,AI相关领域的新闻铺天盖地,程序员们同AI时代大潮相互碰撞,既充满兴奋,也不乏焦虑。作为一个深陷其中的程序员,这段时间我既对AI赋能生产力的潜力深感期待,同时也担忧例如Github Copilot这类AI辅助编码工具是否会完全颠覆传统开发,甚至将程序员置于被替代的境地。
当然,这些问题的答案未必立刻揭晓。我们能做的是保持敏锐的触觉,积极迎接AI的到来,成为“未来的幸存者”。本文基于我的实际体验,对市面上比较知名的几款AI编码工具进行了深度评测,希望可以帮助你快速找到适合自己的工具。
本次评测涵盖的工具包括:
Github Copilot
ChatGPT(GPT-3.5)
New Bing
Cursor.so
这些工具可以结合使用,从不同方面提升你的开发效率,因此它们之间并非完全是竞争关系。文章最后,我将对这些工具的总体表现做一个总结,并提出一些建议。
Github Copilot是由Github与OpenAI联合推出的一款AI代码助手,采用了GPT技术,旨在为开发者实时提供代码提示与生成能力。它能够根据代码上下文和注释推断开发者的意图,并自动生成代码片段。
这种工具的强项在于大幅减少重复性代码的编写时间,同时提升代码质量与开发效率。Copilot支持多种编程语言,例如Python、JavaScript、TypeScript、Ruby等,也能与主流IDE和文本编辑器集成。
在一个月的使用过程中,我发现它的优秀之处如下:
编写熟悉语言时:能帮助简化常用代码的编写,减少枯燥的重复劳动。
编写不熟悉语言时:解析开发者意图,生成较为合理的代码片段,免去频繁查询文档的时间开销。
辅助开发心流的顺滑体验:尽管难以直接完成完整的复杂代码,但在你已有框架的情况下,它生成的内容往往接近需求,且修改成本较低。
接下来是几种具体的使用场景:
1. 根据上下文生成代码
Copilot能够根据函数名、类名或注释推断代码内容,并进行补全。
2. 自动生成注释
它也可以反过来尝试理解你的代码内容并生成合理的注释。
3. 起变量名
Copilot能为变量命名,这对于英语不好或者对命名感到头疼的开发者,绝对是一项贴心的功能。
4. 代码讨论与建议
COPilot还支持在代码块中生成动态的建议,以协助代码优化,尽管它的对话功能较为有限。
为了评估Copilot的代码能力,我设计了一个经典的编码任务,让其独立编写一个单例模式。
独立编写:单例模式
Copilot在生成单例模式代码时,能够自动结合最佳实践生成线程安全的双检锁代码,并且在加入用户提示后,自动修补了代码中的薄弱环节。
补全项目现有代码
对于补全现有项目代码的任务,Copilot展现出了强大上下文分析能力,生成的代码绝大多数情况下无需大幅修改即可使用。
虽然Copilot整体体验极佳,但仍存在几个不足需要注意:
安全隐忧:COPilot需要将代码发送至其服务器进行处理,这可能在某些企业环境中受到政策限制。
复杂逻辑能力限制:无法处理开发者本人都难以捋顺的复杂逻辑或代码。
ChatGPT是一款基于GPT模型的聊天机器人,支持自然语言对话。它擅长回答多样化问题,同时也能处理一定程度的代码相关需求。
在与ChatGPT对话过程中,我测试了单例模式和Kotlin的并发接口问题,整体表现令人印象深刻。
独立编写:单例模式
ChatGPT能够生成线程安全的双检锁代码,并对“volatile”“双重检查”等关键点进行详细阐述。在继续追问时,它还能快速为回答补充新的细节,展现了良好的学习能力。
高级问题:Kotlin+Reactor设计并发接口
在复杂的Kotlin并发接口任务中,ChatGPT的初始答案但凡设计复杂性稍高,便可能出现错误代码,需要多次追问调整后才能得到稳定答案。
面对复杂任务,有时回答偏差较大,需多次尝试。
由于无法读取项目的上下文或加入工具链,其实际编码场景仍受限。
New Bing结合了ChatGPT与搜索引擎的能力,是一个加强型的AI助手。它的优势在于可以调用实时网络资源,通过综合答案帮助完成问题。
相比ChatGPT,New Bing略弱,特别是在多步骤编程任务中,其回答错误率和随意性更高。
不足之处
缺乏代码上下文的理解力,难以适应复杂项目开发。
结果容易受搜索引擎数据干扰,常出现偏差。
Cursor.so是一款新兴的免费AI辅助编程工具,其亮点在于内置支持类似Copilot的功能,对于预算有限的开发者是不错的选择。
生成代码能力: 能胜任基础代码生成,尤其是单例模式等入门任务表现良好。
服务和功能稳定性: 服务经常中断影响体验,基础功能(如Git集成、文件高亮)尚属缺失。
工具名称
优点
不足
Github Copilot
- 上下文分析优秀
- 集成主流IDE
- 提高编码效率
- 可能存在隐私隐患
ChatGPT
- 灵活的问答能力
- 支持多样任务
- 无法直接参与编码上下文
- 复杂任务中易出现错误
New Bing
- 引入网络资源,答案更全面
- 编程问题不如ChatGPT稳定
- 部分代码回答有错误或不完善
Cursor.so
- 免费
- 初步体验AI辅助编程
- 服务不稳定
- 基础功能与Copilot差距较大
如果希望在编码中全面提升效率,结合使用Github Copilot和ChatGPT是目前最优的选择。如果追求免费方案,可短期考虑Cursor.so,但仍需等待其后续版本来弥补现有不足。