AI 写代码已经不稀奇了,但专门为 AI 设计的编程语言你见过吗?

这不是某个科技巨头的秘密项目,而是一个刚刚在 GitHub 上火起来的实验性语言——NanoLang。

AI配图

它的目标非常狂野:彻底消除 AI 生成代码时的歧义,用强制手段保证代码质量,最后还能转译成 C 语言跑出原生性能。

甚至可以说,在这个语言里,人类开发者只是“顺便能用”,它真正的第一公民,是大模型。## 极简主义:只有 18 个关键字

现在的编程语言太复杂了。

C 语言有 32 个关键字,各种语法糖、运算符优先级、隐式类型转换,别说 AI,就是人类老手也经常踩坑。

NanoLang 的做法很极端:把关键字砍到 18 个。

它没有让人头秃的运算符优先级,全部采用前缀表示法。你想写 a + (b * c),必须写成:

(+ a (* b c))

这看起来像 Lisp,但这正是为了 AI 考虑。没有歧义,就没有幻觉。

对于大模型来说,这种语法结构就像给婴儿吃的流食,极易消化,极大降低了生成错误代码的概率。

强制测试:不写测试,代码别跑

这是 NanoLang 最“霸道”的地方。

在很多语言里,写测试是靠自觉,是“最好”要做的事。但在 NanoLang 里,测试是强制性的。

每一个函数定义后面,必须紧跟一个 shadow 块。

看看这个加法函数的写法:

fn add(a: int, b: int) -> int {
return (+ a b)
}
shadow add {
assert (== (add 2 3) 5)
assert (== (add -1 1) 0)
}

没有 shadow 块,编译器直接报错。

这种设计把“测试驱动开发(TDD)”刻进了语法里。对于 AI 来说,这意味着它在生成代码的同时,必须生成验证逻辑。这不仅仅是约束,更是一种安全带

它解决了 AI 编程最大的痛点:AI 经常会写出看起来没问题,但运行时崩坏的代码。 强制测试让 AI 在输出代码的那一刻,就必须自我证明逻辑的正确性。

性能怪兽:转译成 C,还能自举

别以为这只是个玩具。

AI配图

NanoLang 是一门编译型语言,它不生成字节码,也不依赖虚拟机,而是直接转译成 C 语言

这意味着什么?

意味着你拥有了 C 语言的原生性能,同时享受现代语言的内存安全特性(默认不可变,静态类型检查)。更硬核的是,它实现了真正的自举(Self-hosting)

从 Stage 0 到 Stage 1 再到 Stage 2,NanoLang 的编译器最终是用 NanoLang 自己写出来的。

只要一行命令 make bootstrap,它就能完成自我迭代。

目前,它已经在 Ubuntu、macOS、FreeBSD 甚至树莓派上跑通了。Windows 用户虽然需要 WSL2,但也能完美运行。

AI 的专属说明书

这才是 NanoLang 区别于所有其他语言的“杀手锏”。

在这个项目的 GitHub 仓库里,你找不到那种写给人类看的、晦涩难懂的语言规范。

AI配图

取而代之的,是两个文件:MEMORY.mdspec.json

"MEMORY.md - Complete LLM training reference with patterns, idioms, debugging workflows, and common errors"这简直就是给 ChatGPT、Claude 准备的“作弊小抄”。

  • MEMORY.md告诉 AI 常见的模式、惯用写法、调试流程和易错点。
  • spec.json用结构化的 JSON 数据定义了类型、标准库和语法。

开发者明确表示:要教 AI 系统 NanoLang,先读 MEMORY.md。

这种“喂饭级”的文档设计,让 NanoLang 成为了目前 LLM 友好度最高的编程语言。

从贪吃蛇到小行星游戏

光有语法还不够,还得能干活。

NanoLang 已经内置了模块系统,支持自动依赖管理。想用 SDL2 写游戏?想用 ncurses 写终端界面?

它会自动调用系统的包管理器(如 apt、Homebrew)安装依赖。

仓库里已经放了一堆示例:

  • 经典的贪吃蛇;
  • 生命游戏;
  • 甚至还有一个带 AI 对战的跳棋游戏;
  • 还有一个完整的《小行星》射击游戏。这些都不是伪代码,是真正可以编译、运行、玩耍的程序

这证明了 NanoLang 不仅仅是一个概念验证,它已经具备了构建复杂应用的能力。

未来的编程,是 AI 说了算?

NanoLang 的出现,其实抛出了一个尖锐的问题:

如果 AI 是未来的主要生产力,我们是否还需要为人类设计的“复杂”编程语言?

NanoLang 用强制测试消除 Bug,用极简语法降低理解成本,用转译 C 保证性能。它牺牲了一部分人类编程的“灵活性”(比如运算符优先级带来的写法自由),换取了 AI 编程的“确定性”。

在这个项目的设计哲学里,有一句话特别耐人寻味:

"Tests are part of the language, not an afterthought."

当测试不再是可选项,当语法不再有歧义,当文档专门为 AI 优化——编程,可能真的要变天了。

也许在不久的将来,我们只需要描述需求,AI 就会用 NanoLang 写出完美、安全、高性能的代码。

而我们要做的,可能只是运行一下 ./hello

参考链接:
https://github.com/jordanhubbard/nanolang