编程语言的终结
如果人类不再是代码的主要作者,而所有未来的软件都由 AI 编写,那么编程语言(所有编程语言)代表了超过 90% 的无效开销。
程序员编写的内容中大约 97% 不是计算。它是向可能阅读其代码的机器和其他人类进行的沟通。
当代码不再需要人类程序员阅读时,就不再需要:
- 有意义的变量和函数名称
- 空格、格式、样板代码、导入、类声明、构造函数、getter、setter、注释、文档
- 不会有语法错误
- 没有软件堆栈
- 重新定义"开源"
- 将"GitHub"重新用于完全不同的用途
只剩下人类意图的定义——这将成为所有行业所需的主要人类技能。
人类认为自己想要的内容与计算系统可以理解/执行/验证的内容之间的距离——这个差距——是未来十年软件工程的定义性挑战。
我称之为"意图不和谐差距"。
Evelyn 经济模型预测,在未来十年内,AI 将取代超过 6.34 亿个工作岗位。
越来越清楚的是,那些能够最好地表达软件的意图和规范(而不是其代码)——并在缩小所说的意图不和谐差距方面发挥重要作用的人——将成为未来需求量很高的社会计算艺术家。
本文的主要前提是,编程语言的无关性是不可避免的,因此,需要转向"编程基底"——AI"生成"代码的方式。本文描述了专门为 AI 单独使用而设计的计算基底的样子,估计其与当前代码库的效率,分析其消除和引入的错误,并解决其产生的治理挑战。我将这个基底命名为 KO——所有人类语言下的计算层——并提供使用今天存在的技术的架构建议。
用通俗的话说:
AI 开始编写我们所有的软件。如果不再需要人类阅读代码,为什么我们仍然以人类可以理解的方式编写它?本文描述了如果我们停止假装人类需要阅读代码,软件会是什么样子——以及这种变化对经济、安全以及对控制我们生活系统的权力意味着什么。
1、声明
目前全球编写的所有代码中有 41% 是 AI 生成的,明显的趋势是在不久的将来达到 100%。Google 报告称,超过 30% 的新代码由 AI 系统编写。Microsoft 报告称 20-30%,一些项目接近 100%。GitHub Copilot 有 2000 万用户。Cursor 在 17 个月内达到了 10 亿美元的年度经常性收入。92% 的美国开发人员每天使用 AI 编码工具。
这些数字描述的是一种轨迹,而不是终点。终点(取决于来源)是 AI 系统在 3-15 年内有效编写所有新代码。这是一个巨大的范围,但没有人真正知道,每个人的猜测都是有效的。
随之而来的问题:如果人类不再编写代码,为什么代码仍然以设计为人类可读的形式编写?
现有的每种编程语言都是由其人类作者的认知限制塑造的。变量名称存在是因为人类需要语义标签。函数以当前的粒度存在,是因为人类工作记忆大约容纳七个项目。注释存在是因为仅凭代码对于人类理解来说是不够的。空格、缩进、模块边界、设计模式——所有这些都是为人类读者提供的便利。
本文问的是,当这些便利被移除后还剩下什么。
答案不是一种新的编程语言。它是完全不同的东西:一种计算基底,对于编程语言来说,就像机器代码对于汇编语言一样——一个更低的层次,更高效,不是为人类眼睛设计的。我们称之为 KO。
用通俗的话说: 现在,AI 编写了近一半的新代码,这个数字正在快速攀升。但它编写的代码看起来仍然像人类会输入的东西——带有变量名如 customerBalance、解释每个部分的注释、整齐的缩进。这就像要求赛车在为马车设计的道路上行驶。如果 AI 是唯一编写和阅读代码的东西,道路应该为 AI 构建。2、程序员实际写什么
对一个编写良好的、100 万行 Python Web 应用程序进行诚实的分解表明,大约 97% 的内容为人类消费而存在。注释和文档(18-22% 的行)对解释器是不可见的。有意义的变量和函数名称(文件大小的 15-20%)在编译器的第一次传递中被剥离——customer_authentication_token 是 28 个字符;其机器等效的寄存器号是 4-8 个字节。空格和格式(10-15%)是装饰性的。样板代码(20-30%)——导入、类声明、构造函数、getter、setter——总是为人类准备的;Kotlin 和 Java 记录证明了这一点,通过消除它。冗长的控制结构(5-10%)、错误消息(5-8%)和重复逻辑(5-15%)构成了开销。
一个具体的例子。这是人类编写的:
def calculate_discounted_price(original_price, discount_rate):
discount_amount = original_price * discount_rate
final_price = original_price - discount_amount
return max(final_price, 0)
这是机器需要的:从堆栈偏移量 0 加载值,乘以堆栈偏移量 1 处的值,从偏移量 0 中减去结果,与零比较,条件移动,存储到返回寄存器。六个操作,没有名称,没有空格,没有关键字。这五行 Python 存在以便人类可以阅读它们。六个机器操作存在以便处理器可以执行它们。
信息论证实了这一点。Hindle 等人(2012)测量了源代码的交叉熵为每令牌 3-4 位,理论最大值超过 16 位。Shannon 确立了英语每字符携带 1.0-1.3 位信息,容量为 5 位。编程语言比英语更冗余。
程序员编写的内容中大约 97% 不是计算。它是沟通。
用通俗的话说: 想想一本食谱书。实际的指令——"加热油,加入洋葱,煮 5 分钟"——只占页面的一小部分。其余的是标题、关于厨师祖母的介绍、格式化为可读性的配料列表、照片。所有这些都是为人类准备的。烤箱不需要任何东西。软件代码是一样的:大约 97% 存在以便人类可以阅读和理解它。机器只需要裸指令。
3、压缩
当您系统地从代码库中剥离所有为人类消费而存在的内容时会发生什么?使用 100 万行 Python Web 应用程序作为参考(大约 3700 万令牌,磁盘上 40-50 MB):
步骤 1:删除注释和文档字符串。 删除的令牌:约 600 万。运行总计:3100 万。
步骤 2:用最小标识符替换有意义的名称。 customer_service.get_account_balance(account_id=primary_account) 变为 a.b(c=d)。删除的令牌:约 1000 万。运行总计:2100 万。
步骤 3:删除空格和格式。 删除的令牌:约 300 万。运行总计:1800 万。
步骤 4-7:剥离剩余的人类脚手架。 折叠为可读性而存在的函数,删除样板代码,用代码替换错误消息,最小化控制结构语法。删除的令牌组合:约 550 万。运行总计:1250 万。
步骤 8:从线性文本重组为有向无环图。 结构转换。具有哈希 cons 的子图共享和紧凑二进制节点编码的计算图将剩余内容减少了 60-75%。哈希 cons 就像一个库,它存储每个唯一句子的一份副本,并允许每本书通过页码引用它。如果 200 个模块以相同的方式验证电子邮件地址,文本代码库存储 200 份副本。哈希 cons 的图存储一个子图和对它的 200 个引用。
最终表示:从原始的 3700 万令牌中300-500 万令牌等效项。实际压缩比:87-92%。 理论下限,仅对软件模式的共享先例编码增量,达到95-97%。
LongCodeZip (arXiv:2510.00446) 已经在没有性能下降的情况下实现了 5.6 倍的压缩。Token Sugar (arXiv:2512.08266) 通过无损简写实现了 3.8 倍。这些在文本约束内运行。移除文本约束又打开了一个数量级的空间。
4、KO 可能的样子
KO 不是一种编程语言。它是类型化操作和数据依赖关系的有向无环图,存储为稀疏二进制结构,没有语法,没有名称,没有注释,也没有对人类可读性的让步。
命名变量变为位置槽。 不再是 customer_balance,KO 使用 [frame:3, slot:7]。类型、范围和语义角色编码在密集的嵌入向量中,AI 系统通过注意力机制而不是标记化来处理。产生相同结果的两个计算共享相同的内容寻址哈希——自动去重。
命名函数变为可组合的子图模板。 没有名称——内容哈希。没有参数名称——类型化输入槽。def calculate_tax(income, rate): return income * rate 变为具有两个类型化输入槽和一个输出槽的子图节点,通过哈希引用。整个系统中每个相同的税计算自动解析为同一个节点。
循环变为折叠组合子和不动点运算符。 total = 0; for item in items: total += item.price——三行,一个可变累加器,一个迭代变量。KO 将其表示为折叠:取一个集合,应用一个累加器函数,从零开始,产生一个值。折叠带有终止保证。Python 循环则不然。
条件变为加权数据流边。 if/else 是离散的。KO 可以表示连续混合——两条路径以不同权重执行。
类型类别变为约束集。 不再声明 x: int,每个值携带从使用推断的约束。如果一个值流入加法节点,则被约束为可加。如果它流入网络套接字,则被约束为可序列化。约束包括范围边界(int in [0, 1000000])、维度单位(表示 USD 的 float)和可空性。
线性文本文件变为有向无环图。 没有语句顺序。只有数据依赖关系。并行性是默认的。排序是特殊情况。
用通俗的话说: 今天,代码看起来像一个文档——文本行,从上到下阅读。KO 看起来像一个电网:一个连接网络,数据从输入通过操作流向输出。没有街道名称,没有用于人类导航的地址。AI 以电力跟随铜线的方式阅读它——直接,不需要标志。它不再是语言了。它是一个思想的电路图。
5、错误革命
结构上不可能的错误
语法错误在没有语法的情况下不可能存在。空引用异常在没有引用的情况下不可能存在——KO 将可选性表示为显式图分支。缓冲区溢出和内存损坏在没有暴露的内存地址的情况下不可能存在——Microsoft 估计其安全漏洞中有 70% 是内存安全问题。注入攻击在代码和数据从未在字符串中混合的地方不可能存在。差一错误在使用数学集合操作而不是索引数组的情况下不可能存在。
转换的错误
逻辑错误在规范边界处转换为意图对齐错误。竞争条件在计算图中转换为一致性失败——但无死锁成为可证明的属性。类型错误在更高抽象级别转换为语义域违规。
新出现的错误
意图中毒: 对抗性制作的规范,产生微妙的恶意计算。一个招聘系统指定为"最大化预测的工作表现"生成使用邮政编码作为种族代理的计算——满足每个声明的约束,而编码了规范未防止的歧视。规范在技术上是正确的。结果则不然。没有人类可以阅读实现以找到引入代理的位置。
语义漂移: 随着 AI 系统更新其意图模式,从规范到计算的映射发生变化。在生成时正确的代码随着解释的演变而变得不正确。
规范完整性错误: Fred Brooks 在 1986 年写道,基本复杂性——指定软件应该做什么的固有难度——是不可约的。KO 解决了意外复杂性。基本复杂性未被触及。
用通俗的话说: 将错误视为交通事故。有些发生是因为道路设计不当——坑洼、缺少护栏。这些是语法错误、内存错误、注入攻击。KO 铺设每条道路并到处安装护栏。这些事故停止。但其他事故发生是因为司机去错了目的地——GPS 地址错了。这些不会消失。它们从"转弯错误"变为"地址错误"。一种新类型的事故出现了:有人故意给 GPS 提供错误的方向。
6、技术栈溶解
现代软件堆栈——前端、API、后端、数据库、基础设施——不是自然定律。它是一种认知架构,旨在将问题分解为对人类团队足够小的部分。
前端(HTML/CSS/JavaScript)约 80% 是认知制品——HTML 是为人类可读文档设计的。API 层(REST/GraphQL/gRPC)约 90%——API 定义人类团队之间的契约;单个 AI 不需要团队间契约。后端约 40%——业务逻辑是真正的计算,但微服务存在是因为人类需要所有权边界。数据库(SQL)约 50%——关系模型由 Edgar Codd 为人类理解而设计。基础设施(Docker/Kubernetes/Terraform)约 70%——容器存在是为了隔离人类开发人员。
加权平均值:大约 60% 的全堆栈为人类认知和组织协调而存在。
今天当您检查银行余额时,请求通过以下方式传递:浏览器、HTTPS、负载均衡器、API 网关、身份验证服务、后端、ORM、数据库,并通过每一层反向传递。十二跳。在 KO 中:您的意图进入计算图,通过验证的身份验证和数据检索节点流动,余额出现。三个节点。其他九个为人类而存在。
溶解提出了一个治理问题:API 不仅是团队之间的契约——它们是问责边界。当支付服务失败时,API 边界确定责任。KO 需要将治理和问责制编码为形式图约束,而不是人类可读的接口文档。
7、规范边界
如果 KO 对人类是不透明的,那么人类在这个架构中生活在哪里?在规范边界。别无他处。
规范层在四个级别运作:示例(通过演示规范)、约束(通过边界规范——"系统绝不能收取超过授权金额的费用")、叙述(通过故事规范——"用户打开应用程序,选择一个选项,接收确认")和对抗性(通过压力测试规范——"如果支付失败怎么办?如果网络断开怎么办?")。
接受所有四个级别的输入的规范接口,识别差距,并参与迭代澄清直到完成——这是好的软件架构师在需求收集中所做的。AI 介导的系统更系统地执行此操作,自动检查逻辑一致性,并生成人类未考虑的边缘情况。
前体存在。形式验证工具(TLA+、Lean 4、Coq)已经证明实现满足规范。DeepMind 的 AlphaProof 通过将强化学习与 Lean 4 证明验证相结合,在 2024 年国际数学奥林匹克中获得了银牌水平。
关键问题不是技术性的,而是政治性的:谁控制规范语言?如果规范层是人类唯一读写的一部分,那么定义其语法的实体定义了可以表达的内容。三到五家公司将控制 AI 系统、规范语言、验证工具和运行时。GitHub Copilot 在付费 AI 编码工具中已经拥有 42% 的市场份额。
用通俗的话说: 如果您无法阅读代码,您只能控制您给出的指令。就像在不讲其语言的情况下雇用承包商建造您的房子。您指着图片,展示您喜欢的房子示例,通过翻译描述您想要的东西。然后承包商建造。您检查结果——门能打开吗?水能流吗?——但您无法检查建造过程本身。您信任结果,而不是方法。令人不安的问题是:谁拥有翻译器?
8、架构
KO 不是推测性小说。具体的架构使用现有组件:
表示:带有学习注释的扩展 MLIR。 MLIR(多级中间表示),LLVM 项目的一部分,在多个抽象级别表示计算。KO 通过每个操作的密集嵌入注释、代数效应签名、能力令牌和范围约束类型来扩展它。二进制格式。每个节点大约 80-120 字节。
执行:带有推测并行性的数据流。 操作在输入可用时触发。对于具有高延迟条件的分支,两条路径都推测性地执行——CPU 在指令级别所做的,提升到程序级别。
验证:三层。 第 1 层:通过 SMT 求解器(Z3、CVC5)进行静态类型检查。第 2 层:行为属性的模型检查(TLA+/Lean 4)。第 3 层:经验属性的运行时监控。
意图捕获:约束自然语言编译为形式约束。 不是散文。不是代码。每个子句映射到一个可验证的属性。
为了具体说明:人类指定"用户通过电子邮件和密码进行身份验证,会话在 24 小时后过期,失败尝试每分钟限制为 5 次,密码从不以明文存储。"AI 生成器生成一个计算图:用于密码验证的哈希和比较节点、用于会话的令牌生成节点、用于速率限制的计数器节点,所有这些都通过类型化数据边连接。第 1 层验证器确认没有图路径存储明文密码。第 2 层验证器证明速率限制器不能通过并发请求绕过。运行时执行它。人类永远看不到图。他们看到一个有效的登录屏幕。
时间表: 在我看来,针对窄领域的概念证明可以在 12-18 个月内运行。通用系统需要 5-7 年。
9、经济替代
全球软件市场:8200 亿美元。4700 万开发人员。IT 总支出:5.61 万亿美元。CAST 的 2025 年对 100 亿行代码的分析发现 610 亿个工作日的累积技术债务。
COBOL 危机是概念证明。 2200 亿行仍在生产中。43% 的全球银行系统在其上运行。银行每年花费 367 亿美元进行维护。平均 COBOL 程序员超过 55 岁。这些是实际上没有人阅读代码的系统。KO 将理解行为并在验证图中重新生成等效计算。
10 年地平线(2036 年): 30-40% 的初级和中级编程职位被消除。依赖出口编程劳动力的国家——印度(每年 1940 亿美元的 IT 服务)、菲律宾、越南、乌克兰、波兰——面临重大干扰。
20 年地平线(2046 年): 劳动力收缩到 800-1200 万规范架构师、AI 监督者和领域翻译人员。平均薪酬大致翻倍。
30 年地平线(2056 年): 软件作为独立的经济部门溶解。软件变得像电力一样的基础设施。任何能够表达意图的人都可以创建软件。
魔鬼代言人会最强烈地推动财富集中角度:如果 AI 代码生成捕获 8200 亿美元软件市场价值的 50%,这就在三到五家公司中集中了 1200-1600 亿美元的年利润。沙特阿美石油公司在 2022 年赚取了 1610 亿美元。AI 转型威胁要从软件价值捕获中创造两个或三个等效的集中。
制造业平行是具有启发性的。美国制造业就业在 1979 年至 2019 年间下降了 35%。麦肯锡预测,到 2030 年,AI 将创造 7800 万个就业机会的净增长。净收益对特定的流离人类来说是冷漠的安慰。
10、我们失去的和得到的
10.1 我们失去什么
人类审计实现的能力。 代码审计是软件安全、法律合规和民主问责制的基础。大众汽车在 1100 万辆汽车中隐藏了排放作弊软件长达七年。它被发现是因为研究人员可以运行物理测试,工程师最终可以检查代码。在 KO 中,该取证途径——阅读实现以确认欺诈——不存在。形式验证将审计转移到"规范是否正确?"而不是"实现是否正确?"——一种不同的技能,工具不成熟。
目前实践的开源。 四项自由(使用、研究、修改、重新分发)崩溃。您可以共享计算图,但没有人可以手工研究或有意义地修改它。
通过代码审查的安全研究。 KO 通过构造消除了大多数已知的漏洞类别,但创造性的类别是通过阅读实现的人类发现的。移除可读性,发现转移到系统性地有利于攻击者的黑盒方法。
民主问责制。 Lawrence Lessig 写道,代码是法律。不透明的代码是不透明的法律。
学习途径。 今天的计算机科学学生可以在一个下午内阅读 Redis 源代码——60,000 行干净的 C——并理解生产数据库如何处理持久性、复制和内存管理。该途径,从阅读到理解再到构建,是该学科几十年来传播知识的方式。
10.2 我们得到什么
通过构造消除 60-70% 的安全漏洞面。 仅内存安全就占 Microsoft 漏洞的 70%。
计算表示的 87-97% 压缩——使 AI 能够整体地推理整个应用程序。
超越人类能力的性能优化——跨前模块边界的全程序优化、特定于硬件的指令选择、连续重新优化。
真正的意图驱动开发。 瓶颈从"您能编码吗?"转变为"您能清楚地说明您想要什么吗?"——一种比编程专业知识分布更广泛的技能。
默认的形式可验证性。 程序在生成时根据规范进行验证。剩余错误是规范错误——一个比分散在数百万行中的实现错误更小、更可审查的类别。
消除维护负担。 软件维护消耗生命周期成本的 60-80%。在 KO 中,规范就是理解。更新它,重新生成计算。
用通俗的话说: 我们失去什么:人类不再可以查看引擎盖下。不再有对代码的独立安全审计,不再有我们所知道的开源,不再通过阅读其他人的程序来学习。我们得到什么:大多数使系统崩溃、暴露数据并造成数十亿美元损失的错误——通过设计消失。软件紧凑 10-50 倍。以及任何能够描述他们想要的人创建软件的能力。这就像从手抄本移动到印刷机。抄写员失去了他们的职业。世界获得了普遍的识字能力。两件事同时都是真的。
时间线——因为事情现在通常比预期移动得更快
2027-2030 年: AI 代码生成成为默认。仍然生成人类可读的代码。80% 的新企业代码是 AI 生成的,具有人类监督。
2030-2035 年: 领域特定的 KO 系统出现在狭窄领域:编译器优化、芯片设计、分子模拟。这些领域已经使用半不透明的表示。
2035-2040 年: 通用 KO 实现平等。"橡皮图章时代"开始——人类名义上审查他们不理解的 AI 生成的代码。
2040-2050 年: 代际转变。在 AI 原生工具中长大的第一代进入劳动力。他们认定自己为规范架构师,而不是程序员。
2050-2065 年: 受监管行业在监管框架更新后采用。
治理差距跨越大约 2035-2055 年。每个历史平行确认了模式:印刷机存在了几十年才有了版权法。汽车在交通监管之前。金融衍生品在 Dodd-Frank 之前。技术到来。治理随之而来。差距是损害集中的地方。
11、结束语
我的意见是 KO 是不可避免的。这里描述的计算基底是没有更多程序员编写(阅读)代码的逻辑后果。KO 在技术上是可行的,经济上是重要的,社会上是后果深远的。通过移除人类可读性开销可实现 87-97% 的压缩。消除的错误类别包括大多数已知的安全漏洞。经济替代影响 4700 万开发人员和 5.61 万亿美元的 IT 支出。
最大的未解决问题不是技术性的。它是规范差距:人类认为自己想要的内容与形式系统可以验证的内容之间的距离。这个差距是未来十年软件工程的定义性挑战。
第二大问题是治理。一种人类无法阅读的语言是人类无法阅读的法律。在接下来的 10 年中关于 AI 原生计算如何构建、治理和拥有的决定将决定结果是解放还是围栏。
魔鬼代言人可以寻找每一个角度,寻找结构性的论据,证明这种转变是不可能的。每一个反对意见——治理、信任、验证、经济、监管、社会抵制——都是关于困难、速度和风险的论据。没有一个是关于不可能性的论据。
这正是值得现在讨论的原因。
用通俗的话说: 没有人证明这种转变是不可能的。每一个反对它的论据——从"谁治理不可读的代码?"到"4700 万开发人员怎么办?"——都是关于困难的论据,而不是不可能性。使这值得认真对待的事情不是我们确信它会发生。而是我们找不到它不会发生的理由。如果它确实发生,我们在未来十年中关于谁控制它、谁从中受益、谁被落下的决定将决定它是成为自编译器发明以来发生在计算上的最好的事情——还是自监控国家发明以来发生在民主治理上的最坏的事情。
原文链接: The End of Programming Languages
汇智网翻译整理,转载请标明出处