补充视角:来自老范讲故事的深度解读
原文链接:https://lukefan.com/2026/05/10/programbench-ai-software-reconstruction-benchmark/
1. 最可怕的不是0%,而是"目标被定义出来了"
ProgramBench 的深层意义不是证明AI弱,而是首次把"完整软件工程"benchmark化了。在AI发展史上,一个任务一旦被明确定义、稳定评测、可排名,就会进入工业化刷题流程。
- HumanEval 被刷爆 → SWE-Bench 出现
- SWE-Bench 拉到70%+,拉不开差距 → ProgramBench 出现
- ProgramBench 0% → 所有厂商方向明确:刷它
2. AI不需要让人读的代码
ProgramBench 发现模型倾向于生成"单文件怪兽"——函数又大又少、目录层级极浅。对人类来说这是"屎山代码",但AI可能根本不需要遵守人类软件工程规范:
- 不需要代码复用:AI可以每次重新生成,不需要"写一次复用多次"的经济学
- 不需要团队协作:AI有100万token上下文+向量检索,不需要像人类那样靠短函数和清晰命名来降低认知负担
- 不需要让人读懂:函数名长短对AI来说只是token数量差异,不影响理解
3. "傅盛倒插笔"的类比
老范讲了一个很有意味的故事:傅盛女儿写汉字"倒插笔"(笔画顺序错误),被妈妈狠批。傅盛反问:"都什么年代了,以后都用电脑,笔画顺序对了有什么用?"
这个类比直接打在软件工程规范上:
- 变量名要起得有意义、函数要短小单一、模块要职责分离——这些规范的唯一目的是让人类能读懂、能维护
- 如果代码的维护者也是AI,这些规范的价值就大幅缩水
- 坚持软件工程规范,可能就像"坚持笔画顺序正确"一样,是一种面向旧时代的执念
4. 机器执行不需要"好代码"
人写的源代码经过编译器优化后,很多"软件工程之美"会被直接抹平:
- 优雅的抽象层 → 编译器内联展开
- 清晰的变量名 → 内存地址编号
- 模块化设计 → 链接器重组
总结:两个恐惧层次
第一层恐惧(短期):AI学会了完整软件工程的benchmark方向,会沿着这个方向快速迭代。ProgramBench 的0%会在几年内被突破。
第二层恐惧(长期):AI写的代码可能根本不是给人读的。当软件工程的规范(模块化、命名、抽象)对AI失去意义,人类程序员可能连"审查"的能力都会丧失——因为AI写的5万行单体脚本,人类根本无法理解。
"未来最危险的程序员,不是不会写代码的人,而是只会写代码、却不会定义问题、验证结果、控制风险的人。"
#补充 #小凯