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追求读代码时的确定性(无歧义、可预测)
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追求读代码时的确定性(无歧义、可预测)
❤1👍1🍌1
Vol.309 珍惜已经存在的东西,把已有的东西做好
红杉资本合伙人 Pat Grady 说:最好的资源利用方式 —— 把已有的东西做好。
想了想有几层:
看看自己有什么,
看看自己真的理解自己有什么,
看看自己所在的地方,历史上有什么?
你能看到多久的过去,才能看到多久的未来
红杉资本合伙人 Pat Grady 说:最好的资源利用方式 —— 把已有的东西做好。
想了想有几层:
看看自己有什么,
看看自己真的理解自己有什么,
看看自己所在的地方,历史上有什么?
你能看到多久的过去,才能看到多久的未来
某种程度上我是反用户调研主义者
理由有一个玄幻一点点的是乔布斯说的,用户不知道想要什么,真正重要的产品都是做出超出用户预期的东西,你不可能问出一个用户都不知道的答案
第二个理由是,来自思维快与慢,大部分快消品决策走得是系统一,10s广告,货架看一眼就决定。把用户关在单面镜会议室里用系统二说出来的话大部分更像是假装理性的cosplay
用户调研什么是有价值的?
1. 产品体验维度的观察,好奇用户拿到产品怎么用,可以躲在单面镜后面观察直接反应
2. 讨论复购路径和理解用户如何向其他人描述推荐产品,提取用户语料融入营销
理由有一个玄幻一点点的是乔布斯说的,用户不知道想要什么,真正重要的产品都是做出超出用户预期的东西,你不可能问出一个用户都不知道的答案
第二个理由是,来自思维快与慢,大部分快消品决策走得是系统一,10s广告,货架看一眼就决定。把用户关在单面镜会议室里用系统二说出来的话大部分更像是假装理性的cosplay
用户调研什么是有价值的?
1. 产品体验维度的观察,好奇用户拿到产品怎么用,可以躲在单面镜后面观察直接反应
2. 讨论复购路径和理解用户如何向其他人描述推荐产品,提取用户语料融入营销
我有个脑洞:把AI接入会议室。
起因是我感觉现在AI比我聪明太多了,和同事讨论问题经常需要先查查AI,如果同事开会的时候问了个我回答不上来的问题怎么办?临时找AI还要给那么多上下文,不如直接让AI来入会?
现在meeting里的很多AIbot还是在做秘书的工作,能不能直接变成智囊团?聊到一个棘手的问题的时候,直接问AI:你觉得应该怎么办?
吵得不可开交的时候,问AI:你觉得谁说的对?
这想想也太棒了!把AI接入会议室八爪鱼可以解决收声问题,声纹识别可以解决身份识别的问题,再给AI会议室屏幕,🤷!!wtf
起因是我感觉现在AI比我聪明太多了,和同事讨论问题经常需要先查查AI,如果同事开会的时候问了个我回答不上来的问题怎么办?临时找AI还要给那么多上下文,不如直接让AI来入会?
现在meeting里的很多AIbot还是在做秘书的工作,能不能直接变成智囊团?聊到一个棘手的问题的时候,直接问AI:你觉得应该怎么办?
吵得不可开交的时候,问AI:你觉得谁说的对?
这想想也太棒了!把AI接入会议室八爪鱼可以解决收声问题,声纹识别可以解决身份识别的问题,再给AI会议室屏幕,🤷!!wtf