第01篇-认识CN语言

编程可以不用英文吗?认识全中文编程语言 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

你觉得中文编程语言有意义吗?评论区聊聊。

相关推荐
追风少年ii8 个月前
内容复习--邻域分子聚类与邻域细胞聚类的生物学意义及异同
分类·数据挖掘·空间·单细胞·cn
追风少年ii8 个月前
顶刊分享(空间TCR)--单次溶瘤病毒治疗后T细胞持续活化并对胶质母细胞瘤产生细胞毒性:一项临床试验结果
分类·数据挖掘·空间·单细胞·cn
追风少年ii9 个月前
Cellular neighborhoods in cancer
分类·数据挖掘·空间·单细胞·cn