AI 时代还需要编程语言吗?
过去几年,大模型能力飞速发展,AI 生成代码的质量不断提高,在实际项目中的占比也越来越高。如今,越来越多的开发者开始借助 AI 完成代码编写,甚至已经出现了主要由 AI 参与开发的项目。
这也引出了一个无法回避的问题:既然 AI 已经能够编写代码,我们还需要编程语言吗?
有没有可能通过自然语言描述需求,让 AI 绕过编程语言,直接生成可执行的汇编程序?
目前,没有任何一家 AI 能保证生成的代码 100% 正确。
原因主要有两个。
第一,AI 本身并非完全可靠,仍然可能出现逻辑错误、遗漏边界条件或误解上下文。虽然当下 AI 的准确率逐年提升,但很难做到绝对正确。
第二,也是更根本的原因,自然语言本身具有模糊性,很难精确、完整地描述软件需求。同一句需求,不同的人可能会有不同的理解,AI 也不例外。
所以,想让 AI 生成符合预期的程序,仍然需要人工验证其正确性。
对于前端而言,可以通过最终界面和交互效果较快地确认程序是否符合需求;而对于后端,由于其行为无法直接观察,通常仍需要阅读代码、设计测试用例或运行测试,才能验证业务逻辑是否正确。
正因为如此,即使 AI 能够直接生成汇编程序,人们通常也不会选择这种方式。因为汇编代码几乎无法高效阅读、理解和审查,一旦程序出现问题,也很难定位原因。
真正需要人工验证的并不是程序最终会被编译成什么,而是程序的逻辑是否符合需求。因此,AI 更适合生成可读、可理解、可审查的编程语言代码,再由编译器将其转换为机器码。
从这个角度来看,AI 并不会取代编程语言。编程语言仍然是人类理解、交流和验证程序逻辑的重要媒介,而 AI 改变的,只是人们编写程序的方式。
AI 时代的编程语言应该有什么变化
在“上古”时代,软件开发主要依赖普通文本编辑器,代码需要逐字输入。
因此,当时的编程语言和编程习惯都十分重视输入效率。例如,变量名、函数名要尽可能简短,以减少键盘输入量。
后来,随着 IDE、自动补全、代码导航和重构等工具逐渐成熟,代码输入效率已不再是主要瓶颈。相比于少输入几个字符,人们更关注代码的可读性、可维护性以及开发效率,因此,更长、更具语义的命名逐渐成为主流。
这说明,编程语言并不是一成不变的,它始终会随着开发工具和开发方式的变化而演进。
如今,人们录入代码的效率又有了很大飞跃,那编程语言应该作哪些变化呢?
更重视确定性和可读性
过去,编程语言更多地追求便于人类编写;而在 AI 时代,它更应该追求便于人类理解、审查和验证。
这意味着,许多为了减少键盘输入而存在的设计已经不再重要,甚至可能成为累赘。相比于少输入几个字符,我们更关心代码是否具有清晰、统一且低歧义的语义,是否能够准确表达程序员的意图,以及是否便于人类快速理解和验证。
“验证成本”是 AI 时代编程语言的核心竞争力
随着 AI 编程能力不断提升,真正消耗开发者时间的,已经不再是写代码,而是验证 AI 生成的代码是否正确。
因此,未来衡量一门编程语言优劣的重要指标,不再只是编写效率,而是验证效率。
理想情况下,编程语言应该尽可能降低验证成本。例如,通过更加清晰的语法、更少的隐式规则、更统一的语言设计,以及更强的静态分析能力,让 AI 生成的代码更容易被人类理解和审查。
甚至,编程语言还可以内置一套面向 AI 的验证体系,帮助开发者自动检查代码是否满足约束条件、是否违反设计规范,以及是否符合需求描述,从而进一步提高 AI 生成代码的可信度。
小结
AI 并不会取代编程语言,但会改变编程语言的发展方向。
未来的编程语言,不应该继续围绕“如何让程序员少敲几个字符”进行设计,而应该更多地思考“如何让 AI 更准确地生成代码,以及如何让人类更高效地验证代码”。
一门优秀的 AI 时代编程语言,不一定拥有最短的语法,也不一定拥有最多的语法糖,而应该具备以下几个特点:
- 语义清晰:同一种功能尽量只有一种推荐写法,减少歧义。
- 结构统一:相似的概念采用一致的设计,降低学习成本和推理成本。
- 易于验证:尽量避免隐式规则,减少特殊情况和例外,使代码更容易理解、审查和验证。
- 工具友好:能够充分利用静态分析、形式化约束等能力,提高 AI 生成代码的可靠性和可预测性。