内容提要
在AI编程时代,编程语言依然重要,因为它不仅是命令计算机的工具,更是向AI精确表达思想的媒介。代码生成变便宜,但人的意图难以清晰传达。编程语言通过类型、函数等结构减少歧义,帮助人固定思想、检验假设,并作为认知脚手架。它并非唯一形式语言,需与自然语言、数学等结合,但核心在于清晰表达思想,而非亲手写代码。
延伸解读
意图表达成为新瓶颈
文章指出,AI Coding 降低的是实现成本,但“目标足够清楚”恰恰最难满足。人的想法往往模糊、不完整,AI 只能根据有限信息补全,可能偏离真实意图。因此,在 AI 时代,清晰表达意图的能力变得比写代码本身更稀缺,这要求开发者更多思考“想创造什么”,而非“如何实现”。
编程语言作为认知脚手架
类型系统不仅防止程序错误,还能作为外部记忆,帮助人记住之前定义的概念和约束,减轻工作记忆负担。文章强调,类型、自动补全等工具将细节外置,让人不必时刻记住整个模型。但约束过早出现会打断思考,因此建议渐进式形式化:先松散表达,再逐步稳定为类型和测试。
形式化的代价与边界
编程语言牺牲开放性换取明确性,但可能丢失无法形式化的部分。程序能运行不代表忠实反映现实,因此不应将一切强行代码化。文章建议自然语言、形式结构和具体例子互相校正,并保留回到原始问题的路径。这提醒我们,形式化是手段而非目的,需警惕过度结构化带来的失真。
Q&A
在AI编程时代,编程语言还有什么价值?
编程语言不仅是命令计算机的工具,更是向AI精确表达思想的媒介。它通过类型、函数等结构减少歧义,帮助人固定思想、检验假设,并作为认知脚手架,使人的意图能被AI更准确地理解。
为什么说代码变便宜了,但意图没有变便宜?
因为AI降低了实现成本,但人的想法往往模糊、不完整,难以清晰传达给AI。AI只能根据已有信息补全,但补全不等于还原真实意图,所以明确表达意图成为新的挑战。
自然语言在表达精确关系时有什么不足?
自然语言擅长交流,但存在歧义。例如“把重要结论记录下来”这句话,没有明确什么算重要、结论与推测如何区分、是否需要来源等。补充解释可能引入新的指代和例外,导致理解偏差。
编程语言如何帮助减少歧义?
编程语言通过类型、函数签名、状态机等结构显式约束关系。例如,用dataclass定义Claim结构,固定了字段类型和可选性,同时可以运行测试来检验思想,从而减少歧义。
类型系统除了防止程序出错,还有什么作用?
类型系统可以作为人的外部记忆,帮助记住之前定义的概念和关系,减少工作记忆负担。它也是一种认知脚手架,将细节外部化,需要时再展开。
编程语言是唯一适合与AI沟通的形式语言吗?
不是。数学公式、状态图、决策表、schema、示例和测试等都可以用于表达不同类型的思想。应根据思想中容易丢失的部分选择最合适的表达方式,编程语言只是其中之一。
形式化表达会损失思想吗?
会。将感受写成字段、价值判断写成布尔值、连续变化压成枚举状态,可能为了结构整齐而删掉无法形式化的部分。程序能运行不代表忠实代表现实,因此需要保留回到原始问题的路径。
AI Coding时代,人需要具备什么能力?
人需要学会表达结构,即把思想表达成AI不必大量猜测的结构。需要知道哪些概念必须区分、哪些状态不能出现、什么结果算成功等,并判断生成的结构是否符合自己的意图。