谁能真正替代你?AI辅助编码工具深度对比(ChatGPT-Copilot-Cursor-New Bing)

写在开头

在过去几个月,AI相关的新闻引发了广泛关注。作为一名程序员,我在这股AI浪潮中感到既兴奋又焦虑。兴奋于AI对生产力的提升,同时也担心像Copilot这样的AI辅助编码工具会彻底改变程序员的工作方式,以极高的效率取代传统的软件开发流程。

当然,这些都是未来的事情。我们现在能做的,就是保持敏锐的嗅觉,迎接AI时代的到来,成为“未来世界的幸存者”。

本文将对Github Copilot、ChatGPT等AI辅助开发工具进行深入评测,旨在帮助大家快速找到适合自己的AI工具。相信我,请不要再怀疑这些工具是否能提升你的效率。尝试使用后,你会很快习惯并依赖它们。

本文评测的工具包括:

  • Github Copilot
  • ChatGPT (GPT-3.5)
  • New Bing
  • Cursor.so

这些工具可以结合使用,提升你的开发效率。文章最后将给出总结和我的一些想法。

Github Copilot

Github Copilot是由Github与OpenAI合作推出的人工智能代码辅助工具,基于OpenAI的GPT技术,为开发人员提供实时的代码提示和生成功能,帮助他们更快速、方便地编写代码。

当前的Github Copilot基于GPT-3模型,能够分析上下文并根据已有的代码和注释推断出应编写的代码。使用Github Copilot,开发人员可以减少手动输入代码的时间,提高代码质量和效率。它支持多种编程语言,如Python、JavaScript、TypeScript、Ruby等,并可与主流的集成开发环境(IDE)和文本编辑器配合使用。

使用体验

我已经深度使用Copilot接近一个月,尽管与同事朋友们讨论使用体验时,我很难用语言准确描述,但我可以总结为以下几点:

  • 编写熟悉的语言时,它能帮助减少重复模板代码的编写。
  • 编写不熟悉的语言时,它能够准确推断意图,直接生成代码,免去查询API的时间。
  • 它顺着你的思路生成代码片段,但从零开始生成整段代码的能力有限,通常需要手动修改。

接下来,我将介绍几种常用的使用方式。

1. 根据上下文生成代码

它可以根据函数名、类名和注释推断你想写的代码,帮你填充。

根据上下文生成代码

2. 根据代码生成注释

反过来,它可以理解你的代码并为你生成注释,只需在前面加上 // 前缀。

根据代码生成注释

3. 帮你起变量名

它可以帮助你起变量名,这对很多英语不好的程序员来说是个福音。毕竟,编码的30%时间都花在想变量名上。

帮你起变量名

4. 和你聊天,当然,是聊代码!

Copilot可以在你的代码中进行对话,但并不能进行常识性交流。它的交流范围受到限制,只会与你讨论代码。

和你聊天

以上是我常用的几种方式,查阅了很多资料后,这些基本涵盖了大部分操作方式。

编码能力

接下来,我将通过相似的试题来评测这些工具的编码能力,首先从Copilot开始。

独立编写:单例模式

我给它设定的题目是独立写一个单例模式,这是国内Java开发者的“常考题”。让我们欢迎第一位选手,Github Copilot。

单例模式编码

上面的编码动画展示了Copilot的表现,它自动生成了私有变量、私有构造方法和获取单例的公有方法。在写公有方法时,最初的代码没有考虑双重检查锁,我给了它一些提示,它补全了剩余的代码。

需要注意的是,由于单例模式在网上有大量学习资料,Copilot吸取了许多优秀代码,才能写得如此高效。这并不代表它能在所有复杂代码题上都能自动补全并保证正确性,因此大家需谨慎看待它的独立编码能力。

补全项目现有代码

第二个测试是让它补全项目的现有代码。我用自己写的代码举例,其中有一个DiffDTO实体类,addDiffDTO方法一行都没写,需要补全。

可以看到,它自动补全了代码,并且使用了已有的方法和变量。这是它的强项,能够根据上下文信息推断代码,写出的代码质量很高,80%的情况下无需大幅度修改。

不足之处

Github Copilot也有不足之处:

  • 所有代码上下文通过HTTPS传到云端(微软的服务器),尽管微软承诺不会泄露任何代码,但在国内网络安全环境下,这种数据处理方式可能会受到影响,用户需注意。
  • 对于复杂的代码逻辑,它的理解能力同样欠缺,擅长处理网络上有很多公开资料的代码段落和实现方式。

ChatGPT

接下来,我们来看另一位选手,最近火出的ChatGPT。

ChatGPT是一款基于GPT模型的聊天机器人,能够进行自然语言对话。它不仅可以回答用户的各种问题,还能学习和理解用户的需求,提供更恰当的回答和建议。

得益于其强大的语言处理能力,ChatGPT能够理解代码中的自然语言描述部分,并在训练阶段使用了大量代码相关文本语料,包括代码库、API文档、程序员交流论坛等,因此具有一定的代码理解和识别能力。

我使用的ChatGPT是GPT-3.5版本。我们直接进入正题,看看它的编码能力。由于是对话方式,我们需要向它描述需求。

编码能力

独立编写:单例模式

我:请用Java写一个单例模式。

写得不错,符合面试题的风格,提到了双重校验锁,但没有使用volatile。我们继续提问。

我:为何要用双重检查锁定?

ChatGPT解释了双重检查锁定的目的和实现方式,指出了可能存在的线程安全问题,并给出了使用volatile的建议。

我:上面的代码依然有漏洞,可以优化下吗?

ChatGPT进一步指出了volatile的细节问题,并解释了如何避免重排序问题。

这段对话展示了ChatGPT在处理面试题时的能力,尽管它的回答流畅,但并不代表在所有代码优化方面都能如此细致。

接下来,我们让ChatGPT解决一个Kotlin中并发接口的设计问题。

独立编写:Kotlin+Reactor设计并发接口

我:Kotlin中,如何用reactor框架写一个并发处理的方法,要求入参是List,方法中将字符串后面拼接同样的字符串,输出List

ChatGPT给出了示例代码,并解释了如何使用Flux实现并发处理。尽管它的代码可以运行,但在保证返回值顺序与入参顺序相同的情况下,真正的并发执行仍需进一步探讨。

不足之处

ChatGPT在代码方面的回答经过调优,能够作为程序员的辅助工具,但也有不足之处:

  • 面对不常见的复杂代码设计题,表现未必优秀。
  • 不能全程辅助编码,无法与Copilot相比。
  • 无法阅读整个项目的代码,上下文能力较弱。

New Bing

New Bing被描述为一个结合了搜索引擎和对话机器人的工具,能够为用户提供详细的答案和创意支持。

使用体验

New Bing目前在国内IP访问时会强制跳转到Bing搜索首页,因此需要使用科学工具访问。

编码能力

我们使用之前的测试例子(单例模式和Kotlin并发接口)来测试New Bing的编码能力。它在对话模式下能够认真地给出代码。

独立编写:单例模式

New Bing给出的代码比较基础,但在追问后能够快速修改。

独立编写:Kotlin+Reactor设计并发接口

New Bing在面对复杂问题时的表现与ChatGPT相似,但在某些情况下可能出现错误。

不足之处

与ChatGPT相比,New Bing在复杂代码设计题上表现相似,但由于使用了搜索引擎,可能更容易出现错误的结果。

Cursor.so

Cursor.so是OpenAI推出的一款IDE,能够帮助用户编写代码,并且是免费的。

编码能力

Cursor主要有两个功能:自动生成代码和根据当前代码进行聊天。它能够生成线程安全的单例模式代码,并支持聊天功能。

不足之处

  • 服务不稳定,基础功能缺失,无法称之为可靠的IDE。
  • 不支持插件和版本控制,整体使用体验较差。

总结

最后,总结这几个AI辅助编码工具的优缺点:

Github Copilot:

优点:
– 自动生成代码,提高开发效率。
– 学习项目中的代码风格,获取上下文生成代码。
– 支持多种编程语言,适用范围广。

缺点:
– 可能存在隐私问题。

ChatGPT和New Bing:

优点:
– 随时可用,不依赖代码项目,是查询的完美替代品。

缺点:
– 不能全程辅助编码,无法与Copilot相比。
– 对复杂代码逻辑的理解能力有限。

Cursor.so:

优点:
– 免费体验AI辅助编程。

缺点:
– 基础功能缺失,服务不稳定。

一句话总结,如果你希望将这些产品用于辅助编程,提高编码效率,使用Github Copilot结合ChatGPT是一个可行的方式。你可以在编写代码时使用Copilot,遇到问题时再求助ChatGPT。如果暂时不想为Copilot付费,可以只使用ChatGPT。不过,由于Cursor.so的使用体验不佳,建议等待其后续版本。

👉 野卡 | 一分钟注册,轻松订阅海外线上服务

(0)
上一篇 2025年6月9日
下一篇 2025年6月9日

相关推荐