发布信息

LLM发展是否会淘汰编程?哥本哈根大学教授Hans Hüttel解析未来趋势

作者:软荐小编      2025-01-13 10:02:14     78

LLM的发展会让编程变得过时吗?

哥本哈根大学计算机科学教授 Hans Hüttel 表示:从来没有。

LLM带来了「编程末日」?哥本哈根大学CS教授:别做梦了_LLM带来了「编程末日」?哥本哈根大学CS教授:别做梦了_

文章地址:

虽然如今的人工智能已经发展到了一个新的水平,尤其是大型语言模型在文本生成等方面的能力,令人印象深刻。

但计算界的一些人似乎走得更远,声称“编程将成为过去”。

_LLM带来了「编程末日」?哥本哈根大学CS教授:别做梦了_LLM带来了「编程末日」?哥本哈根大学CS教授:别做梦了

在 2023 年 1 月的通讯专栏中,马特·威尔士 (Matt Welsh) 提出了这一观点:“编程将会过时——编写程序的传统思想正在消亡,事实上,除了非常专业的应用程序之外,大多数软件都将被训练有素的 AI 系统所取代”。

LLM带来了「编程末日」?哥本哈根大学CS教授:别做梦了__LLM带来了「编程末日」?哥本哈根大学CS教授:别做梦了

“在需要简单程序的情况下(毕竟,并非所有程序都需要在 GPU 集群上运行具有数千亿参数的模型),程序本身将由 AI 生成,而不是手动编码。”

在汉斯·许特尔看来,这太过分了。

威尔士的观点由两部分组成。首先,未来大多数不“简单”的软件都会采取人工智能系统的形式。其次,任何不属于这种形式的软件都会自动生成。

这似乎是一个相当笼统的断言,其结果是,既然不需要编程,就不需要研究编程或程序的属性。计算机科学终于可以消失了!

客观地讲,威尔士提出的第一个主张并不容易反驳。毕竟,“简单”的定义是什么? (根据引文,任何不采用人工智能系统形式的软件都很简单)

当前的操作系统、游戏引擎、SaaS平台等系统软件算不算“简单软件”?这些能否被AI取代,目前还存在疑问。

LLM带来了「编程末日」?哥本哈根大学CS教授:别做梦了_LLM带来了「编程末日」?哥本哈根大学CS教授:别做梦了_

威尔士提出的第二个主张涉及程序代码的生成。在之前的一篇评论文章中,Daniel Yellin 从软件开发实践的角度讨论了 LLM 的使用。

在本文中,Hans Hüttel 教授重点讨论了计算理论中定理所施加的基本限制以及该规范如何影响代码生成。最后的结论是:编程的终结还很遥远。

最流行的编程语言

还记得推特上大神Andrej Karpathy的名言:“最热门的新编程语言是英语”。

LLM带来了「编程末日」?哥本哈根大学CS教授:别做梦了_LLM带来了「编程末日」?哥本哈根大学CS教授:别做梦了_

这个想法并不是在LLM几乎无所不能的现状下诞生的。 “用自然语言编程”的想法至少可以追溯到 2020 年 7 月。当 GPT-3 出现时,Osama Qarem 写道:“使用 GPT-3 仍然会是编程”、“它将使用一种语言进行编码”以英语为语法。”

考虑到实际情况,这也很符合:人类口语不太简洁,不太清晰,更容易产生误解。人们在与 GPT-3 交谈时需要练习使用正确的名词、形容词、动词等以获得他们想要的结果。这意味着你需要学习根据 GPT-3 的理解来“调试”你的英语句子。

编程的消除可以追溯到更早的时候。在 1954 年的 FORTRAN 报告中,作者声称“FORTRAN 应该几乎消除编码和调试”——据我们所知,这并没有发生。

LLM带来了「编程末日」?哥本哈根大学CS教授:别做梦了__LLM带来了「编程末日」?哥本哈根大学CS教授:别做梦了

之后,FORTRAN的主要作者John Backus继续设计了一系列有影响力的编程语言,并获得了1977年的图灵奖。

FORTRAN 报告发布十年后(1966 年),Jean Sammet 在 Communications 中写道,英语应该成为未来的编程语言——这并没有发生,另一位图灵奖获得者 Edsger W. Dijkstra 认为这个想法是“愚蠢的”。

_LLM带来了「编程末日」?哥本哈根大学CS教授:别做梦了_LLM带来了「编程末日」?哥本哈根大学CS教授:别做梦了

今天会发生这种情况吗?我见过太多像ChatGPT这样的大型模型带来的令人惊叹的演示。只需几句话,你就可以快速构建一个项目并生成看起来非常不错的代码。

人们可能会认为,在这个时代,我们终于见证了编程的终结,英语(或一般的自然语言)成为创建程序的主要语言。

然而,从规范生成程序代码并不是那么简单的事情。如果我们关心生成代码的正确性,并考虑理论上非常精确的计算复杂性,那么即使是“简单”的程序也可能非常棘手。

生成正确的代码很困难

根据规范生成正确的程序代码是计算机科学的核心问题。这是一个程序综合的问题,古尔瓦尼曾经说过:

“程序合成是从底层编程语言自动搜索满足以某种形式的约束表达的用户意图的程序。与使用面向语法的翻译将高级代码转换为低级机器表示的典型编译器不同,程序合成器通常对程序空间执行某种形式的搜索以生成与各种约束(例如,输入和输出示例、自然语言、部分程序和断言)一致的程序。

对于各种形式的综合问题已经有很多研究,我们知道这很困难。这个“难度”是指计算复杂度理论意义上的计算难度。

1979 年,Richard Statman 证明了简单型 lambda 演算中是否存在给定类型 τ 的项的问题是 PSPACE 完备的。

LLM带来了「编程末日」?哥本哈根大学CS教授:别做梦了_LLM带来了「编程末日」?哥本哈根大学CS教授:别做梦了_

此类问题的决策算法的确切资源需求是计算复杂性理论中的一个悬而未决的问题。

然而,普遍的共识是,PSPACE完全问题的决策算法的运行时间将随着输入大小呈指数增长。

也就是说,对于大小为 n 的规范 S,算法将需要 2 的 n 次方步骤来生成满足 S 的程序。

因此,即使对于中等大小的输入,PSPACE 完全问题的算法也可能非常慢。

LLM带来了「编程末日」?哥本哈根大学CS教授:别做梦了__LLM带来了「编程末日」?哥本哈根大学CS教授:别做梦了

您可以使用一种称为完全量化布尔公式 (QBF) 的一阶逻辑形式作为规范语言,并询问是否可以对给定公式进行建模。

如果目标是生成程序,那么它就是对程序进行建模。不过,这个问题也是PSPACE完成的。所以结论是,对于一个具有一定复杂度的程序,它的综合算法很可能需要不合理的资源。

“编程启示录”尚未到来

因此,计算机科学没有放弃程序综合的研究也就不足为奇了。 Gulwani 对现有的程序合成方法进行了全面的调查,所有这些方法都有局限性。

有些程序综合方法是近似的,无法构建满足完整规范的程序,例如静态程序分析工具,并且这些工具一般只考虑特定的程序属性。

其他方法需要大量内存或大量时间来构建程序,例如使用 SMT 求解器和基于类型的开发形式的方法(例如基于 Hindley-Milner 类型系统的方法)。

还有一些方法只能在合理的资源限制或狭窄的问题域内综合,例如用于生成编译器和解释器的工具(使用正则表达式和属性语法允许开发人员指定解释器或编译器的预期行为)。

这些方法都没有被誉为“编程的终结”的信号,更不用说计算机科学的终结了!

因此,期望 ChatGPT 和类似的力量超越这些限制是不合理的。

事实上,任何在编程环境中使用过此类AI软件的人都会发现,有时AI可以生成看起来正确合理的代码,而其他时候它却可以生成毫无意义的程序。

这种行为并非巧合,因为 LLM 是在现有代码上进行训练的(GitHub Copilot 是使用 GitHub 上的公共代码进行训练的)。这意味着生成的任何代码都将反映聊天机器人在训练阶段所接触的编码风格。

因此,自然语言在软件开发中的真正运用在于软件开发人员和软件最终用户之间发生的探索性对话。 LLM 可能会促进这种对话,但它远不能取代编程。

参考:

相关内容 查看全部