开发者生态
morning
阿佩里奥·朗
2026-05-15
1 阅读
mmcclure
简介 2023 年之前设计的每种语言都针对单一权衡进行了优化:最大限度地减少人类认知能力和机器执行之间的摩擦。汇编到 C、托管运行时和 DSL 是同一行上的不同点。在法学硕士驱动的工作流程中,这些语言的使用成本并没有变得更便宜,而是变得更昂贵。成本只是隐藏在 LLM 的令牌计数、重试率以及每轮消耗的延迟中。法学硕士预科语言是法学硕士时代的隐性税收。法学硕士每回合的大部分工作并不是回忆语法。它在用户的系统心理模型和语言的结构形状之间进行转换。一种原语与系统思考方式不匹配的语言每次都会强制进行这种翻译,每次都付出全部成本。 Aperio 建立在一个不同的前提之上:存在一个底物不变的结构模型 - 一种称为基因座的类型化、生命周期单元的递归超图 - 人类推理和 LLM 推理在使用系统时都可以操作。 1 其原语是该模型的语言会折叠翻译层。心智模型和代码共享一个基础。实际情况如何 选择一个您已有心理模型的系统:多人游戏背后的匹配者。在你的脑海中,这个东西是一个服务,它保存一个等待玩家的队列,当足够多的玩家排队时生成一场比赛,然后返回等待。在 Aperio 中:输入 Player { id: String;名称:字符串; } 类型 MatchInfo { match_id: 字符串;玩家:[玩家]; } 主题 JoinQueue { 有效负载:玩家; } 主题 MatchReady { 负载:MatchInfo; } @form(vec) 轨迹 Matchmaker { params { target_size: Int = 4; } 容量 { Player 的堆等待; } 总线{ 订阅JoinQueue 作为on_join;发布比赛准备就绪; } fn on_join(p: 玩家) { self.waiting.push(p); if self.waiting.len() >= self.target_size { MatchReady <- assemble_match(self.waiting, self.target_size);心智模型描述的每个子句在代码中都有一个语法主页,大致按照您考虑它们的顺序:“服务”→轨迹 Matchmaker“持有等待玩家的队列”→容量{玩家的堆等待; (@form(vec) 注解给了它类似队列的方法)“接收想要比赛的玩家”→订阅JoinQueue作为on_join“宣布比赛”→发布MatchReady“当足够多的人排队时”→内联的if结构对应是重点。 Go、Rust 或 TypeScript 中的相同描述扩展到更多问题:互斥体选择、通道类型、异步/等待机制、显式生命周期连接、每个通道边界的错误处理。其中每一个都是法学硕士每次都必须执行的翻译。 Aperio 消除了它们,因为该语言在结构层上承诺了它们。这里 @form(vec) 的选择本身就是一个真正的设计决策,而不是任意的。 @form(ring_buffer) 给出相同的形状,具有硬容量上限和显式的 drop-on-full 语义;由玩家 ID 键入的 @form(hashmap) 可以让您自然地基于 ID 取消。表单是 Aperio 公开这些选择的方式 - 我们在概念中介绍了它们。自己看代码上面的matchmaker就是一个构造好的例子。该声明可以在您已有的代码上进行测试。在您使用的任何 LLM 编码工具(Claude Code、Cursor 等等)中,将该项目的 AGENTS.md 放入代理的上下文中,然后要求它从您现有的代码库中重新读取模块或服务的轨迹、合约和总线主题。通常返回的是结构分解,它以惊人的准确性与您的系统心智模型相匹配——因为代理使用的递归轨迹词汇与您在推理代码时已经使用的相同。你通常感受到的对这个系统的看法和页面上的实际内容之间的摩擦基本上消失了。如果分解看起来是错误的或无用的,那么这篇论文对于你的代码库来说是失败的,这是有用的反馈——提出一个问题。如果看起来正确,那么您已经从另一个方向感受到了结构对应关系:不是通过编写新的 Aperio 代码,而是通过相同的视角阅读现有代码。不仅仅是一种编程语言 Aperio 可操作的结构模型不是特定于软件的。同样的递归超图在基础研究计划所涉及的每个基础上组织协调:机构、生物调节网络、物理系统、认知架构。原则上,Aperio 的前端是一种设计语言,可以针对任何这些基材中的机械。编程语言形式是第一个实例化,而不是唯一的实例化。 (轻一点——直接的工作是语言本身。) 地位和形态 这是一种实验性语言。编译器通过 LLVM 18 和树遍历解释器提供本机代码生成,以实现快速反馈。语义仍在变化;突破性的变化是值得期待和欢迎的。继续开始安装编译器并编写您的第一个轨迹。当你感觉到形状后,