Don't fall into the anti-AI hype

Salvatore Sanfilippo

别陷入反 AI 论调的狂热

我喜欢一行一行地编写软件。可以说,我的职业生涯一直在努力打造编写精良、简洁的软件,把人的参与作为最根本的特征。我也希望社会不会遗忘那些处于最底层的人。此外,我并不希望 AI 在经济上取得成功;我不在乎现行经济体系是否会被颠覆(老实说,如果它朝着大规模财富再分配的方向发展,我可能会非常高兴)。但是,如果我对软件和社会的看法会损害自己的判断力,我就无法尊重自己的智慧:事实就是事实,而 AI 将永远改变编程。

2020 年,我辞去工作,开始写一部关于 AI、全民基本收入,以及一个在面对诸多挑战时适应工作自动化的社会的小说。2024 年年底,我开设了一个专注于 AI、AI 在编程任务中的应用及其潜在社会和经济影响的 YouTube 频道。但尽管我很早就意识到将要发生什么,我原以为在编程被彻底重塑之前,我们还有更多时间,至少还有几年。现在我不再这么认为了。最近,最先进的 LLMs(大语言模型) 已经能够独立完成大型子任务或中等规模的项目,几乎不需要帮助,只要给出一组关于最终结果应当是什么样的良好提示即可。你能取得多大程度的成功,取决于你从事的编程类型(越孤立、越能用文本表达,就越好;系统编程尤其适合),也取决于你是否有能力在脑中构建问题的表征,并将其传达给 LLM。可是总的来说,现在已经很清楚:对于大多数项目而言,除非只是为了消遣,否则亲自编写代码已经不再明智。

过去一周里,我只是编写提示词,并不时检查代码、提供指导,就在短短几个小时内完成了以下四项任务,而不是花上几周:

  1. 我修改了自己的 linenoise 库,使其支持 UTF-8,并创建了一个用于行编辑测试的框架。这个框架使用一个能够报告每个字符单元格中显示内容的模拟终端。这是我一直想做的事,但仅仅为了测试自己的一个业余项目,很难为所需的工作投入找到正当理由。不过,如果你只需描述自己的想法,它就能在代码中成形,情况就完全不同了。
  2. 我修复了 Redis 测试中的瞬时故障。这是非常恼人的工作,涉及与时序有关的问题、TCP 死锁条件等等。Claude Code 一直迭代,直到复现问题所需的全部时间都用完;它检查进程状态以了解发生了什么,然后修复了这些缺陷。
  3. 昨天,我想要一个纯 C 库,用来执行 BERT 类嵌入模型(embedding models(嵌入模型))的推理。Claude Code 在 5 分钟内就创建了它。输出结果与 PyTorch 相同,速度也相同(慢 15%)。总共 700 行代码,外加一个用于转换 GTE-small 模型的 Python 工具。
  4. 过去几周里,我对 Redis Streams 的内部机制进行了修改。我为这项工作准备了一份设计文档。我尝试把它交给 Claude Code,结果它在大约 20 分钟甚至更短的时间内复现了我的工作(主要是因为我检查并授权运行所需命令的速度比较慢)。

我们根本不可能看不见正在发生的现实。在很大程度上,编写代码已经不再是必要的。现在,更有趣的事情是理解该做什么,以及该如何做(至于后一个问题,LLM 也是很棒的伙伴)。AI 公司能否收回投入、股市是否会崩盘,都无关紧要。从长远来看,这些都无关紧要。某家独角兽公司的 CEO 说的话是否令人反感或荒谬,也无关紧要。无论如何,编程已经永远改变了。

对于自己写下的所有被 LLM 吸收的代码,我是什么感受?我感觉很好,因为我认为自己参与了这一进程,而这正是我一生都在努力做的事情的延续:让代码、系统和知识更加民主化。LLM 将帮助我们更快地写出更好的软件,也会让小团队有机会与大公司竞争。这正是开源软件在 90 年代所做的事情。

然而,这项技术太重要了,绝不能掌握在少数几家公司手中。目前,你可以把预训练(Pre-training(预训练))做得比别人更好,也可以比别人更有效地进行强化学习(reinforcement learning(强化学习)),但开放模型,尤其是中国生产的那些模型,仍在与封闭实验室的前沿模型(frontier models(前沿模型))竞争(即使它们还落后一些)。到目前为止,AI 已经实现了足够程度的民主化,尽管这种民主化并不完美。但是,谁也不能理所当然地认为这种状况会永远持续下去。我担心的是集中化。与此同时,我相信,经过规模化训练的神经网络确实能够做到不可思议的事情,而且当前前沿 AI 中并没有足够多的“魔法”,让其他实验室和团队无法追赶上来(否则,很难解释为什么 OpenAI、Anthropic 和 Google 多年来取得的成果一直如此接近)。

作为一名程序员,我现在比以往任何时候都更想编写开源软件。我想改进自己那些因为时间问题而搁置的仓库。我想把 AI 应用到自己的 Redis 工作流中。改进 Vector Sets 的实现,然后再改进其他数据结构,就像我现在对 Streams 所做的那样。

但我担心那些将要被解雇的人。现在所起作用的动力机制还不清楚:公司会尝试雇用更多人、开发更多产品吗?还是会试图削减薪资成本,只留下更少但更擅长编写提示词的程序员?而且,我担心还有其他行业会变得完全可以由人类替代。

那么,社会解决方案是什么?毕竟,创新一旦发生就无法收回。我认为,我们应该投票支持那些认识到正在发生什么、并愿意帮助那些将失去工作的人渡过难关的政府。而且,被解雇的人越多,要求投票支持那些能够保障一定程度保护的人的政治压力就越大。但我也期待 AI 能带来的好处:科学领域的新进展,或许能够减轻人类境况中的痛苦——而人生并不总是幸福的。

不管怎样,回到编程上来。我只有一个建议想给你,我的朋友。无论你认为什么才是正确的做法,都不能靠拒绝眼下正在发生的事情来控制局面。跳过 AI 不会帮助你,也不会帮助你的职业生涯。想想看。认真测试这些新工具,投入几周时间,而不是只做一个五分钟的测试,然后借此强化你原有的信念。找到一种让自己能力倍增的方法;如果对你不起作用,就每隔几个月再试一次。

是的,也许你会觉得,自己花了那么多力气学习编程,如今却由机器替你完成。但当年你一直编程到深夜、只为看到自己的项目运行起来时,内心燃烧的究竟是什么?那是创造。而现在,只要找到有效使用 AI 的方式,你就能创造更多、更好的东西。乐趣依然在那里,丝毫未被触动。