Aperio Lang

Hacker News Top 工具

摘要

Aperio 是一种编程语言,旨在通过使用基于递归超图的类型化单元(称为 loci)的结构模型,来降低人类心智模型与 LLM 代码生成之间的翻译成本。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/05/15 18:33

# 引言 - Aperio 来源:https://aperio-lang.github.io/aperio/introduction.html ## 键盘快捷键 按 ← 或 → 切换章节 按 S 或 / 在书中搜索 按 ? 显示此帮助 按 Esc 隐藏此帮助 ## Aperio ## 引言 (https://aperio-lang.github.io/aperio/introduction.html#introduction) 在 2023 年之前设计的每种语言都针对一个单一的权衡进行了优化:最小化人类认知能力和机器执行之间的摩擦。从汇编到 C,再到托管运行时,再到 DSL,都在这条线上占据不同的位置。在 LLM 驱动的工作流中,这些语言的使用成本不会降低——反而会更高。成本只是隐藏在 LLM 的 token 计数、重试率以及每轮对话消耗的延迟中。**前 LLM 时代语言在 LLM 时代是一种隐性税。** LLM 每轮对话的大部分努力并非回忆语法,而是*在*用户对系统的心理模型和语言的结构形态之间进行*翻译*。一门原语与系统思考方式不匹配的语言,每次对话都会强制进行这种翻译,每次都付出全部成本。 Aperio 建立在不同的前提上:存在一种与基底无关的结构模型——一种由类型化、具有生命周期的单元(称为**loci**)组成的递归超图——人类推理和 LLM 推理在处理系统时都对其加以运用。^(1) (https://aperio-lang.github.io/aperio/introduction.html#footnote-research) 一门其原语*就是*该模型的语言,将翻译层折叠了起来。心理模型和代码共享同一个基底。 ## 实践中看起来如何 (https://aperio-lang.github.io/aperio/introduction.html#what-that-looks-like-in-practice) 选择一个你已经有了心理模型的系统:多人在线游戏背后的配对器。在你的脑海中,这个东西是*一个持有等待玩家队列的服务,当足够多人排队时生成一个比赛,然后继续等待。* 这是 Aperio 中的对应代码: ``` type Player { id: String; name: String; } type MatchInfo { match_id: String; players: [Player]; } topic JoinQueue { payload: Player; } topic MatchReady { payload: MatchInfo; } @form(vec) locus Matchmaker { params { target_size: Int = 4; } capacity { heap waiting of Player; } bus { subscribe JoinQueue as on_join; publish MatchReady; } fn on_join(p: Player) { self.waiting.push(p); if self.waiting.len() >= self.target_size { MatchReady <- assemble_match(self.waiting, self.target_size); } } } ``` 心理模型描述中的每个子句在代码中都有对应的语法结构,大致按你思考的顺序: - *"一个服务"* → `locus Matchmaker` - *"持有一个等待玩家的队列"* → `capacity { heap waiting of Player; }`(`@form(vec)` 注解赋予它类似队列的方法) - *"接收希望匹配的玩家"* → `subscribe JoinQueue as on_join` - *"宣布比赛"* → `publish MatchReady` - *"当足够多人排队时"* → 行内的 `if` 结构对应性才是重点。同样的描述在 Go、Rust 或 TypeScript 中会扩展出更多关注点:互斥锁选择、通道类型、async/await 机制、显式生命周期连线、每个通道边界的错误处理。其中的每一个都是 LLM 每轮对话必须执行的翻译。Aperio 省略了它们,因为语言在结构层面对它们做出了承诺。 此处选择 `@form(vec)` 本身就是一个真实的设计决策,而非随意为之。`@form(ring_buffer)` 提供了相同的形状,但有硬性容量上限和明确的满时丢弃语义;按玩家 ID 键控的 `@form(hashmap)` 则能得到基于 ID 的自然取消机制。Form 是 Aperio 暴露这些选择的方式——我们将在**概念**章节中介绍它们。 ## 在你的代码上验证 (https://aperio-lang.github.io/aperio/introduction.html#see-it-on-your-own-code) 上面的配对器是一个构造的例子。这种主张可以在你已有的代码上进行测试。在你使用的任何 LLM 编码工具中(Claude Code (https://claude.ai/code)、Cursor 或其他),将这个项目的 `AGENTS.md` (https://github.com/aperio-lang/aperio/blob/main/AGENTS.md) 放入代理的上下文中,然后让它**用 loci、contracts 和 bus topics 的术语**重新阅读你现有代码库中的一个模块或服务。 返回的结果通常是一个与你系统心理模型惊人匹配的结构分解——因为代理使用了你在推理代码时已经使用的相同递归 locus 词汇。你通常感受到的*你对这个系统的思考方式*和*页面上实际内容*之间的摩擦,在很大程度上消失了。 如果分解结果看起来错误或没有帮助,那么该论点对你的代码库就不成立,这是有用的反馈——请创建一个 issue。如果它看起来正确,那么你就从另一个方向感受到了结构对应性:不是通过编写新的 Aperio 代码,而是通过同一个透镜来阅读你现有的代码。 ## 不仅仅是一门编程语言 (https://aperio-lang.github.io/aperio/introduction.html#more-than-a-programming-language) Aperio 操作化的结构模型并非软件特有。相同的递归超图在底层研究项目所涉及的每个基底上都组织了协调:机构、生物调控网络、物理系统、认知架构。Aperio 的前端原则上是一种*设计语言*,可以针对这些基底中的任何一个进行机器映射。编程语言形式是第一个实例,而不是唯一的一个。(保守地说——当务之急是语言本身。) ## 状态与形态 (https://aperio-lang.github.io/aperio/introduction.html#status-and-shape) 这是一门实验性语言。编译器通过 LLVM 18 生成本地代码,并提供一个树遍历解释器以获得快速反馈。语义仍在变化中;期待并欢迎重大变更。 继续阅读**入门指南**以安装编译器并编写你的第一个 locus。在感受到其形态后,**概念**章节将深入介绍结构模型。关于规范契约——编译器接受什么以及做了什么——请参阅**参考**部分(指向 `spec/` 语料库)。 --- 1. 该结构模型是一个正在进行的研究项目的主题。第一个形式化是 Rook(2026 年,即将出版),*Capacity Allocation Model*;可应要求提供预印本。↩ (https://aperio-lang.github.io/aperio/introduction.html#fr-research-1) https://aperio-lang.github.io/aperio/getting-started/install.html https://aperio-lang.github.io/aperio/getting-started/install.html

相似文章

关系建模与 APL

Lobsters Hottest

作者探讨了利用约束逻辑和等式重写规则,将关系建模与 APL 风格的数组语言相结合,并讨论了如何将属性定义为双向推导,而非简单的赋值。

LLM神经解剖学第三部分 - LLMs似乎以几何而非语言思考

Reddit r/LocalLLaMA

研究人员分析了LLMs在8种语言和多个模型中的内部表示,发现概念思考发生在transformer中间层的几何空间中,且与输入语言无关,这支持了类似于乔姆斯基理论的普遍深层结构假说,而非萨丕尔-沃尔夫语言相对论。

ConlangCrafter:使用多跳LLM流程构造语言

arXiv cs.CL

ConlangCrafter是一个多跳LLM流程,通过将构造语言(conlang)创建过程分解为包括音系、形态、句法、词汇生成和翻译在内的模块化阶段,实现构造语言的自动化创建。该系统利用LLMs的元语言推理能力,结合随机性注入和自我完善来生成连贯且类型学多样的构造语言。