解决什么问题
很多代码生成评测只考短片段,难以反映真实问题求解能力。AlphaCode 选择编程竞赛作为测试场景,因为它要求理解题意、设计算法、写出完整程序,并通过隐藏测试和复杂边界条件。
核心方法
系统训练基于 Transformer 的代码模型,对每道题生成大量候选解。随后通过过滤、聚类和多样化选择,挑出少量提交。这个后处理阶段很关键,因为原始生成中有大量看似合理但无法通过测试的程序。
关键结果
AlphaCode 在类似 Codeforces 的竞赛中达到接近中位数人类选手的水平。重要之处在于,它不是补全局部代码,而是在未见过的算法题上生成完整可提交程序。
为什么重要
这篇论文说明,代码生成不只是下一个 token 预测。采样、搜索、过滤、测试和候选选择同样决定最终质量。后来的编程智能体也常采用类似思想:多生成几个方案,用执行和测试筛掉错误答案。
局限与存疑
AlphaCode 计算成本高,依赖大量候选生成。编程竞赛也只是软件工程的一小部分,真实项目还涉及长期维护、架构、安全、依赖、代码审查和与现有系统交互。
一句话:AlphaCode 让代码模型更像“生成加搜索”的系统。