AI 写代码已经不稀奇了,但专门为 AI 设计的编程语言你见过吗?
这不是某个科技巨头的秘密项目,而是一个刚刚在 GitHub 上火起来的实验性语言——NanoLang。
它的目标非常狂野:彻底消除 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,还能自举
别以为这只是个玩具。
NanoLang 是一门编译型语言,它不生成字节码,也不依赖虚拟机,而是直接转译成 C 语言。
这意味着什么?
意味着你拥有了 C 语言的原生性能,同时享受现代语言的内存安全特性(默认不可变,静态类型检查)。更硬核的是,它实现了真正的自举(Self-hosting)。
从 Stage 0 到 Stage 1 再到 Stage 2,NanoLang 的编译器最终是用 NanoLang 自己写出来的。
只要一行命令 make bootstrap,它就能完成自我迭代。
目前,它已经在 Ubuntu、macOS、FreeBSD 甚至树莓派上跑通了。Windows 用户虽然需要 WSL2,但也能完美运行。
AI 的专属说明书
这才是 NanoLang 区别于所有其他语言的“杀手锏”。
在这个项目的 GitHub 仓库里,你找不到那种写给人类看的、晦涩难懂的语言规范。
取而代之的,是两个文件:MEMORY.md 和 spec.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)安装依赖。
仓库里已经放了一堆示例:
- 还有一个完整的《小行星》射击游戏。这些都不是伪代码,是真正可以编译、运行、玩耍的程序。
这证明了 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