文章摘要
作者认为当前的人工智能编程工具本质上类似于编译器,输入提示后生成代码,但效果有限。尽管新手和管理者对使用英语作为输入语言感到兴奋,但英语在精确性上存在不足。作者批评了人们追求表面利益而忽视真相的现象,并以自动驾驶公司为例说明市场对虚假真相的追捧。
文章总结
AI编程的真相
在当今社会,许多人更关注如何获取利益,而非追求真相。这种心态导致了一些不切实际的投资,例如在自动驾驶汽车公司上浪费了超过100亿美元。同样,AI编程领域也存在着类似的误解。
AI编程的本质
AI编程的最佳模型实际上是一个编译器。你输入一个提示(即“代码”),AI会输出该代码的编译版本。虽然新手和管理者对这种以英语为输入语言的编译器感到兴奋,但英语作为编程语言存在诸多问题:
- 不精确:英语在描述复杂逻辑时不够精确,只有在处理常见编程任务时才能勉强胜任。
- 不确定性:AI的工作流程具有高度不确定性,而编译器则遵循明确的语言规范。英语缺乏类似的规范。
- 提示的非局部性:提示中的任何部分修改都可能影响整个输出。
简而言之,AI编程之所以被认为有用,主要是因为现有的编译器、编程语言和库存在缺陷。
AI工具的未来
AI技术确实可能带来一些极好的工具,但这主要归功于搜索、优化和模式匹配的进步,而非AI本身具备“编程”的魔力。使用AI编程的人实际上仍然在编写代码,只是使用了不同的编程语言。
AI对编程工作的影响
AI最终会取代编程工作,就像编译器取代了部分编程工作,电子表格取代了部分会计工作一样。然而,我们应该尽早将AI视为工作流程中的一个工具,而非万能解决方案。
反思与建议
与其继续在AI编程上浪费数十亿美元,不如投入精力开发更好的编程语言、编译器和库。这些努力虽然无法带来短期的高额回报,但从长远来看,它们将为编程领域带来真正的进步。
结论
AI编程并非万能,它更像是一个工具,而非替代品。我们应该以更理性的态度看待AI技术,避免被虚假的繁荣所迷惑。
评论总结
主要观点总结:
AI 提高生产力的争议:
- 支持观点:AI 在某些任务中显著提高了效率,尤其是在处理重复性任务、调试和研究新概念时。例如,评论 11 提到:“Long story short: things that would take me a week to put together now take a couple of hours.”(简而言之,以前需要一周完成的事情,现在只需要几个小时。)
- 反对观点:AI 虽然让人感觉更高效,但实际上可能拖慢进度,尤其是在复杂项目中。评论 1 提到:“AI makes you feel 20% more productive but in reality makes you 19% slower.”(AI 让你感觉效率提高了 20%,但实际上让你慢了 19%。)
AI 对代码质量的影响:
- 支持观点:AI 可以帮助生成代码,尤其是在处理简单任务和快速原型设计时。评论 19 提到:“I can tell claude code to crank out some basic crud api and it will crank it out in a minute saving me an hour or so.”(我可以让 Claude Code 生成一个基本的 CRUD API,它在一分钟内就能完成,节省了我大约一个小时。)
- 反对观点:AI 生成的代码可能导致技术债务,开发者可能无法理解或维护这些代码。评论 5 提到:“They have no actual understanding of the code ‘they’ are writing, and they have no idea how to actually debug what ‘they’ made.”(他们对“自己”编写的代码没有真正的理解,也不知道如何调试“他们”制作的东西。)
AI 在编程中的适用性:
- 支持观点:AI 特别适合处理特定任务,如自动补全、生成代码示例和调试。评论 19 提到:“Autocomplete in Cursor. People think of AI agents first when they talk about AI coding but LLM-powered autocomplete is a huge productivity boost.”(Cursor 中的自动补全功能。人们在谈论 AI 编程时首先想到的是 AI 代理,但基于 LLM 的自动补全功能极大地提高了生产力。)
- 反对观点:AI 在处理复杂代码库时表现不佳,尤其是在需要深入理解代码逻辑的情况下。评论 21 提到:“Once you’re at about 40k LOC you can just turn off the autocomplete features and use Claude or GPT to evaluate specific high-level issues.”(一旦代码量达到 4 万行,你可以关闭自动补全功能,转而使用 Claude 或 GPT 来评估特定的高级问题。)
AI 对开发者技能的影响:
- 支持观点:AI 可以帮助开发者专注于更有创造性的部分,减少对基础工作的依赖。评论 13 提到:“I love AI for speed running through all the boring stuff and getting to the good parts.”(我喜欢 AI 快速处理所有无聊的部分,直接进入有趣的部分。)
- 反对观点:过度依赖 AI 可能阻碍开发者技能的提升,尤其是对初级开发者。评论 13 提到:“The potential for then stunting the growth of actual juniors into tomorrow’s senior developers is a serious concern.”(AI 可能阻碍初级开发者成长为未来的高级开发者,这是一个严重的问题。)
AI 与自然语言的局限性:
- 支持观点:AI 可以帮助解决自然语言在编写代码规范时的模糊性和冗长问题。评论 8 提到:“LLMs solve this to a certain extent.”(LLM 在一定程度上解决了这个问题。)
- 反对观点:自然语言不适合编写代码规范,因为它过于模糊和冗长。评论 8 提到:“Natural language is ambiguous, extremely verbose, and doesn’t lend itself well to refactoring.”(自然语言是模糊的、极其冗长的,并且不适合重构。)
AI 对编程未来的影响:
- 支持观点:AI 可能会改变编程的方式,尤其是在处理大规模代码库和复杂任务时。评论 28 提到:“Once we realize that what we actually want is turning specifications into software, I think that English will become the base for a new, high level specification language.”(一旦我们意识到我们真正想要的是将规范转化为软件,我认为英语将成为一种新的高级规范语言的基础。)
- 反对观点:AI 可能只是当前编程工具的延伸,而不是革命性的改变。评论 6 提到:“It doesn’t seem surprising that people go for the easier problem (make the current process simpler with LLMs) than for the harder one (change the whole programming landscape to something new and actually make it better).”(人们选择解决更简单的问题(用 LLM 简化当前流程)而不是更困难的问题(改变整个编程格局并真正使其变得更好),这并不令人惊讶。)
总结:
评论中对 AI 在编程中的应用存在广泛的分歧。支持者认为 AI 可以显著提高效率,尤其是在处理简单任务和快速原型设计时,而反对者则担心 AI 可能导致技术债务,并阻碍开发者技能的提升。此外,AI 在处理复杂代码库和自然语言规范时的局限性也引发了讨论。总体而言,AI 在编程中的应用仍处于探索阶段,其长期影响尚不明确。