实测ChatGPT、Claude、Gemini写代码:谁更靠谱?我跑了10个测试

上周五下午,我同时打开了三个浏览器标签页。左边是ChatGPT,中间是Claude,右边是Gemini。我要干一件事:让它们写同一段代码,然后看谁先翻车。

测试环境很简单。10道题,从“用Python写一个冒泡排序”到“用React实现一个带搜索功能的表格组件”。评分标准就三条:代码能不能直接跑、逻辑对不对、注释清不清楚。

结果有点意思。

基础题:三家都没掉链子

第一题是“写一个函数,判断一个字符串是不是回文”。这是编程入门的入门题。

ChatGPT给了13行代码,用了双指针。Claude给了15行,多了一个处理空字符串的判断。Gemini只有11行,最简洁。

三份代码都能跑。ChatGPT的注释最详细,每行都解释了。Claude的逻辑最严谨,考虑到了边界情况。Gemini写得最快,但注释基本没有。

说实话,这种题三家没差别。谁都能写,谁都不会错。

中等难度:Claude开始领跑

第四题是“用Python写一个简单的爬虫,抓取某个网页的标题和所有链接”。这题开始有坑了。

ChatGPT写的代码用了requests和BeautifulSoup,标准套路。但有个问题:它没有处理请求超时的情况。如果目标网站响应慢,程序会卡死。

Claude的代码多了一个try-except块,还加了个3秒的超时设置。它甚至写了个小提示:建议用session对象复用连接,提高效率。

Gemini翻车了。它忘了导入BeautifulSoup,直接写了from bs4 import BeautifulSoup,但前面没有写安装命令。新手复制这段代码,直接报错。

这轮Claude胜出。细节决定成败,它考虑到了生产环境里最常见的坑。

复杂任务:ChatGPT的隐藏优势

第七题是“用JavaScript实现一个带防抖功能的搜索输入框”。这题考察的是对前端性能优化的理解。

ChatGPT用了闭包实现防抖,代码结构清晰。它还在注释里写了防抖和节流的区别,以及各自适用场景。这属于“多给了”的内容。

Claude的代码更简洁,用了箭头函数和模板字符串。但它没有单独抽离防抖函数,而是直接写在了事件监听里。代码能跑,但不好复用。

Gemini写了一个带leading选项的防抖,功能最全。但代码有23行,比ChatGPT多了8行。而且它用了一个不常见的写法:let timerId = null,然后用clearTimeout(timerId)。这写法没问题,但不够直观。

这轮我选ChatGPT。不是因为代码写得最好,而是因为它教了你“为什么这么写”。对于想学东西的人来说,这比单纯的代码更有价值。

调试能力:Gemini拖后腿

第九题是故意挖坑的。我让三个AI写一段有bug的代码,然后让它们自己找bug。这是我人为设计的测试。

我给的代码是:

def divide(a, b):
    return a / b

问题很简单:没有处理除零错误。

ChatGPT秒回:加一个if b == 0: return None,并且建议用try-except捕获异常。

Claude也很快,但它多问了一句:你是想让函数返回None还是抛异常?这体现了它对用户意图的思考。

Gemini给出了修复方案,但代码里有一个拼写错误:retunr而不是return。它自己写的代码,自己没检查出来。

这轮Claude和ChatGPT平手,Gemini垫底。

最终排名:没有绝对的赢家

10道题跑完,我算了个分。ChatGPT和Claude各拿4分,Gemini拿2分。

但分数不能说明全部问题。

ChatGPT胜在全面。它写的代码最像“教科书”,注释、结构、命名都规范。适合新手照着学。

Claude胜在严谨。它考虑到了各种边界情况,写的代码直接扔到生产环境里大概率不会出事。适合有经验的开发者用来提效。

Gemini有亮点。有些题的代码写得特别简洁,但稳定性不够。如果你能自己debug,用它写个草稿再改改,效率也不低。

说真的,这三个工具现在都够用了。差别在于细节,在于谁更懂你真正想要什么。

如果你让我推荐:写业务代码用Claude,学技术用ChatGPT,快速原型用Gemini。但记住一点,别让它替你写全部。AI写的代码,最后还是要人来看。

毕竟出bug的时候,背锅的还是你。