AI写代码的未来

Posted by eagleboost on March 7, 2026

  AI不知道什么是好的代码,这事儿还挺让人闹心的。

  一直在观察AI写代码的表现,发现一个现象:AI第一时间生成的代码,要么不能运行,要么能运行但质量不够好,总是需要对它“施压”,告诉它哪些地方可以改进才会有更好的代码出来。

  网络上不论视频、微信公众号文章还是X上的长文,大都在分享AI如何让人赚了钱、如何写skillAI干活质量更高这些内容,但示范真实案例的却少之又少。

  前面写过,广告上AI的能力至少与我的真实感受是脱节的,也想过可能是我不太会用AI写代码,或者有点吹毛求疵,但今天看到的一则案例印证了我的观察。

  一个叫@KatanaLarp的推主写了一篇文章《LLM不会写正确的代码,它只会写合理的代码》,分析了一个用Rust重写SQLite的开源库,57.6万行代码几乎全部用AI生成。这个库能够通过所有的功能测试,也能够作为SQLite的一个替代品正常运行。但是当作者做基准测试的时候,发现了这个库和官方C语言版本库之间存在巨大的性能差距——没错,是成百上千倍,甚至上万倍的性能差距。

  作者发现AI生成的代码中不少是那种“安全的默认选择”。这非常符合大语言模型的行为特征——根据概率生成下一个最有可能的选择,对编程来说就意味着流行但不是最优甚至是平庸的代码。

  这事儿得从训练数据说起。AI是怎么学会写代码的?除了书籍、论文这些基础数据外,大部分真实代码来自于GitHub这类开源代码库。因为成本等各种原因,不可能有人一行行代码告诉AI在什么情况下用什么写法更好。那就只能靠”投票”了——星星多的开源库,代码在概率路径上被选择的可能性就越大,从AI的标准来说,代码就更好。

  但星星多只能说明这个项目受关注度高,并不能与高质量划等号。大多数人给星根本不会去读代码,更不是因为代码写得好而给星。有星星多的低质量代码存在,星星多的高质量代码也不能覆盖所有好代码的写法,而且一些好的设计和架构,并没有出现在AI的训练语料里。

  算法相关的代码倒是还好办。大多数算法在教科书上写得明明白白,经典的书籍也经过了时间和实践的检验。算法可以量化,好坏容易判断。AI在这方面表现不错,不会有哪个AI写个快速排序还能写成O(n^2)的。

  但设计就不一样了。不少开源的项目并没有在真实生产环境验证过,设计有缺陷很常见。而AI无从知道这些,于是那些普通但流行的代码可能反而占了主导。

  这事儿我昨天就验证过好几次。AI给我生成的代码,我问它“这里改成这样是不是更好”,它能说出个子丑寅卯来。这说明它不是判断不出来哪种更好——基础知识都学过,该懂的道理都懂——但是它根据概率判断,”这样写能让多数人满意”,因为训练数据里多数人就是这么写的。

  这里还有个成本问题。”根据学习到的知识判断代码好坏”这事儿需要推理,需要思考。而据我所知目前AI并没有像人那样,一边写代码一边动态思考“这里是不是该用个设计模式了”。它的做法更像是“快生成、人审核”的模式,而不是“慢生成、高质量”,因为不符合经济效益。但是很多人根本不审核,只要能运行就上网发文说“又被AI惊到了”、“我用AI一个星期发布了n个应用”……

  除非成本大大降低、速度大大提高使得实时推理可行,否则以目前的情况来说如果代码以后都由AI生成,下面的情况大概率会出现:

  第一,大量普通的代码。没有人类施压,AI不会主动把好代码生成出来。这会导致代码库里充斥着”能用但不够好”的代码。

  第二,大量重复的代码。人类为了维护成本以及其他因素的考虑,写代码时常会考虑重用——提取公共函数、封装成组件、创建工具类等等都是日常操作。但AI并不会,即便同一个目录下有类似的代码,它也是重复生成了事。这势必会产生大量重复代码。如果这些代码只是让AI自己阅读倒也无所谓,但如果让人来阅读和维护,那简直就是灾难。

  说不定很快会出现“古法编程”这样的概念,就是由人类程序员手搓的代码。跟手工作坊与机械化生产的关系类似,尽管生产效率比不上AI生成代码,但是能写出更精巧且质量更好的代码。

  实际上随着技术的发展,计算机科学强调的对时间空间效率的重视已经被很多人遗忘了。大多数应用由于对性能要求不高,就算到处是线性查找在强悍的硬件支撑下用户也感受不到性能的下降,大量程序员也只会知其然不知其所以然地使用各种封装好的库,于是导致了互联网上充斥着大量低质量代码。

  这些项目某种程度上说非常适合用AI随时生成随时丢弃。反正性能够用,代码质量要求不高,也不用维护——哪里不对就让AI重新生成一段。这种”用完即弃”的编程方式,也可以说是一种生产力解放。

  但大型、复杂、性能敏感、资源敏感的项目就不一样了。在这种场景下,人类程序员的深度思考、经验判断、对性能的不断改进、对良好设计的极致追求等,在算力紧张的情况下AI暂时还替代不了。

文中提到的链接

  • Your LLM Doesn’t Write Correct Code. It Writes Plausible Code: https://x.com/KatanaLarp/status/2029928471632224486

  • frankensqlite: https://github.com/Dicklesworthstone/frankensqlite