跳转至

飞升神话之傀儡术

AI 神话

这一篇用来致敬《人月神话》中没有银弹这一章。主要讲讲我这段时间用 AI 辅助开发的经验,以及对没有银弹理论的理解。

在修仙小说里经常会遇到一些炼制傀儡的修士。这些战斗傀儡往往是被高阶修士带着用于辅助的。比如,莽荒纪这种小说里会有天仙级傀儡到主宰级傀儡这种东西,它们的战力和同阶修士相当,但是又有着普通修士无法触及的优势:比如,不灭的身体,无限的法力等等。但是,它们的战斗技巧都是来源于炼制者的编程,它们本身是无法感受到"道"的存在的。因此,它们也不能够真正的修炼,无法提升自己的境界(哪怕它们拥有和人一样的高级智慧)。

当然,一些专注于炼器的修士可能梦想着炼制出和人一样的傀儡。它们可以修炼,可以自己突破境界。一些小说有这样的设定(比如器灵能够修炼等等),但是大部分小说的傀儡都没有这样的设定。

AI 也是一样。人们总是梦想着用 AI 完全代替人的工作,人只要说一句"帮我开发一个 OS",然后 AI Agent 就会在一段时间的思考以后,就给你端出一个 OS。现在的 AI 似乎也有着这样的能力,因此,AI Agent 在这段时间非常火热,也成为了投资重点。

但是,我们是否严重低估了"工程能力"的信息量?一个工程,从无到有,这包含了多少信息?这些都不是一句"我命令你研发可控核聚变"能够解决的。目前,再强大的 AI,工作流可能会从互联网上截取大量现成工程的样例,然后给你生成一个回答。但是即使 AI 的回答言之凿凿,它们和"工程能用的代码"之间仍然有着非常大的差距。

没有银弹理论,将开发软件的困难分为本质困难偶然困难。AI 所做的最好的地方在于能够轻易解决偶然困难,但是 AI 对本质困难几乎无能为力——注意,无能为力。AI Agent 往往能够从海量的信息中找到解决方案,但是这些都是现成的解决方案,这给了 AI 看似能够解决本质困难的能力。如果我们大部分人都处于解决"现有的问题"的层次,比如,筑基期。那么 AI 确实可以很好地完成我们的工作。但是当你试图解决人类已经解决,资料提供充足,但是互联网上确实缺乏现有解决案例的问题时,AI 就立刻变得孱弱。即使这个问题是一个老问题,即使网上已经有着非常充足的讨论,有着现成的解决方案,有着充足的资料提供,有着现成的片段代码(但是缺乏一个完整工程实现)即使按照宽泛的角度来看也不属于"未知"的范畴。AI 就无法解决这样的问题,这部分就是《人月神话》中没有银弹定律讲述的本质困难所在。我们都知道 AI 无法解决未知的问题,但是对于含有本质困难的已知问题,AI 也是难以解决的。AI 没有跳出没有银弹定律的框架。

AI 无法理解这样的本质困难,就像傀儡不能修炼一样(修炼也一样是本质困难)。在大部分小说中,傀儡的境界是有上限的。比如,再厉害的修士也炼制不出最高境界的傀儡。哪怕这个世界已经有了一亿至尊境的强者,那么只要至尊境是这个世界的最高境界,即使所有的至尊大道都是现成的,都被人走通的,三千大道都被研究透彻了连小学生都知道了,那炼制至尊境的傀儡也是不可实现的。这就是"本质困难",AI 根本无法解决这样的本质困难

具体的场景是这样的:

我:请为我画一个前端,具体布局如下:balabala……

AI:balabala……(对于有着海量工程实现的场景,AI 给出的答案多半非常有效)

我:请为我读这段代码。

AI:balabala……(对于不需要解决问题,仅仅依靠知识库就能够完成的回答,AI 一般也很有效,除非你这知识过于偏门)

我:这个地方报错了,balabala……

AI:balabala……(对于解决偶然困难,AI 非常有效)

我:我需要实现一个表,它需要支持高并发访问,存储量较大。属于路径热点,需要考虑性能问题,有着较强的数据局部性,请为我实现。

AI:balabala……(这种含有本质困难的场景下,AI 给出的解决方案大多数情况都会有问题,你可能需要反复追问并且自己认真思考才能得到一个好解)

我:我需要实现一个 A 功能,考虑数据局部性……请为我实现。

AI:balabala……(对于拥有较多本质困难的问题,AI 几乎无法实现)

不要让 AI 作了你的主

用 AI 辅助开发,最重要的是什么呢?

是自己做主!

自己做主,属于软件工程的本质困难的一部分。