一门中文编程语言。玩具起步,架构上留有升级成正式语言的出口。
设 单价 = 15
设 数量 = 4
打印("总价:" + 文本(单价 * 数量) + " 元")
如果 单价 * 数量 > 50
打印("满 50 包邮!")
否则
打印("再买点就包邮了")
没写过程序? 从开始出发——序言带你认识它,然后挑一条路写出第一行代码。
写过 Python / JS? 直接看与 Python 的差异,一分钟定位区别。
CNplus 让你用中文关键字写程序。它不是 Python 的「中文函数名封装」,而是有自己的词法器(lexer)、语法分析器(parser)和抽象语法树(AST)的独立语言,后端可插拔。
| 特点 | 说明 |
|---|---|
| 🌏 全中文 | 关键字、类型名、错误信息、诊断码全部中文 |
| 🔌 可插拔后端 | 同一份源码,既能直接解释执行,也能转译成 Python |
| 🧱 严格语义 | 刻意和 Python 拉开距离,新手头号坑源被堵死 |
| ✂️ 灵活切片 | 列表和文字支持 [起点:终点:步长],能隔项取值或倒序复制 |
| 💬 三层报错 | 术语 + 大白话 + 能直接照抄的改法 |
| 🗣️ 一意多写 | 设=令=让,用顺口的那个 |
用你顺口的那个,效果完全一样。
关键字白话别名(每组第一个是推荐写法):
| 意思 | 可以写成 |
|---|---|
| 建立名字 | 设 令 让 |
| 判断 | 如果 若 假如 |
| 否则 | 否则 不然 要不然 |
| 重复 | 循环 当 重复 |
| 造工具 | 函数 定义 过程 |
| 给出结果 | 返回 返 给出 |
成员方法(点调用)——同一个内置函数,两种写法:
设 名单 = ["小明", "小红"]
名单.包含("小明") # 读作「名单:包含小明吗」
包含(名单, "小明") # 读作「名单里有没有小明」
列表、字典、字符串上支持点调用的内置函数都能这样点调用。用类的方法(学生.名片())也是这一套,心智模型统一。
遍历的两种语序:
设 成绩 = {"小明": 85, "小红": 92}
遍历 成绩 每个 名字 # 自然中文:集合在前、名字在后
打印(名字)
对于 名字 在 成绩 # 英文习惯:照 for x in y 语序
打印(名字)
取反的两种写法:不 年龄 >= 18 和 非 年龄 >= 18 等价——不 是中文母语者脱口而出的写法。
完整清单见关键字与别名。
Python 强大,但对新手有三处「隐式魔法」是坑:if 0 能跑但含义微妙、1 == "1" 悄悄返回假、变量没声明也能等到运行时才炸。CNplus 的选择是当场提醒:
| 主题 | CNplus | Python |
|---|---|---|
| 真值 | 只有 真/假 能出现在条件位置,如果 0 是编译错误 |
隐式真值 |
| 跨类型比较 | 数 vs 串比较报错 | 返回 False |
| 未声明变量 | 编译期错误 | 运行时 NameError |
CNplus 用自己的 lexer、parser 和 AST 读取源码,再交给可插拔后端执行;零基础日常用 VSCode 的 ▶ 或 cnp 运行 即可,完整命令、后端能力和限制统一见运行程序的几种方式。
从开始出发:序言讲清它的历史和特性,然后带你挑一条路(VSCode / 网页 / 命令行)写出第一个程序。零基础 10 分钟上手,全程图文。
想先不动手、直接在浏览器里玩?打开在线运行器,零安装。
教程(按顺序读:序言 + 五章,共 15 个课时):
| 篇 | 入口 |
|---|---|
| 开始(序言) | 开始 |
| 第一章 起步 | 变量与类型 → 做判断 → 重复做 |
| 第二章 造工具 | 函数 |
| 第三章 装数据 | 列表 → 字典 → 遍历 |
| 第四章 让程序活起来 | 输入输出 → 内置函数 → 借库 → 错误 → 异常 |
| 第五章 面向对象 | 类入门 → 类进阶 → 类实践 |
参考:
| 文档 | 给谁看 |
|---|---|
| 关键字与别名 | 全部关键字 + 别名 + 成员方法 + 遍历语序 |
| 诊断码表 | 查错误编号 |
| 运行程序的几种方式 | REPL、JS 后端、在线运行器等全部跑法 |
| 与 Python 的差异 | 有基础的人一分钟定位区别 |
CNplus 始于 2021 年 12 月,最初是一层中文函数名封装;2022 年 6 月尝试用 C++ 重做成 IDLE,停在 main.cpp:28 一个没写完的 cout 上。2026 年重启,这次先建「源码 → AST」与「AST → 执行」之间的接缝,再建楼。老仓库原样保存在 archive/ 下作只读参考。
Apache-2.0,延续 2021 年原项目的选择。