编程可以不用英文吗?认识全中文编程语言 CN
提到学编程,很多人的第一道坎不是逻辑,而是英语------if、else、function、return,每一个关键字都得当外语单词来背。
那么,写代码能不能就像写中文句子?
还真能。CN 语言(官网 www.cn-language.com )就是这样一门语言:全中文语法的系统级编程语言 ,风格接近 C++,完全开源。它给自己定的目标也非常直白:性能对标 C++,安全对标 Rust。
它是什么来头
- 关键字、类型、标准库全是中文:函数、返回、循环、遍历、整数、向量......代码读起来就是中文句子;
- C++ 风格、系统级:会 C++ 的人几乎零成本上手;它不是玩具脚本语言,定位是能写底层程序的系统级语言;
- 三个目标平台:同一份代码可以编译到 Windows x64、Linux x86_64、Linux ARM64;
- 完全开源:源码托管在 GitCode,编译器本体是 C++ 写的。
官网首页有一句标语概括得很准:「以母语的直觉,驾驭机器的全部性能。」
一分钟看懂:CN 代码长什么样
先上一段摸底小程序------求 1 到 10 的平方和。变量、函数、容器、循环,一次看全:
文件:速览.cn
导入 容器::向量;
// 求平方和:函数、循环、容器一次看完
函数 平方和(整64 上限) -> 整64 {
向量<整64> 表 = 向量<整64>();
循环 (整64 i = 1; i <= 上限; i++) {
结果<空类型, 整32> 加 = 表.追加(i * i); // 返回值必须接收
}
整64 总 = 0;
遍历 表 中 每个 x { 总 = 总 + x; }
返回 总;
}
函数 主() -> 整32 {
打印("1~10 平方和 = ", 平方和(10));
返回 0;
}
运行输出:1~10 平方和 = 385
短短十几行,信息量不小:
- 函数 平方和(整64 上限) -> 整64:声明函数,参数和返回值都是中文类型名,整64 就是 64 位整数;
- 向量<整64>:动态数组,相当于 C++ 的 vector;
- 循环 / 遍历:两种循环写法,「遍历 表 中 每个 x」几乎就是自然语言;
- 表.追加(i * i) 的返回值必须接收:这是 CN 的一大特色------重要操作的返回值不许随手丢掉,扔了就编译报错;
- 打印:内置输出,多个参数逗号排开,末尾自动换行。
两个设计理念:安全和性能,都要
很多语言只占一头,CN 想两头都占。
默认安全------不怕程序员犯错:
- 变量必须初始化才能读,没赋值就想用,编译都过不了;
- 结果<T, E> 必须显式检查,直接丢弃就是编译错误------错误不处理,程序不让跑;
- 资源随作用域自动释放(RAII),不需要手动管内存;
- 裸指针、手动内存这些危险操作,全部收进「不安全」域,普通代码碰不到。
性能不妥协------安全不靠运行时拖慢来换:
- 安全检查全部在编译期完成,运行时零开销(零成本抽象);
- C 风格内存布局,与 C/C++ 互操作无压力;
- 需要时还能下探到汇编级的手动控制(分配/释放/复制内存)。
学习路线:半天就能写出第一个程序
- ① 入门(半天):装好工具链,写出并运行第一个程序,掌握变量、控制流、函数、数组、字符串;
- ② 进阶(两三天):类与泛型、错误处理、所有权与转移、线程与互斥锁;
- ③ 资深(随用随查):九篇语言参考 + 标准库 13 个模块 187 个 API 的逐函数文档。
顺便说个少见的特点:官方文档里的代码示例全部逐个经过编译器编译、运行、输出比对,示例旁标注的输出就是真实运行结果,不是手写的。
项目现在走到哪了
官网状态栏写着两行:「自举固定点已达成」「v2 自举重建进行中」------通俗讲,这个项目正在向「编译器用自己编译自己」的终极目标推进,而且已经拿下了关键节点。
源码仓库:gitcode.com/ChenChao_GitCode/CN_Language
写在最后
中文编程是争论了很多年的话题:有人觉得没必要,有人盼了很多年。CN 语言的入场方式很硬核------不做玩具,直接对标 C++ 的性能、Rust 的安全。
是骡子是马,得拉出来遛遛。下一篇,我们动手:十分钟装好编译器,跑起第一个程序,最后还带一个能玩的猜数小游戏。
官方文档(本文整理自官方文档「文档总览」):www.cn-language.com/docs
源码仓库:gitcode.com/ChenChao_GitCode/CN_Language
你觉得中文编程语言有意义吗?评论区聊聊。