实测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的时候,背锅的还是你。