Hugging Face联合创始人Thomas Wolf最新思考:在AI统治的软件世界里,底层架构正在发生位移,Andrej Karpathy大神也认可这种观点,很有可能,我们最终会将有史以来编写的大部分软件重写很多次,至少这是一个有趣的时刻
软件供应链缩减,单体架构回归
当重写代码和理解大型陌生代码库变得廉价时,依赖深度依赖树的动力就会崩溃。与其花费无数个夜晚钻研陌生的代码库,不如直接要求代码智能体从头编写,或者从其他库中提取相关部分,这要容易得多。
减少依赖的理由非常充分:能够缩小针对供应链威胁的攻击面,减小打包软件的体积,提升性能,并加快启动时间。利用大语言模型不知疲倦的耐力,从裸机层面一直向上编码整个应用程序的梦想正在变得现实。
林迪效应终结
林迪效应认为,存在已久的事物之所以存在是有充分理由的,并可能会继续存在。这与切斯特顿栅栏理论有关:在移除某物之前,应先理解其存在的原因,这意味着移除总是伴随着成本。
但在一个软件可以从第一性原理开发并被不知疲倦的智能体所理解的世界里,这种逻辑变弱了。旧的代码库可以被随意探索;长期存在的软件被替换的摩擦力大大降低。一个代码库完全可以用一种新语言重写。在人类早已放弃的情况下,遗留软件仍可以被仔细研究和更新。
其中的隐患在于,未知的未知依然存在。AI影响的真实程度将取决于测试、边缘情况覆盖和形式化验证是否能实现全覆盖。在AI主导的世界里,形式化验证不再是可选项,而是必选项。
强类型语言的理由
历史上,编程语言的采用很大程度上受人类心理和社会动态的驱动。一种语言的成功取决于混合因素:易学性、编写正确性的简单程度、社区的活跃与包容度(这决定了生态系统的增长速度),以及可证明的正确性、形式化验证以及在动态与静态检查之间的平衡。
随着人为因素的减弱,这些动态将发生转变。对人类心理依赖的减少将有利于强类型、可形式化验证或高性能的语言。这些语言通常对人类来说较难学习,但非常适合大语言模型,因为LLM在形式化验证和强化学习环境中表现出色。预计这将重塑哪些语言占据主导地位。
开源经济的重构
几十年来,开源社区建立在人类通过共同编写、学习和使用代码而产生的联系之上。在一个大部分代码由机器编写,或许更重要的是由机器阅读的世界里,这些激励机制将开始瓦解。
由AI共同构建库和代码库的社区可能会作为替代品出现,但这样的社区将缺乏迄今为止推动开源发展的根本性人类动机。如果开源开发的未来变得基本没有人参与,那么AI模型的对齐将不仅仅是重要,而是决定性的。
新语言的未来
AI智能体在开发或采用新编程语言时,是否会面临与人类相同的权衡?如表达性与简单性、安全性与控制权、性能与抽象、编译时间与运行时间、显式与简洁。目前尚不清楚。
从长远来看,创建新编程语言的理由可能会与过去由人类驱动的动机大相径庭。很可能存在一种对大语言模型最优的编程语言,而且没有理由假设它会像人类所趋同的那些语言。
Andrej Karpathy的观点补充
Andrej Karpathy认为,对于编程语言和形式化方法来说,这一定是一个非常有趣的时刻,因为大语言模型完全改变了软件的约束格局。
这种迹象已经显现,例如将C语言移植到Rust的势头正在上升,或者对升级COBOL等遗留代码库的兴趣日益浓厚。特别是,与从头生成相比,大语言模型在翻译方面表现得尤为出色,原因有二:一是原始代码库充当了一种高度详细的提示词,二是它可以作为编写具体测试的参考依据。
即便如此,即使是Rust作为目标语言,对于大语言模型来说也远非最优。
什么样的语言才是最优的?是否仍保留了对人类的让步?这些都是极其有趣的新问题和机会。Karpathy预测,人类最终可能会将有史以来编写的大部分软件重写很多次。
--end--
最后记得⭐️我,每天都在更新:如果觉得文章还不错的话可以点赞转发推荐评论