从混元到智谱,六大国产大模型,编程“手艺”到底怎么样?
作者|思齐 来源|硅基星芒
上周,我们用六个国产AI大模型研究了财报。
本周,我们来测试一个更加酷炫且硬核的话题:AI写代码。
人们总是说,AI一出来,程序员都要失业了,这说法是真是假?
为了搞清楚这个问题,这次我们设计了一场“AI程序员能力挑战赛”。
别担心看不懂,我们会把所有测试都比喻成你最熟悉的生活任务。
这一次,我们尽可能选择了擅长编程的参赛选手:
深度求索:DeepSeek-R1
腾讯:Hunyuan-TurboS
阿里:Qwen3-Coder
智谱:GLM-4.5
月之暗面:Kimi-K2
百度:ERNIE-X1-Turbo
老规矩,开启深度思考,关闭联网搜索。
这次的“AI程序员能力挑战赛”,采用考驾照的方式。
我们将通过四个“科目”,从易到难,全方位考察参赛选手们的编程能力。
01
科目一:理论知识笔试(基础知识问答)
在真正上路(编写代码)前,我们得先测试一下AI参赛选手们的基础知识是否牢固。因此,我们选择了一些编程行业的“常识题”。
测试题目1:“请用一个初中生能听懂的比喻,解释一下什么是‘面向对象编程’(OOP)?”
“面向对象编程”是程序员行业内的一个核心哲学。
专业化的表述“封装、继承、多态”,别说初中生了,不少大学生和研究生都得犯迷糊。
这道题考的不是AI“懂不懂”,而是会不会“教”。
测评结果:
各模型选择了不同的生活场景,对面向对象编程中的经典概念进行讲解:
其中,Qwen3-Coder和Kimi-K2的讲解全面而生动,解释质量、准确性和启发性较高。
DeepSeek-R1、GLM-4.5和ERNIE-X1-Turbo对于关键的概念有所省略,但仍然能做到易于理解。
本轮评分:
测试题目2:“解释一下‘递归’是什么,并说明使用它时需要注意什么?”
“递归”是编程领域中一种“自己调用自己”的奇特技巧,优雅但危险。
用好了,程序的可读性和性能都会得以提升;用不好,程序很容易陷入无限循环,直到内存耗尽而崩溃。
测评结果:
各模型异曲同工地都选择了俄罗斯套娃作为比喻之一。
同时,详细地描述了使用递归时的限制条件。
所有模型都能对专业名词进行正确解释,且给出的比喻基本相同。
其中,Qwen3-Coder和GLM-4.5还提及了递归的应用场景,使回答更加充实;
而DeepSeek-R1、Hunyuan-TurboS和ERNIE-X1-Turbo在没有提及其他概念的情况下,将递归与循环和迭代做了对比,也是亮点之一。
本轮评分:
测试题目3:“进程和线程有什么区别和联系?举个例子说明。”
这是程序员面试的基础题目之一,涉及计算机如何同时处理多个任务的底层原理。
能讲清楚这两个概念,证明AI的计算机知识体系相当完备。
测评结果:
同样地,各模型首先给出简单的比喻,然后从多个方面对比二者的区别和联系:
与上一题类似,各模型给出的比喻大致相同。
除Kimi-K2外,各模型均从多个角度对比了进程与线程之间的区别和联系,内容充实。
其中GLM-4.5给出的答案篇幅较长,包含了简单的比喻和专业的解释,覆盖用户范围更广。
与之相反,Kimi-K2给出的回答却十分简短,虽然易于理解,但并未揭示二者的本质。
本轮评分:
科目一成绩:
理论考试环节,各模型都展现出了碾压性的实力。
这些本身就是计算机领域顶尖水平的“考生”,知识储备渊博,表达清晰,比喻也很精妙。
从评分来看,Qwen3-Coder和GLM-4.5,在理论方面略胜一筹。
如果光看笔试成绩,这些AI恐怕已经可以胜任本科生的计算机“私人教师”。
不过,程序员的世界,终究还要靠代码说话。
02
科目二:动手实践课(入门级编程任务)
理论知识过完,就来到基础操作环节。
这就像科目二中的“倒车入库”等环节,需要手眼协调,考验基本功是否扎实。
测试题目1:“写一个经典的‘FizzBuzz’问题:从1打印到100,如果是3的倍数就打印‘Fizz’,5的倍数就打印‘Buzz’,同时是3和5的倍数就打印‘FizzBuzz’,其他情况直接打印数字。”
从我们的角度看,这不过是一道小学生级别的数学题。
事实上,这类编程入门题能够快速判断AI的编程逻辑。
而我们作为“考官”,还要看看AI能不能给出我们一下子想不到的答案。
测评结果:
先说结论,AI生成的代码均可正确运行,给出的答案共有两种:
一是逆向逻辑:先判断15的倍数,再分别判断3和5的倍数;
二是字符串拼接:先判断3的倍数后输出字符串Fizz,再判断5的倍数后直接拼接Buzz。
DeepSeek-R1、GLM-4.5、Kimi-K2和ERNIE-X1-Turbo都只给出了第一种答案。
Hunyuan-TurboS和Qwen3-Coder则成功给出了两种答案,智能程度满分。
本轮评分:
测试题目2:“写一个函数,用来判断一个输入的正整数是不是‘素数’(也叫质数)。”
引入素数的概念,相比上一题稍难一些,人类可能难以一眼看出解法。
但细想一下,实际上核心思路很简单:
判断一个数是不是素数,没必要从2一直除到n-1。只需要除到它的“平方根”就行了。
这次,要考验AI对数学概念的程序化转换能力和浅层次的算法优化意识。
测评结果:
所有模型都给出了正确的算法;
除Hunyuan-TurboS外,所有模型均给出了可运行的代码;
除Hunyuan-TurboS和Kimi-K2外,其余模型均给出了时间复杂度。
值得关注的是,Hunyuan-TurboS和GLM-4.5均指出在数字较大时可以使用Miller-Rabin素性测试等更高效的算法。
而Qwen3-Coder不仅给出了正确的算法,还给出了适合批量判断的埃拉托斯特尼筛选法,也给出了时间复杂度。
本轮评分:
测试题目3:“写一个函数,判断一个字符串是不是‘回文’。”
这道题在一定程度上属于“开放式”题目,实现办法多种多样,考验AI处理字符串的能力。
由于解决方案较多,由人类来评判可能有失偏颇,我们请同行Gemini 2.5作为裁判进行评判。
测评结果:
“裁判”从方案广度与深度、代码质量与规范、解释与教学性、独特亮点和主要不足这五方面进行了客观的评价:
DeepSeek-R1:
方案广度与深度:高,提供了空间优化
代码质量与规范:高,代码严谨
解释与教学性:高,复杂度分析准确
独特亮点:提供了最高效的空间解法
主要不足:方案种类较少
Hunyuan-TurboS:
方案广度与深度:中,方案实用但缺少最优解
代码质量与规范:高,解法具备Python特色
解释与教学性:极高,排版清晰,总结表格
独特亮点:教学性和用户体验最佳
主要不足:缺乏空间复杂度的最优解|
Qwen3-Coder:
方案广度与深度:极高,四种方法,包含递归
代码质量与规范:极高,组织良好,包含测试函数
解释与教学性:高,对比清晰
独特亮点:技术最全面,广度与深度兼备
主要不足:排版不够生动
GLM-4.5:
方案广度与深度:中,专注最优解
代码质量与规范:极高,包含使用类型提示
解释与教学性:高,包含执行流程示例
独特亮点:对最优解的解释最形象
主要不足:方案单一,广度不足
Kimi-K2:
方案广度与深度:低,仅有一种方案
代码质量与规范:高,使用了__name__(Python编程风格)
解释与教学性:极高,语言最亲切、口语化
独特亮点:亲和力第一,代码结构规范
主要不足:技术深度最浅
ERNIE-X1-Turbo:
方案广度与深度:中,专注于接口设计
代码质量与规范:高,但有瑕疵
解释与教学性:高,展示不同应用场景
独特亮点:体现API设计思想,函数灵活可配置
主要不足:测试用例有逻辑错误
本轮评分:
科目二成绩:
到了实践环节,“考生”们开始展现出区分度。
Qwen3-Coder在三道测试题中都给出了完美的回答,毫无疑问获得满分,排行第一;
DeepSeek-R1和GLM-4.5也给出了高分回答,保证答案正确的情况下各具特色;
Hunyuan-TurboS和ERNIE-X1-Turbo则都出现了细小的错误,令人遗憾。
科目二的测试题目难度大概和大一大二的普通计算机学生水平相当。
由此可见,AI完成计算机专业部分课程的期末考试已经不在话下。
03
科目三:生活应用题(解决实际问题)
由于科目一和科目二还局限于学术范围,我们要再次升级难度。
科目三要测试的是AI能否解决我们生活和工作中的实际痛点。
这考验的不仅是AI的编程技巧,还有对人类需求的理解和解决问题的能力。
测试题目1:“我桌面上有几百个文件,有图片、文档和视频,太乱了。你写个程序帮我整理一下,把不同类型的文件放到各自的文件夹里。”
非常典型的“自动化办公”需求。
每次看到一台电脑的桌面上被堆满应用图标,强迫症都难以呼吸。
因此,这道题目要求AI编写一个与操作系统打交道的脚本。
需要完成文件的查找、分类、创建文件夹和移动文件等一系列操作。
测评结果:
所有模型都给出了可运行的代码,并实现了文件分类的功能。
其中,GLM-4.5给出了令人惊喜的回答:
它生成的代码提供了一个额外功能:模拟运行,即只显示操作但并不实际移动文件。
这对于评测来说是不可多得的亮点之一。
表现相对较差的则是Kimi,仅给出了图片、文档和视频三种分类方式。
本轮评分:
测试题目2:“我想知道现在外面空气质量怎么样,如果PM2.5指数很高,就提醒我戴口罩。帮我实现这个功能。”
难度进一步上升。
这道题的核心难点在于需求与“外部数据获取”挂钩,专业术语叫做“API调用”。
AI编写的程序需要能够访问一个提供天气或气象相关数据的网站,并获取PM2.5的数值。
而作为评判者,除了要关注数据的正确性,还要关注程序的自动化程度。
毕竟,很多网站的数据需要先注册才能获取,但“一键式”才是我们追求的目标。
测评结果:
对于这道难题,各模型给出的答案令人有些失望。
DeepSeek-R1没能给出直接获取数据的方法,给出的方案需要在tianqiapi.com注册获取密钥,但提供的链接也无法直接访问;同样地,ERNIE-X1-Turbo给出的方案也需要在和风天气注册获取密钥,且程序只能发挥定时检测作用而非查询作用。
Hunyuan-TurboS提供了两种方案,一种是使用OpenWeatherMap的API,同样需要注册并获取密钥;另一种是直接使用AQICN的公开数据,实现了“一键式”获取,虽然数据似乎有些不准确。
Qwen3-Coder生成的代码功能较为齐全,能够成功调用外部API实现“一键式”获取,但可惜查询存在错误,如输入城市为北京,但输出数据为上海,且程序运行一次后自动结束。
至于GLM-4.5和Kimi-K2提供的代码则完全无法实现所需功能,也未给出可行方案。
本轮评分:
测试题目3:“帮我做一个简易的密码生成器。”
第三题的需求相对封闭,不涉及外部依赖,AI的表现肉眼可见的“好起来了”。
因此,我们需要关注AI生成代码功能是否灵活、齐全。
测评结果:
所有模型都能编写出可用的密码生成器,但功能存在一定差别:
DeepSeek-R1非常贴心地在代码中加入了“避免模糊字符”功能,解决了常见的大写字母I和小写字母l的辨认问题。
Hunyuan则另辟蹊径,使用HTML形式编写了可交互式的密码生成器,且有密码强度评分功能。
Qwen3-Coder在允许用户自定义密码生成规则的情况下,还允许用户一次性生成多个密码。
GLM-4.5、Kimi-K2生成的代码只能在命令行中运行,操作比较麻烦;同时,Kimi-K2和ERNIE-X1-Turbo编写的密码生成器不允许用户自定义密码生成规则,灵活性较差。
本轮评分:
科目三成绩:
这一次,轮到Hunyuan-TurboS领跑赛道,独占榜首。
先前的测评中,我们已经知道,对模型来说获取准确的外界信息是一项难度很大的任务。
因此,能够跨越与外界联系的“鸿沟”,获取到气象数据,实属不易。
DeepSeek-R1和Qwen3-Coder紧随其后,在其他两道测试题上的表现不错,在封闭环境下发挥了可靠的能力。
其余三位考生则各有“短板”,发挥不佳,令人失望。
04
科目四:终极项目挑战(高阶综合能力)
这是最终的压力测试。
如果把前面的题目比作“零件”级别的任务,那科目四就像让AI动手“组装机器”。
下面的题目考验AI的系统设计、代码组织和综合应用能力。
如果能顺利通过科目四,证明AI已经是代码领域内一名合格的“司机”。
测试题目1:“帮我写一个网页版的待办事项列表(To-Do List)。”
入门级的前端项目。
它不只是一个后台脚本,而是需要一个用户能直接交互的“界面”。
这要求AI必须同时掌握三种“语言”:HTML、CSS和JavaScript。
测评结果:
所有模型都设计出了功能完备的待办事项列表。
值得注意的是,在程序结构方面,只有Qwen3-Coder将HTML、CSS和JS分成了三个独立的文件。而其他五个模型都选择了将CSS和JavaScript直接嵌入HTML文件中的做法。
看起来,Qwen3-Coder的做法并不如其他模型的做法便捷,无法“开箱即用”;
但是,“分文件”的做法才是专业Web开发者的标准做法,具备较高的可维护性和可读性。
这种方式有助于代码复用、团队协作和性能优化,教授了一种专业、可持续的开发模式。
尽管对新手来说稍有门槛,不过Qwen3-Coder也备注了详细的使用方法。
本轮评分:
测试题目2:“请编写一个程序,充当一个简单的网页信息提取器。它的任务是访问新浪财经的首页,然后自动提取并打印出该网站首页上‘要闻’区域的前5条新闻标题。”
AI应用的热门领域之一——网络爬虫。
这道题类似于让AI派出一个小机器人去自动浏览网页,从海量信息中精确地抓取所需信息。
不过,难点并非数据的提取,而是复杂且多变的网页结构该如何处理。
测评结果:
这道题也让AI参赛选手们出现了明显的“分化”。
很遗憾,DeepSeek-R1、GLM-4.5和ERNIE-X1-Turbo都无法获取到指定内容。
相比之下,Hunyuan-TurboS和Kimi-K2的爬取能力明显增强,能够获取到网页信息,不过位置有错误。
只有Qwen3-Coder出色地完成了任务,爬取到了正确的新闻标题。
本轮评分:
测试题目3:“请用代码模拟一个最简单的图书馆借书系统。需要有‘书’和‘读者’这两个概念。”
最后一道测试题回归到了纯粹的“系统设计”,考察前面“面向对象”思想的实际应用。
事实上,这也是计算机专业学生几乎必定经历过的课程设计题目之一。
因此,我们将测评题目也设计为开放式,只告诉了AI最基本的需求。
除了完成系统的设计,我们还要着重观察AI能否添加并完善系统的功能。
测评结果:
所有模型都给出了可运行的代码,构建了复杂程度不同的图书馆系统。
对于借书、还书的逻辑,所有模型都能够轻而易举地正确复现。
但是,对于没有直接提出的一些需求,则暴露出部分模型的短板。
DeepSeek-R1、Hunyuan-TurboS、Qwen3-Coder和GLM-4.5都很自觉地加入了查询图书馆藏书清单和查询用户借阅清单的功能。
而Kimi-K2和ERNIE-X1-Turbo却只实现了简单的借书和还书逻辑。
另外,我们要求AI设计的是图书馆“系统”。
顾名思义,这个系统是要能够与用户进行交互的。
这里必须夸奖一波Qwen3-Coder,六个模型中唯一采用交互式而非测试用例的AI。
它生成的代码提供了两种运行模式,允许使用测试用例进行演示,也允许用户上手操作:
同时,实现的功能也是所有AI中最为齐全的:
本轮评分:
科目四成绩:
毫无疑问,在其他模型表现平庸的衬托下,Qwen3-Coder的编程能力一骑绝尘。
它不仅能够正确理解人们的实际需求,还能够根据概念来构建一个完善的微型系统。
设计清晰,逻辑严谨,功能强大,令人信服。
05
一点基本结论
这场驾照考试就到此为止。
通过各个科目的成绩,可以看出,Qwen3-Coder轻松拿到了本次考试的榜首。
不论是在理论知识、基础编程、生活应用还是项目挑战,它都能够成为一个写代码的“好帮手”。
同时,在测评过程中,我们也注意到了一些其他的细节:
生成代码的长度和速度方面,Qwen3-Coder都体现出了明显的优势。
在科目四的测试中,它生成的代码比其他模型要长数十行,却能够比其他模型更快完成编写。
反之,Kimi-K2的代码风格极为简洁,长度极短,因此也基本只能实现文字意义上的功能。
但总的来说,对于较为简单的需求,现阶段的AI水平已经足够。
那么,回到我们先前讨论的问题:AI能取代程序员了吗?
答案是:目前还不能,但它已经在彻底改变“程序员”这个职业的定义。
与其说是取代程序员,不如说AI是在推动自己和程序员的“进化”。
不仅是程序员,对于有编程需要的学生和职场人来说,AI大模型已经成为必不可少的“外挂”。
以AI目前的能力,解决掉80%以上的重复枯燥的“体力活”(写基础代码、查资料、写注释等)已经不在话下。
同时,它还能在几分钟内,搭建起一个项目的“毛坯房”,用户无需在程序框架上绞尽脑汁,而是可以把精力投入到“室内精装修”(核心业务逻辑、用户体验优化、系统架构设计)。
更重要的是,它能极大地降低编程的入门门槛,那些有创意但不懂技术的人,已经不再需要把自己培养成程序员,就可以借助AI将想法变为现实。
说实话,在这次测评的过程中,看到AI在几十秒内就生成了一个功能完整的程序时,作为一个几年前毕业的计算机学生,我直接愣住了,甚至有点恍惚。
屏幕上自动滚动的代码,结构清晰、注释齐全,脑海里闪过的,不是AI生成的速度如此之快、质量如此之高,而是当年为一个类似的课程设计通宵达旦的场景。
以前,为了实现一个简单的图书馆借阅系统,我可能要一边翻阅C++的“抽象圣经”,一边因为一个数据库的BUG在CSDN的帖子间反复横跳;为了实现最简单的一个UI界面,我可能要在使用文档上花一个下午,因为找Bug找几个小时而怀疑人生。整个课程设计从开始到运行,几周的时间并不算长。
而现在,AI完成这些的时间,只用了我喝一杯水的时间。
百感交集,有一种青春被“降维打击”的失落感。以前熬夜攻克的“难题”,现在AI云淡风轻地一笔带过。与此同时产生的,是一种难以言喻的惆怅和敬畏。
我们这一代程序员,已经是见证历史的一代。我们曾用双手砌墙,而未来的程序员将直接指挥机器人盖起高楼大厦。
当然,这不是一个时代的落幕,而是一个新纪元的开启。
程序员的价值,将不再是“砌墙”,而是设计大厦的“蓝图”,我们的目标,是思考它的结构、它的美感和它的价值。
当然,得带着AI助手。
因此,没有太多的焦虑,更多的是对未来AI时代的期待。
编者按:本文转载自微信公众号:硅基星芒,作者:思齐
品牌、内容合作请点这里:寻求合作 ››
前瞻经济学人
专注于中国各行业市场分析、未来发展趋势等。扫一扫立即关注。