AI编程工具表现不佳, 未来或将迎来重大转机

  • 2025-08-16 12:36:29
  • 859

以下是2025年中期AI编程领域的两个对比鲜明的快照:GitHub首席执行官表示,AI将承担所有编程工作,这是件好事;而现实中的AI编程工具却让程序员效率降低,同时制造了提高生产力的假象。

一个让构建数字世界的工作者生活变得更糟的工具,能否实现如此彻底的转变?从历史角度来看,这不仅是不可避免的,而且是必要的。

从GraceHopper的先驱之路说起

正确的起点应该从"了不起的"Grace,也就是GraceHopper少将开始。70年前,她开始研发第一种高级计算机语言,旨在通过类似英语的词汇而非数学符号来创建数据处理程序。其成果FLOW-MATIC很快催生了COBOL语言和我们当前面临的混乱局面,这是数字时代的一个创世神话。

鲜为人知的是,Hopper必须克服对高级语言概念的巨大反对。1955年,美国仅有约88台电子计算机在运行,计算资源极其昂贵,被高地位的数学家和工程师这一创造者阶层严密保护。许多人认为计算周期和存储空间过于宝贵,不应浪费在直接数字运算以外的任何事情上。为那些不能或不愿学习机器符号表达的人翻译文字是不可容忍的。

作为数学教授出身的Hopper深知这种态度即使在当时也是极其局限的,更不用说计算机即将普及的未来。事实证明她是对的。虽然批评者关于资源限制的观点在当时是正确的,但时代变化得令人眼花缭乱,这种特定的批评也迅速消失。

历史的重复模式

然而,潜在的主题并未消失。资源限制加上固化思维一直被用来抨击此后的许多基础性进步。随着计算机走向大众市场,每个突破都带来了初期的资源约束,这让以效率和速度为优化目标的传统编程实践得以延续。

C语言让跨平台软件在早期小型机时代成为可能,但这并不能阻止汇编程序员嘲笑它是"花哨的宏汇编器"。同样,在微型机的埃迪卡拉纪时代,中间表示(IR)的到来也遭到了许多嘲笑。

IR是指编译器最初产生一种通用格式,随后通过虚拟机翻译成可执行代码。这提供了跨架构的动态可移植性,但最初对基础硬件的要求过高。Pascal程序员钟爱的P代码运行太慢而无法生存。Java及其字节码最初同样缓慢,有个笑话说无法区分一台因C程序崩溃而停止的机器和一台正在运行Java的机器。

技术进步的必然性

Java得以存活是摩尔定律和无处不在的网络连接共同作用的结果。现在IR本身通过LLVM等技术变得无处不在,C本身也在Nim和Eiffel等语言的编译器中成为了IR。这对可移植性和优化来说是合理的,至少目前如此。很难想象在这个互联时代没有这些理念,编程世界能有如此丰富和强大的表现。

所有这些都表明,抽象程度的提高与复杂性和能力的增长是相辅相成的。事实上,主流IT中在硅芯片上实际运行的代码几乎没有被人手触及或被人眼看到。即使忽略平台虚拟机和微代码,如今实际处理数据的代码都是由机器编写的,通常是多次编写。

AI编程的现状与挑战

因此轮到AI了。AI受到三重诅咒:名称、炒作和资源限制。它是非常聪明的数据分析和推理,但不是智能的,称其为智能设定了错误的期望。它在定义明确、边界清晰的任务中非常有效,但却被宣传为万能仙尘。更糟糕的消息为固化的态度提供了更多燃料。

从适配当前能力来看,情况并不理想。你可以在稍显混乱的本地硬件上有效运行大型AI模型,但训练是另一回事。巨大的资源限制和非常可疑的商业模式并不是开发适配工具的好配方。这些还是早期阶段,难怪编程AI是一把双刃剑。

未来的必然转变

这种情况将会改变,而且只能朝一个方向发展。正如GraceHopper非常清楚地知道的那样,消除思维和结果之间的障碍会加速技术发展。如果我们用心和远见推进这门艺术,编程AI将会做到这一点。这意味着更多的人工工作将投入到前瞻性思考、设计和考虑我们真正想要什么上,这些都是目前严重不足的良好学科。

最后要记住一个古老的编程笑话:当计算机可以用书面英语编程时,我们会发现程序员不会写英语。希望资源有限和嵌入式态度的定律也能让这个笑话成为历史。如果不能——嘿——人们仍然在修复COBOL中谋生。

Q&A

Q1:GraceHopper对编程语言发展有什么贡献?

A:GraceHopper开发了第一种高级计算机语言FLOW-MATIC,它使用类似英语的词汇而非数学符号来创建数据处理程序。这项工作催生了COBOL语言,被称为数字时代的创世神话。她的贡献在于消除了思维和编程结果之间的障碍,加速了技术发展。

Q2:AI编程工具目前面临哪些主要问题?

A:AI编程工具目前受到三重挑战:命名问题(被错误地称为"智能"设定了过高期望)、过度炒作(被宣传为万能工具)、以及资源限制(训练需要巨大资源,商业模式存疑)。这些问题导致编程AI目前让程序员效率降低,成为一把双刃剑。

Q3:AI编程工具未来会如何发展?

A:根据历史经验,AI编程工具的发展只能朝一个方向——变得更好。就像过去的高级语言发展一样,虽然初期受到资源限制和固化思维的阻碍,但最终会消除思维和结果之间的障碍,加速技术发展。未来更多人工工作将专注于前瞻性思考和设计。