ChatGPT vs Google Gemini写代码,谁更强?实测4个场景后我沉默了

上周我花了整整三天时间,用同一个需求让ChatGPT和Google Gemini各写了40个脚本。结果有点意外——ChatGPT在复杂逻辑上赢了,但Gemini在特定场景下能省掉你一半的调试时间。

别急,先看数据。

测试环境:公平吗?

我选了四个典型场景:Python数据处理、JavaScript网页爬虫、SQL查询优化、Shell脚本自动化。每个场景给出完全相同的需求描述,不提供任何额外提示。模型版本是ChatGPT-4(2024年5月版)和Gemini 1.5 Pro。

代码质量评分标准:运行成功率、代码可读性、注释完整性、边界处理能力。每项满分10分,共40分。

场景一:Python数据处理

需求:从CSV读取销售数据,按月份统计每个产品的销售额,输出到新文件。

ChatGPT输出了45行代码。用了pandas,加了异常处理,还自动检测了日期格式。一次运行成功。评分:36/40。

Gemini给了52行。也用pandas,但多写了一个数据验证函数——检查空值和重复项。问题是,它把日期格式硬编码成了“YYYY-MM-DD”,而测试数据里是“YYYY/MM/DD”。改了才能跑。评分:32/40。

ChatGPT赢了一局。 不过Gemini的数据验证思路值得保留。

场景二:JavaScript爬虫

需求:抓取某个新闻网站的头条标题和发布时间,保存为JSON。

ChatGPT用了axios+cheerio,经典组合。代码结构清晰,但没处理反爬机制。跑的时候被网站拦截了,加了User-Agent和延迟才成功。评分:28/40。

Gemini选择了Puppeteer,直接模拟浏览器。它自动处理了Cookie和请求头,还写了重试逻辑——第一次失败后等待5秒再试。一次通过。评分:34/40。

Gemini扳回一局。 说真的,这种需要模拟浏览器的场景,Gemini更懂行。

场景三:SQL查询优化

需求:有一个电商订单表(100万行),查询每个用户最近3个月的订单金额总和,要求5秒内出结果。

ChatGPT写了个窗口函数方案:ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY order_date DESC)。执行时间4.2秒。还附带了索引建议。评分:38/40。

Gemini用了子查询加关联:先筛选最近3个月数据,再分组聚合。执行时间6.8秒,超了。它没给索引提示。评分:26/40。

ChatGPT完胜。 SQL优化这块,Gemini明显经验不足。

场景四:Shell脚本自动化

需求:批量重命名某个目录下的所有图片文件,按“日期_序号”格式命名,日期从EXIF信息提取。

ChatGPT写了40行bash脚本,用了exiftool提取EXIF。但没处理图片没有EXIF信息的情况——运行时报错。改了一下才跑通。评分:30/40。

Gemini写了35行,同样用exiftool。它加了判断:如果没有EXIF信息,就用文件修改时间替代。一次成功。评分:36/40。

Gemini再赢一局。 边界处理做得更细致。

最终数据对比

场景 ChatGPT Gemini
Python数据处理 36 32
JavaScript爬虫 28 34
SQL查询优化 38 26
Shell脚本自动化 30 36
总分 132 128

ChatGPT总分高了4分。但注意,在每个场景里,两个模型的代码风格差异明显。

我的判断

ChatGPT更擅长逻辑推理和算法优化。写SQL、处理数据结构、设计类结构,它比Gemini稳。

Gemini在实战细节上更老练。处理异常、应对真实环境、考虑边缘情况,它做得更到位。

说白了,选哪个取决于你的需求。如果你要写核心业务逻辑,ChatGPT更可靠。如果你要写能直接上线的工具脚本,Gemini可能省心。

但别指望任何一个能完全替代程序员。两个模型都犯了低级错误——ChatGPT忘了反爬虫,Gemini硬编码了日期格式。代码写完后,人必须过一遍。

最后说个细节。测试中我注意到,ChatGPT的注释写得更像教科书,Gemini的注释更像经验分享。比如处理异常时,Gemini会写“这里可能遇到权限问题,建议用sudo运行”——这种提醒,开发者看了会心一笑。

数据不会骗人,但感受会。你自己试试,看看哪个更顺手。