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

01-14 08:49

LLM的发展会淘汰编程吗?


Hanss哥本哈根大学计算机教授 Hüttel表示:永远不会。



文章地址:https://cacm.acm.org/opinion/on-program-synthesis-and-large-language-models/


尽管今天的人工智能已发展到一个新的高度,尤其是大语言模型在文本生成等方面的能力,令人印象深刻。


但是有些计算社区的人似乎走得有点远,他们声称「编程将成为过去」。



Communications专栏于2023年1月举行,Matt Welsh提出了这样的观点:「编程会过时,-编程的传统想法正在灭绝。事实上,除了非常专业的应用程序,大多数软件都会被训练有素的AI系统所取代。」。



「当需要一个简单的程序(毕竟不是所有的程序都需要在GPU集群上运行数千亿个参数模型)时,这些程序本身将由AI生成,而不是手动编码。」。


在Hans Hü看起来,ttel太过分了。


Welsh的观点包含两种说法。第一,未来大多数不会。「简单」该软件将采用AI系统。第二,任何不属于这种形式的软件都会一键生成。


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


客观地说,Welsh提出的第一个主张并不容易反驳。归根结底,这一点「简单」究竟什么是概念?(根据引文,任何不使用AI系统形式的软件都非常简单)


当前的操作系统、游戏引擎、SaaS平台等系统软件被视为「简单软件」是吗?AI是否可以取代这些还是值得怀疑的。



Welsh提出的第二个主张涉及到编程代码的形成。一篇早期的评论文章,Daniel Yellin从软件开发实践的角度探讨了LLM的使用情况。


而且在这篇文章中,Hans Hüttel教授重点关注定律在计算理论中的基本限制,以及这个规范如何影响代码的形成。最后的结论是:离编程的结束还很远。


最为流行的编程语言


还记得Andrej大神 Karpathy在推特上的名言:「最受欢迎的新编程语言是英语」。



这一想法并非诞生于LLM目前几乎全能的现状,「编程自然语言」这个想法至少可以追溯到2020年7月。当GPT-3出现时,Osama Qarem写道:「Using GPT-3 will still be programming」,「它使用英语作为语法的语言来编码。」。


考虑到具体情况,这也很符合:人类的英语口语不是很简洁,不清晰,更容易产生误解。每个人都需要训练正确的名词、修饰词、动词等。在与GPT-3交谈时,以获得他们想要的结果。这意味着你需要学会根据GPT-3的认知。「调试」您的英语句子。


如果再追溯到1954年的FORTRAN报告中,消灭编程这件事,作者声称「应该几乎清除FORTRAN的代码和调试」,——正如我们所知,这种情况并没有发生。



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


十年后(1966年),FORTRAN报告,Jean Sammet在Communications上写道,英语应该是未来的编程语言,-这件事没有发生,另一位图灵获得者Edsger W. Dijkstra认为这个想法是「愚蠢」的。



今天会发生这种情况吗?看了太多ChatGPT等大模型带来的惊艳示范,两三句话就能快速构建项目,生成看起来相当不错的代码。


每个人都可能认为,在这个时代,我们最终见证了编程的结束和英语(或一般的自然语言)作为建立过程的主要语言。


然而,从规范中生成编程代码并不是那么简单的事情。如果我们关注生成代码的准确性,考虑到理论上计算复杂性的非常准确的含义,即使是「简单」程序也会相当棘手。


难以生成正确的代码

在计算机科学中,从规范生成正确的编程代码是一个关键问题。Gulwani曾经说过:


「程序综合是一种程序,可以自动从底层编程语言中找到满足客户意图的程序,并以某种方式约束表达。与典型的编译器使用语法导向的翻译将高级代码转换为低级机器不同,程序合成器通常在程序空间中以某种形式进行搜索,以生成与各种约束(如输入输出示例、自然语言、部分流程和肯定)一致的程序。」。


已有许多关于各种形式的综合问题的研究,我们知道这是非常困难的。「艰难」在理论意义上,计算是指计算复杂性的困难。


1979年,Richard 在简单类型的Statman证明了这一点。λ在运算中是否存在给出类型?τ该项目的问题是PSPACE完善(PSPACE-complete)的。



对此类问题的决策算法,其准确的资源需求是计算复杂理论中的一个开放问题。


但是,普遍的共识是,PSPACE完善问题的决策算法在运行时间上将随输入量呈指数级增长。


换言之,对于大小为n的标准S,算法生成符合S的程序需要2的n次幂步骤。


所以,即使是中等大小的输入,PSPACE-complete问题的算法也可能特别慢。



可以用一种叫做完全量化布尔公式(fully quantified Boolean formulae,QBF)作为规范语言的第一阶逻辑方法,并询问给定的公式是否可以建模。


假如对象是生成程序,那就是对程序进行建模。但是,PSPACE也是如此。所以结论是,对于具有一定复杂性的程序,其生成算法很可能需要不合理的资源。


「编程末日」尚未到来

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


有些程序的综合方法是相似的,不能构建符合完整规范的程序,比如静态程序分析工具,而且这些工具一般只考虑具体的程序特性。


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


还有一些方法只能在合理的资源限制或狭窄的问题领域进行整合,比如生成编译器和编译器的工具(允许正则表达式和属性语法的应用,以及开发者指定编译器或编译器的预期行为)。


所有这些方法从来没有被称为「编程终结」象征,更不用说计算机科学的终结了!


所以,期望ChatGPT等类似的力量超越这些限制是不合理的。


事实上,任何在编程环境中使用过这种AI软件的人都会看到,有时候AI可以生成一个看起来正确合理的代码,有时候可以生成一个没有意义的程序。


这并不是巧合,因为LLM是在当前代码上训练的。(GitHub Copilot使用GitHub上的公共代码进行练习)。也就是说,无论生成什么代码,聊天机器人在练习过程中接触到的代码风格都会得到体现。


因此,软件开发中自然语言的真正使用在于软件开发者与软件终端用户之间的探索性对话。LLM可能会促进这种对话,但没有希望取代编程。


参考资料:


https://cacm.acm.org/opinion/on-program-synthesis-and-large-language-models/


本文来自微信公众号“新智元”,作者:新智元,编辑:alan,36氪经授权发布。


本文仅代表作者观点,版权归原创者所有,如需转载请在文中注明来源及作者名字。

免责声明:本文系转载编辑文章,仅作分享之用。如分享内容、图片侵犯到您的版权或非授权发布,请及时与我们联系进行审核处理或删除,您可以发送材料至邮箱:service@tojoy.com