想了想,还是忍不住想延展一下,细说一下“有价值的东西,不一定被所有人欢迎”这块。
1 、以机器学习为主干,Transformer 为主导的统计学 AI 的可怕之处在于,颠覆了很多垂直领域的既有规则。
因为人类大脑的“缓存”太小,导致人类不擅长统计学,也就让人类无法通过大量的数据来自我修正与找到更优解。
而目前的统计学 AI 恰巧弥补了这一点。统计学 AI 做到哪个领域,哪个领域的玩法就要被颠覆(因为统计学 AI 总是可以找到更优路径)。
颠覆的同时,当前领域的既得利益者就会失去自己赖以生存的护城河。
很大程度上,这就是他们“不欢迎”,乃至“愤怒”的来源。这是人之常情。
2 、现阶段的 AI 无论如何改进(推理也好,引入激励也罢,乃至从零开始的强化学习),最终依然是依赖统计学原理的,这就导致其一定和真实情况有一定的偏差。
也就是所谓的统计学解只是最大概率解,统计学只能最大限度的贴近事实,但不能成为事实。
所以无论如何精进,面对 AI 的输出依然会有信任危机。
这也是“不欢迎”的一个方面。
3 、人是有风险厌恶的,总会依赖既有的成功路线。
最近我用 AI 辅助开发 DNS DoH 的代理工具,也算是深度使用 AI 。帮助有不少,但不能指望太多。Vibe Coding 差不多是胡扯。AI 生成的代码作为原型验证和概念参考尚可,基本能跑通逻辑就算成功,然而维护性基本为零、可靠性和健壮性也没有。其次,AI 不知道现实世界的细节和 bug ,只是当你提问到具体细节的时候,它才可能意识到没考虑那个具体问题,它也无法很好的解决。问题是,当你提问具体细节的时候,你已经踩到坑。我本地测试很多问题都没有,部署到服务器会遇到各种奇怪的 DNS ,比如,同一时间多个重复的 DNS 请求,需要丢弃;有些查询返回了域名不存在,需要负缓存;以及 type 65 类型的 DNS 需要转发等各种问题。两天跑通主逻辑,然后逐个解决这些细节问题却花了我将近两周。
设计上,AI 给我的代码是多线程。测试时最多开 40 个线程,结果只有 1200 的 QPS 。而我自己重写的代码单线程多协程,只用一个线程就有 2600 个 QPS ,性能差太多,AI 只会生成无脑浪费计算资源的代码。它会抄作业,却不懂编程,不懂设计。写的代码也很难看,一个函数超过屏幕还多一大半,我不知道怎么维护这种东西,还是需要自己拆分和重新设计模块和接口。
正如 Frederick P. Brooks 多年前那篇论文,《没有灵丹妙药——软件工程中的本质性和附属性》。软件开发的困难分为两类:本质性困难,比如抽象概念的构建,数据、算法的构建工作(解决这些问题需要程序员一点想法);附属性困难则是抽象概念映射到具体机器和代码,比如编译和语言错误等。软件工程领域,没有任何一项语言、技术或管理上的突破,能像硬件领域那样在十年内让生产力、可靠性或简洁性得到数量级的提升。包括 JetBrains 这些 IDE 工具,它们主要解决了附属性困难,却无法帮助降低本质性困难。现在 AI 出来,本质性困难得到解决了吗?
AI 对我最大的帮助并不是生成代码,而是搜索文档的效率显著提高,原本需要自己 Google 逐个打开网页看资料,现在比如要看 DNS 的报文格式,只需要让它告诉我就行,自己参考格式去解析,省掉了搜资料的过程。
复制 AI 代码的时候我也意识到侵权问题,AI 返回的代码里难免包括开源作品,我使用它的代码会无意中侵权。作者本人同意吗?这还不是最关键的,关键是用户不知道自己使用了谁的代码。如果我用了别人的代码,我会附上他的 Lisence ,表示对他人工作的尊重。现在这样侵权,我都不知道侵权了谁。未经同意、没有报酬,就随意拿别人的辛勤产出作为训练数据,伤害了那些认真做事的人。