掌控思想,而非代码
摘要
在这篇博文中,antirez认为在人工智能时代,程序员应该专注于掌控软件背后的思想,而非阅读每一行代码,因为AI可以生成局部最优的代码,而人类擅长大局设计和方向。
暂无内容
查看缓存全文
缓存时间: 2026/07/13 13:52
# 掌控思想,而非代码
来源:https://antirez.com/news/169
antirez (https://antirez.com/user/antirez)2 小时前 · 20711 次查看``
回顾这个博客的历史。这里有很多关于用 AI 编程的文章,其中一些可以追溯到 2024 年 1 月(比如这篇:https://antirez.com/news/140)。毕竟,我是一个相对受人尊敬的开发者。我不需要像一位寻求存在感的老者那样依然“身在其中”。我最近重返 Redis,现在还在开发一个用于本地 LLM 推理的新开源软件,并受到了社区的良好欢迎。为什么我依然坚持说出人们不愿听到的话?为什么我不断宣告未来编程的常态将是什么?因为我感到有责任去减轻那些比我更未准备好面对变革的人们——往往是比我年轻的人——所受到的冲击。不像我,他们没有预见到许多事情的发生(我在 2022 年,ChatGPT 诞生之前,就出版了一本书,预言了许多现在已发生以及我相信*将会*发生的事情,所以我觉得这么说并不显得自我中心)。
所以,这是我的一个小把戏。人们越来越觉得编程被 AI 彻底改变了,却不知道该怎么办:他们是否真的可以用一种完全不同的方式开始编码,而不再把查看代码作为主要产出?他们感觉自己仿佛背叛了自己的领域。因此,我的意图是站出来说:“看,我也会写代码,你知道的,我并没有躲在 AI 背后:然而,事情已经变了。这不是你的弱点,也不是你被 AI 洗脑了。这只是我们的领域正在朝着一个既令人难以置信*又*痛苦(但也充满喜悦)的方向演变。”
这就是为什么昨天我在 X 上说,我认为许多程序员此刻的影响力小于他们本可以达到的,因为他们盯着代码。我真的相信这一点。注意,这并不意味着“跟着感觉胡乱编码”,只要求最终产品。关键在于:如果你掌控了软件的思想,那么盯着代码本身是次优的,而且往往是毫无意义的。原因如下:
1. 现在你可以生成大量代码,甚至*不计入*LLM 代码的冗余(这很大部分也是由于无法很好地指导它们所致)。你如何每天审查 5000 行代码?
2. LLM 非常擅长编写局部最优的代码,但处理宏大构想的能力较差(尽管在提升)。逐函数、逐行地扫描代码意义何在?相反,你应该提示你已有的设计,有时问一下“那部分的设计到底是怎么样的?它是如何工作的?”,然后评估它是否是合适的模型。这样快得多。
3. 工作日只有 8 小时。如果你阅读代码,这就是一种权衡。你在减少今天工作中最核心的部分——也就是问自己:我通过这个软件想达到什么目的?我想开辟哪些新方向?同时,思考新想法、新特性、优化技巧。还要做大量的质量保障。
掌控思想。你还记得《人月神话》中的这句话吗?一本 70 年代的书,在当下软件时代能告诉我们的东西,比 2000 年到 2020 年期间说的许多话都要多。为什么现在反对 AI 的人,过去十年却没被软件的状况所震惊?在 AI 出现之前的近几年,我们触及的软件“垃圾”程度简直难以置信。我再告诉你一件事。什么是“垃圾”?我用 DwarfStar 完全自动化地实现了两个 LLM(DeepSeek v4 和 GLM 5.2)的推理,但:你自己试试看,你会发现你不能只是说“实现 XYZ”然后就能看到它运行。你必须理解事物如何工作、什么是最佳设计、如何达到一定的性能水平。然后我将实现与其它系统进行正确性比较,发现其它实现有时包含更多错误。我进一步研究发现,本地推理世界里充满了细微的错误,这些错误累积起来会损害模型输出;注意力实现中的问题会导致上下文超过一定限制后出现性能下滑,因为索引注意力实现有缺陷(例如做了比本应做的更多的工作),等等。这是一个极其复杂且快速变化的领域,每天都有推理图略有差异的模型发布。这对开发者来说是一场不公平的游戏。好吧:AI 对此大有帮助。在许多领域,严格的工程(在设计方面)和测试*远远优于*手写(或阅读)GPU 内核。所以我们能确定大多数抵制不是意识形态上的吗?
Matteo Collina 昨天在我的推文下问我:但是你不是说你检查过 Redis 的所有 AI 生成代码吗?这确实是个好问题。是的,我检查了,但在这一点上,这是我*需要*做的事情,但我认为这大部分是毫无意义的——部分是在 GPT 5.5 发布之后,但现在有了 Fable 和 GPT 5.6 Sol,更是如此。是的:我发现了我不喜欢它们编码方式的地方,但如果我打开其他 Redis 贡献者编写的 Redis 文件,情况*更糟*,这并非因为他们不是好程序员,而是因为这是个品味问题。我编写非常干净的代码,因为我想让它可读,所以在实现 Redis Arrays 时我进行了改动。现在我又在为了 Redis 排序集节约 50% 内存的优化而这样做,这是一个我将很快提交的 PR。但我感觉这不再有用了。没有人应该再看这些代码,而只应该看代码包含的思想。我继续这样做是出于对用户的尊重。Redis 现在已经是一个非常常用的东西,很多程序员会打开文件并手动修改。但如果我能自由发挥,你知道我会怎么做吗?我会把审查所花的所有时间用来做更多的质量保障、思考下一个优化思路并应用它,并使用 LLM 编写一个 DESIGN.md 文件,用人类语言描述每个数据结构、包含的思想、实现技巧和设计。在未来,那将更加有用。你想修改排序集?你打开文件,阅读设计,然后你就掌握了思想。你可以打开你的智能体,带着正确的心智模型去问它该做什么。这比审查代码有用得多。
Fable 和 GPT 5.6 对排序集内存节省的审查会发现比我审查所能发现的多得多的错误和微妙的竞态条件。然而我仍会做这件事。但对于大多数软件项目来说,所有这些都不再有意义。相反,专注于掌控思想。专注于质量、测试以及对你要发布的软件有清晰的概念。世界已经改变了,这很痛苦,但也充满了改善一个早已腐朽的软件世界的机会。
我唯一担心的是那些没有足够经验、无法建立心智模型的年轻程序员。我们还不清楚,他们是否需要对某段代码的工作方式有深刻理解,但我相信他们应该学习如何编写程序。不过,我不确定检查 LLM 的输出是他们应该做的正确事情。如果他们学习某种编程语言,并实现一个小型解释器、一个小型数据库、一个哈希表等等,可能会更有用。为一些客户的网站审查某些 JavaScript 代码?算了吧,别浪费时间在那堆破烂东西上。
``
博客评论由Disqus (https://disqus.com/) 提供支持
相似文章
@leerob:你可能认为因为AI,你应该少花时间思考代码。我强烈反对!我们正看到这……
文章认为,尽管AI取得了进步,工程师仍然必须理解代码和系统,因为AI生成的代码可能成为负担,并强调了计算机科学基础和系统设计的重要性。
@4rblaber:Anthropic 负责人:"人们总是执着于写出完美的代码行。别再这样做。" "直接告诉Claude你要...
Anthropic CEO Dario Amodei 建议开发者停止手动编码,转而通过目标驱动的提示来引导像Claude这样的AI模型;同时,OpenAI联合创始人Andrej Karpathy在播客中也表达了类似的“vibe coding”观点,这标志着向AI驱动开发工作流的转变。
@rohit4verse:AI 并没有让代码变得廉价,而是让劣质代码变得致命。Matt Pocock:“软件基础比以往任何时候都更重要”AI 在……
探讨了 AI 如何放大代码质量的影响,强调软件基础比以往任何时候都更重要,并推荐了构建可靠 AI agent 的五种设计模式。
@addyosmani: https://x.com/addyosmani/status/2056078124346228860
Addy Osmani 提醒:过度依赖 AI 编写代码可能会阻碍学习,并削弱对软件开发的思维模型。
人类掌控之中
curl项目负责人主张在软件开发中对AI采取平衡方法,强调人工代码审查和责任,同时承认AI工具可以辅助错误检测。