LLM 带来了“编程末日”?计算机专业教授:别做梦了!
LLM会把编程淘汰吗?近日,哥本哈根大学的计算机教授Hans Hüttel通过分析计算理论中的定理所施加的基本限制,得出结论:距离编程的终结还远得很。
其主要观点如下:
计算复杂性理论的限制
- PSPACE完备问题(PSPACE-complete)的挑战:从规范生成正确的程序代码是计算机科学的核心问题,即程序综合问题。这一问题在计算复杂性理论上是困难的,因为PSPACE完备问题的决策算法在运行时间上随输入大小呈指数级增长,即使是中等大小的输入,算法也可能非常慢。
- QBF规范语言的难题:使用完全量化布尔公式(QBF)作为规范语言的问题也是PSPACE完备的,这进一步证实了生成程序的困难。
程序综合方法的局限性
- 近似方法的不足:一些程序综合方法是近似的,无法构建满足完整规范的程序,比如静态程序分析工具,而且这些工具一般只考虑特定的程序属性。
- 资源消耗大的方法:另一些方法则需要大量内存或大量时间才能构建程序,比如使用SMT求解器的方法和基于类型的开发形式(例如基于Hindley-Milner类型系统的方法)。
- 狭窄领域的方法:还有一些方法只能在合理的资源限制或狭窄的问题域中进行综合,比如用于生成编译器和解释器的工具(正则表达式和属性语法的使用允许开发人员指定解释器或编译器的预期行为)。
LLM生成代码的局限性
- 代码质量参差不齐:任何在编程环境中使用过此类AI软件的人都会看到,有时AI可以生成看起来正确合理的代码,而有时则会产出无意义的程序。这种行为并非巧合,因为LLM是在现有代码上训练的(GitHub Copilot使用GitHub上的公共代码进行训练)。这意味着,无论生成什么代码,都将反映聊天机器人在训练阶段所接触的编码风格。
自然语言在软件开发中的真正用途
自然语言在软件开发中的真正使用,在于软件开发人员和软件的最终用户之间发生的探索性对话。LLM可能会促进这种对话,但取代编程还遥遥无期。
