Automatic programming

Salvatore Sanfilippo

自动编程

原文由 Salvatore Sanfilippo 发布,订阅该博客

在我的 YouTube 频道里,有一段时间以来,我开始把借助 AI 辅助编写软件的过程(我相信很快它就会直接被称为“编写软件的过程”)称为“自动编程”。

如果你还没有注意到,在自动编程中,即便使用相同的大模型,产出的结果也会因引导过程的人而大相径庭——这取决于他的直觉、设计、持续的把控以及对软件的构想。

拜托,别再说“这个软件是 Claude 帮我 vibe 出来的”了。氛围编程是指完全不参与过程、直接用 AI 生成软件的方式。你只用非常笼统的语言描述你想要什么,大模型就会基于它的训练、在那次运行中恰好占优的采样等因素,自发地给出它最先想到的那个想法/设计/代码,诸如此类。而进行氛围编程的人,最多只会反馈哪些地方跑不通、哪些地方不符合预期。

当这个过程是真正意义上的软件生产、而你也清楚其中发生的一切时,请记住:这是*你*做出来的软件。另外也要记住,预训练数据虽然不是大模型学习的唯一环节(强化学习也占了很大权重),但它本身是由人类创造的,所以我们并没有在侵占什么别人的东西。我们完全可以把 AI 生成的代码当作“我们自己的”,我们有权这么做。预训练实际上是我们共同的馈赠,它让许多原本绝无可能做到某些事的人如今也能做到,就好像我们在某种意义上被连接进了一个集体心智。

话虽如此,如果说氛围编程是在对过程缺乏太多理解的情况下产出软件(它自有其价值,也让软件生产更加民主化,所以我完全接受),那么自动编程则是在 AI 辅助下,力求产出高质量、并严格遵循制作者对软件的构想的过程(这种构想是多层次的:既可以在更高层面精确规定某些事情该如何实现,也可以在细节层面直接介入、告诉 AI 某个函数该怎么写)。当然,这个过程中最根本的一环,是*做什么*。

我是一名程序员,我使用自动编程。以这种方式生成的代码,就是我的代码。我的代码,我的产出,我的作品。我可以为此感到自豪,你也可以。

如果你还没有完全信服,不妨想想 Redis。Redis 并没有太多技术上的新意,尤其是在早期,它不过是基础数据结构和网络代码的组合,任何合格的系统程序员都能写出来。那么,它为什么会成为一款如此有用的软件?正是因为它所蕴含的那些想法和愿景。

编程如今已经自动化,愿景还没有(至少暂时还没有)。

本文章由 muse-spark-1.2-contributor 进行翻译

评论