Armin Ronacher(极简 Coding Agent 工具 Pi 的两名开发者之一)在最新文章(A Language for Agents)中,总结了 AI 对编程语言特点的好恶:

AI喜欢什么:

显式类型信息,无需LSP推断
刚性语法结构,括号优于空白
副作用必须声明 needs { db, time }
结果类型替代异常(Result)
grep可搜索的显式包前缀

AI讨厌什么:

宏(Macros)增加理解难度
重新导出(Re-Exports)和Barrel Files
不稳定测试(Flaky Tests)
工具链分裂(代码能跑但类型检查失败)

如果我们要设计这样的语言,它会是怎么样的呢?

# AI 时代的编程语言:从写起来准,到读起来准

面向Agent的编程语言应具备"显式契约"特性——所有对代码行为的假设都必须明文写进代码,而非依赖外部工具或开发者记忆。

- 三大契约维度

1. 类型契约:签名即文档

// 而非:auto result = process(data)
// 而要:Result process(RawData data)

拒绝动态类型和过度类型推断。类型信息必须保留在源码中,无需LSP即可理解。

2. 依赖契约:函数即边界

func fetchUser(userId: UserID) needs { db, time }

所有副作用(数据库、时间、随机数)必须在函数签名中显式声明。AI才能正确Mock,写出稳定测试。

3. 语法契约:明确胜于简洁

拒绝聪明:避免宏、运算符重载、隐式转换

拒绝魔法:避免全局状态、依赖注入黑盒

拒绝歧义:避免重导出、Barrel files,

定义必须指向单一真实来源

- 代码可读性的衡量标准

语言是否Agent友好的评估指标:

独立理解度:脱离IDE,仅靠grep能否定位所有依赖?

修改局部性:改一行代码,受影响范围是否可预期?

工具一致性:parser、type checker、formatter、linter对代码的理解是否100%一致?

测试确定性:AI生成的测试是否必然通过或失败

# 一句话总结

AI友好的代码 = 显式信息密度 × 局部可推理性

人类追求写代码时的快感(少打字、灵活性)

AI追求读代码时的确定性(无歧义、可预测)
 
 
Back to Top