CN-Language 中文编程语言:序言

这是一门语言的出生证明,也是一份普通人的战书。

一、为什么执着于中文?

总有人问我:现成的编程语言那么多——C、C++、Java、Python、Go、Rust——个个身经百战,你为什么非要执着于中文?

我先反问一句:一个用中文思考了半辈子的人,为什么写代码时必须切换成英文思维?

有人会说,关键字才几十个,背下来就行了。可真正的墙从来不是 if 和 else。是官方文档、是报错日志、是命名惯例、是社区里铺天盖地的英文讨论——从你敲下第一行代码起,你就被泡进了一个全英文的世界。中国程序员入门的第一课,不是编程,而是英语。我们习以为常,以为天经地义。可是,习以为常不等于理所当然。

全世界十几亿人以中文为母语,他们想进入编程的世界,必须先翻过一道语言的墙,墙上写着:想学编程?先学英语。逻辑思维不分国界,为什么学编程的门票要用英语结算?

还有人搬出历史:别国也试过母语编程,都失败了。可是,别人失败过,不等于这件事不该做;前人没做成,不等于今天做不成。恰恰相反——这件事太难、太慢、太不赚钱,所以几乎没人认真做过。而一件几乎没人认真做、又真实关系着十几亿人的事,正是值得做的事。

我执着于中文,不是出于情绪,而是出于一个朴素的判断:工具应当向使用者靠拢,而不是让使用者向工具低头。

二、"不就是翻译关键字?挂羊头卖狗肉!"

批评的升级版更刺耳:"CN 不就是把 C 的关键字翻译成中文吗?if 变如果,for 变循环——挂羊头卖狗肉!"

如果真是这样,我第一个同意把它扔进垃圾桶。一个关键字翻译器,一个预处理器一天就能写完,不值得一提。

但请打开 CN 的源码仓库看一眼。

CN 是一门从零实现的系统级编程语言。词法分析器、语法分析器、语义分析器、中间表示(IR)、优化器、代码生成器——编译器的每一层,都是从第一行代码亲手写起的。它不把代码"翻译"成 C 再借别人的编译器,而是自己读懂代码、自己检查代码、自己生成机器码。今天,同一份 CN 程序,可以在 Windows x64 上编译出 MASM 汇编,也可以在 Linux x64 和 ARM64 上编译出汇编——三条后端,全部自己写。数百个端到端测试用例守着每一条语言特性,编译、链接、运行、比对,一步不假。

更关键的是安全。C 和 C++ 陪伴了世界五十年,也把缓冲区溢出、悬垂指针、内存泄漏的噩梦延续了五十年。Rust 证明了这些噩梦可以在编译期终结,于是 CN 把目标写成两句话:性能对标 C++,安全接近 Rust。借用检查、越界与悬垂检测、确定性的析构与释放——这套安全体系不是从谁那里搬来的,是围着 CN 自己的类型系统,一个缺陷一个缺陷地长出来的,而且仍在一天天长厚。

还有一件正在进行、也最能说明问题的事:自举。我们正在用 CN 语言自己,重写 CN 编译器自己。到那一天,"只会翻译关键字的玩具"这种说法将不攻自破——玩具永远不可能用它自己写自己。

所以,羊头下面卖的到底是什么,欢迎来看。是发动机,不是车壳。

三、聪明人为什么不做基础?

有人问:这么明显该做的事,为什么轮到你这个普通人来做?

我的答案可能不太中听:程序员是最聪明的人群之一,而聪明人总喜欢偷懒和赚快钱。

这不是贬低,恰恰是恭维。偷懒是程序员的美德——好的抽象、好的工具,本质都是为了偷懒;赚快钱也无可厚非——人要吃饭,资本要回报。正是这两种天性,让中国程序员在应用层创造了一个又一个奇迹:电商、支付、短视频、社交,我们的应用繁荣程度不输世界上任何一个国家。

可是把镜头拉远一点:这些奇迹跑在什么上面?跑在 Linux 上,写在 Java、Go、JavaScript 里,编译在别人的编译器上,部署在别人定的协议和标准之上。应用的大楼越盖越高,地基却全是别人打的。

基础软件是一件典型的"反聪明人天性"的事:编译器、操作系统、数据库——投入十年才可能听见回响,商业上一时看不到回报,成名成家的速度远不如应用层做个爆款。聪明人当然用脚投票:有现成的,谁去做基础的?有快钱,谁去赚慢钱?

于是一个循环形成了:因为没人做基础,所以基础薄弱;因为基础薄弱,做基础的人得不到支持和正反馈;因为得不到正反馈,更没人做基础。一代代最聪明的头脑,都在别人的地基上起高楼,然后再叮嘱下一代:"别浪费时间重复造轮子。"

轮子确实不必重复造。可是发明轮子的能力,不能永远外包给别人。

四、程序员应当是魔法师

我一直认为,程序员应该像魔法师。

魔法师的迷人之处,不在于咒语念得多熟练,而在于他能从虚无中创造出千奇百怪的东西——一念之间,火焰凭空而生,傀儡闻令而动。程序员本该如此:从一行行代码里,变出操作系统,变出编译器,变出整个世界。

但魔法师有两种。

一种活在别人的魔法体系里:学院教他标准咒语,他念得再漂亮,规则也是别人定的,他的极限就是那个体系的上限。另一种魔法师,自己书写法典:他定义咒语的语法,规定魔力的流向,后来者都要在他的规则里学习施法。

今天的中国程序员,绝大多数是第一种。我们也许是世界上规模最大的"施法者"群体,法术娴熟、产出惊人,可是我们的咒语书——编程语言、操作系统、开发框架、技术标准——几乎全部来自别人的法典。我们是在别人的规则里释放魔法。魔法再绚烂,规则不属于我们,法典扉页上的名字,一个都不姓中。

这不是能力问题,是选择问题。设计一门编程语言,就是起草一部法典:定义什么是变量、什么是类型、哪些行为被允许、哪些错误在何时暴露。这是这个行当里最接近"创造规则"本身的工作。中国有世界上最多的程序员,却没有一门世界级的编程语言——不是我们施不了法,是我们从没想过,法典可以自己写。

CN 想做的,就是开始写一部自己的法典。它还很年轻,还很粗糙,离"顶级"两个字还有很长的路。但方向是明确的:语言要有自己的,规则要有自己的。魔法师,不该永远寄居在别人的法典里。

五、所以,我自己干了

从读书的时候起,我就一直在等。

等一门顶级的中文编程语言,等一个顶级的中文操作系统。我想,中国程序员这么多、这么聪明,这件事迟早会发生,我等着用就好。

一年又一年。等来的是一次次"自主研发"的口号,一个个换皮套壳的产品,一场场发布会上的高光时刻。真正沉下去写编译器内核、操作系统内核的人寥寥无几;写出来的,也常常孤掌难鸣。几十年过去,我等待的那个东西,始终没有出现。

我失望了。中国程序员太令我失望了——不是失望于他们的能力,而是失望于他们的选择:最聪明的人,都在别人的地基上赚快钱,没有人肯低下头来做这些笨的、慢的、不性感的、却真正要命的基础。

失望到了尽头,只剩一条路:中国程序员指望不上,那我就不再指望。

我知道自己是个普通人。不是天才,不是大厂架构师,没有团队,没有融资,有的只是一个人、几台机器和一个不肯散的念头。可是写编译器这件事,说到底不需要奇迹,只需要有人肯一行一行地写下去:词法、语法、语义、中间表示、优化、代码生成,一层一层啃;一个缺陷一个缺陷修,一个测试一个测试过。今天的 CN 已经能在三种平台上生成真正的机器码,已经有了自己的安全体系,正在用自己的语言重写自己——每一步都不神奇,每一步都是普通人的笨功夫。

我把这个项目叫作 CN-Language。它献给所有用中文思考的人,献给所有想看看"自己的规则"长什么样的人,也献给当年那个在书桌前等待、等到失望、最后决定自己动手的我。

路很长。但,已经开始了。

如果你也曾等过,也曾失望过——欢迎进来。哪怕只是看一眼。


本篇是 CN-Language 的序言。这门语言长什么样、怎么写、编译器怎么造,本账号的系列文章会一篇一篇讲下去。

——CN-Language 项目发起人
2026 年 10 月 12 日

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐