文章摘要
文章讨论了AI辅助编程(自动编程)的本质,指出即使使用相同的大语言模型,不同开发者基于自身直觉、设计和持续引导会产生截然不同的结果。作者强调真正的编程是开发者主导的过程,反对"氛围编程"(仅粗略描述需求就全权交给AI),认为优秀软件仍需要人类开发者的深度参与和把控。
文章总结
标题:自动编程——
在YouTube频道中,我最近开始用"自动编程"这个术语来描述借助AI辅助编写软件的过程(我相信很快这将成为"编写软件"的标准方式)。
值得注意的是,即使使用相同的LLM(大型语言模型),自动编程的结果也会因操作者的直觉、设计、持续引导和软件理念而大不相同。
请不要再说什么"Claude帮我即兴编写了这个软件"。所谓"即兴编码"是指完全依赖AI生成软件而不参与过程的行为。你只是泛泛描述需求,LLM会根据训练数据、当前运行中占主导的特定采样等因素,自发产生第一个想到的设计/代码。即兴编码者最多只会反馈结果是否符合预期。
真正的软件生产应该是你清楚整个过程的创作——这是你制作的软件。需要记住的是,LLM的预训练数据虽然只是学习的一部分(强化学习也占很大比重),但都来自人类创作。因此我们可以将AI生成的代码视为"我们的",我们有权这样做。预训练数据实际上是集体的馈赠,让许多人能够完成原本不可能完成的事,就像我们以某种方式连接成了集体思维。
如果说"即兴编码"是不太理解过程就产出软件(这有其存在价值,使软件生产民主化,我完全认可),那么"自动编程"就是在AI辅助下,严格遵循创作者对软件的愿景(这种愿景是多层次的:从宏观的实现方式到具体指导AI编写某个函数)来生产高质量软件的过程。当然,决定"做什么"也是这个过程中的关键部分。
作为程序员,我使用自动编程。用这种方式生成的代码就是我的——我的代码,我的产出。我和你都应该为此感到自豪。
如果还不信服,想想Redis。Redis并没有太多技术创新,最初只是一些基础数据结构和网络代码的集合,任何合格的系统程序员都能写出。那它为何成为如此有用的软件?因为它蕴含的思想和愿景。
编程已经自动化,但愿景(目前)还没有。
评论总结
主要观点总结
1. 自动编程的归属与责任
- 支持方认为AI生成的代码属于使用者,强调人的指导和责任(评论1、14)。
- "My code, my output, my production. I, and you, can be proud."(评论1)
- "AI辅助的迷你瀑布开发('增强级联'?)似乎是回归高质量软件的路径。"(评论14)
- 反对方指出代码是协作产物,需明确归属(评论11、24)。
- "LLM生成的代码是抄袭的,至少应注明来源。"(评论11)
- "代码是你与模型的合作成果,不能完全归功于自己。"(评论24)
2. AI编程的实践与质量争议
- 肯定态度认为AI提升效率,需结合严格验证(评论9、14)。
- "通过多轮自我审查和详细规范,AI可实现零修改交付。"(评论14)
- "关键在于构建验证循环,确保输出符合预期。"(评论9)
- 批评态度认为AI易产生低质量代码("slop"),且缺乏责任感(评论8、22)。
- "如果结果是垃圾,再怎么包装也改变不了本质。"(评论8)
- "低质量代码浪费算力,加剧资源短缺。"(评论22)
3. 术语与行业趋势的分歧
- 支持新术语者认为需区分传统编程与AI辅助(评论15、19)。
- "需要更好的术语来描述这种编程方式。"(评论15)
- 反对者认为无需新词,最终会回归"编程"本质(评论8、18)。
- "当AI编程足够好时,我们只会称它为'编程'。"(评论8)
- "为何要为LLM辅助编程发明新词?"(评论18)
4. 伦理与数据来源争议
- 批评者指出预训练数据涉嫌侵权(评论11、13)。
- "开源作者未同意其代码用于训练,这不是'礼物'而是窃取。"(评论11)
- "若代码是偷来的,就不是集体馈赠。"(评论13)
5. 行业焦虑与过度炒作
- 部分评论提醒警惕AI泡沫(评论21、26)。
- "别陷入'不用AI明天就会失业'的焦虑。"(评论21)
- "这篇文章空洞无物,只是末日情绪的宣泄。"(评论26)
关键引用保留
- 责任争议:
- "当出现bug时,你愿意第一个承担责任吗?LLM可不会。"(评论1)
- 质量争议:
- "人们不傻,'氛围编程'就是懒惰的委婉说法。"(评论8)
- 数据伦理:
- "LLM将代码洗白成完全属于你,这是最不道德的行为。"(评论11)
总结呈现了支持与反对AI编程的多方观点,涵盖归属权、质量、术语、伦理及行业影响等核心争议。