从信息论的角度看:AI很难完全取代程序员
tableOfContents
最近看到越来越多乐观的AI文章或视频,他们在预测,认为普通人将很快也能轻易的自定义App,从而不再需要专业的程序员。
但是从信息论的角度来说,这恐怕是难以实现的。
真正开发过复杂软件的程序员或者产品经理们,是有深刻体会的。
一篇看起来图文并茂,描述详尽的需求文档,要变成一款真实可用,交互流程顺畅的App,中间经历的过程是很漫长的。
程序员敲代码的耗时,都不一定是软件研发流程汇总中耗时最长的环节。更多的耗时反而是:发现需求文档不完善,语言有歧义,细节有遗漏等问题 以及 程序员在操作时 需求理解错误、实现的遗漏,环境和工具的意外 等等。
对于软件的复杂程度,相对靠谱的描述维度,是用 测试用例 的条数的去衡量。虽然不是完全绝对,但是在大部分情况下是相对准确的。
可以把每一条测试用例,大致理解为一个具体的信息,测试用例越多,这款软件具备的信息量也就越大。
例如微信这样一款软件,全量测试用例的数量是以万为单位计算的。其蕴含的信息是很庞大的,并不是大家随口所说的:“AI,你给我开发一个像微信一样可以聊天的软件,但要比微信更好用!” 这样的简短信息所能涵盖的。任何信息的遗漏,都会导致AI输出的不完整。
香农对信息本质的定义是:消除不确定性。
AI之所以擅长天马行空的散文 或者 超人意料的图像、视频的输出,是因为这些输出没有去消除不确定性,是AI在自由发挥。需要消除的不确定性越少,信息量其实也就越少,AI也就越擅长。
一但我们需要一款能真实用于工作、投资、工业、商业等实用途径的功能性App,就需要消除大量的不确定性,防止意外。必然要定义各种细节、标准、要求等等。这样的App会含有非常大量的信息。
通过信息论的原理,普通用户只简单的说一些自然语言的输入,大概率只能生成一些相对固定的东西。能生成的软件能力范围,局限于大模型在训练期间内置的一些信息。我们的提示词,其实类似于AI大模型这个信息压缩包的解码器,能从大模型解码出一些它已知的软件形态,从而进行输出。
发现了吗?大模型能输出的软件 都是在训练期间它已知的公开的软件形态,既然是已知的形态,那就证明这些软件在世界上已经存在了。例如每一个大模型几乎都支持的游戏:贪吃蛇、俄罗斯方块 等等。
既然是已经在公开互联网上存在的App,那能生产出来的意义是什么呢?
我们真正需要开发的App,大概率是市面上不存在的公开的App。是能够满足大家个性化需求的软件,这样的软件制造出来才有存在价值。否则复制再多现存软件也是价值寥寥。 新创建的软件,得是现有大模型的已知信息中不存在的,这依赖用户去灌入足够大的增量信息,才有可能构建出来。
一个功能复杂的软件,是一个高度有序的带有大量信息的集合体。而一些简单的语言含有的信息量是有限的,不会因为AI 足够强大就输出增量信息庞大得多得多的复杂软件,因为这不满足量子力学里的信息守恒。
通过简单指挥AI就能产出的软件,大概率是一些固定模板的组件聚合体,类似一些低码或者零码平台支持的组装式软件,并非是真正的自由定制软件。
想要自由定制App,满足未曾被人满足过的软件需求,依然需要专业能力的人进行专业的输入。
虽然我们已经可以拿人类语言编程,但也会是一个需要很多轮的交互 与 步骤拆解过程,需要表达的精准度高,细节的全面性强,足够结构化的沟通过程,这不是人人都能做到的。
也就是说,一个没有经过专业化训练的普通人,面对越来越强的AI,依然没有办法任意定制软件。其原因和AI的能力强弱无关,而是受到信息论这样的宇宙数学本源限制。这是比常规物理学更底层的宇宙本质。