段言(Duan):用段落书写的编程语言

段言(Duan):用段落书写的编程语言

GitHub: github.com/skywalk163/duan

GitCode: https://gitcode.com/skywalk163/duan

如果代码能像中文一样自然流畅,编程会变成什么样子?

段言 (英文名 Duan,文件扩展名 .段 / .duan)是一门以中文为核心设计语言的现代化编程语言。它不只是把 if 翻译成 如果------而是从汉语的语义密度、层级结构和表达习惯出发,重新思考编程语言可以是什么。


为什么需要段言?

传统中文编程语言往往停留在"关键字翻译"的层面------把 def 换成 定义函数,把 if 换成 如果。输入变慢了,创新却没有发生。

段言走的不是这条路。

汉语有英文不具备的独特优势:语义密度高、层级天然分明、主谓宾语序直觉清晰。段言把这三个优势变成了语言的核心特性,让中文不仅是编程的"外衣",而是真正驱动设计的"骨架"。


三大核心创新

1. 语义密度------用更少的代码做更多的事

Python(约 150 字符): def find_above_average(numbers): avg = sum(numbers) / len(numbers) return [n for n in numbers if n > avg]

列 为 一, 五, 十, 三, 七 求 大于 平均值 之 项

中文天然省略冠词、介词和冗余语法结构,同样的逻辑,段言表达更紧凑。

2. 词句段篇------中文的层级就是代码的层级

汉语天然形成 词→句→段→篇 的层级结构,这恰好对应了编程的核心抽象:

中文层级 编程概念 段言语法
变量、操作符
语句(自带数据) 设 甲 为 10
函数/代码块 段落 斐波那契 接收 n:
模块/程序 导入 数学 + 导出

代码的组织方式不再是舶来品------它就是你母语的表达方式。

3. 动词元数驱动------去掉括号,回归自然语序

段言用**元数(arity)**驱动解析:动词声明自己接收几个参数,调用时无需括号。

段落 平方 接收 数: 返回 数 乘 数 打印 平方(5) # 25

汉语本就是"动词+宾语"的语序,段言让代码和语言的习惯一致。


语法一览------5 分钟上手

Hello World

打印 "你好,世界!"

一行代码,零配置。克隆仓库后即可运行:

bash

git clone https://github.com/skywalk163/duan.git cd duan pip install -e . duan run hello.duan

变量与运算

设 年龄 为 25 设 结果 为 10 加 5 乘 2 # 20(乘法优先) 设 姓名 等于 "小明" 打印 f"你好,{姓名}!今年{年龄}岁"

中英文标点完全等价 ------设甲为三。设甲为三. 都能运行,不强迫你频繁切换输入法。

条件与循环

如果 分数 大于等于 90: 打印 "优秀" 否则若 分数 大于等于 60: 打印 "及格" 否则: 打印 "不及格"

遍历 i 之 1至10: 打印 i 当 计数 小于 100: 计数 等于 计数 加 1 如果 计数 模 10 等于 0: 跳过 打印 计数

纯缩进语法 ,没有 end、没有 },像 Python 一样简洁,但关键字更直觉。

函数与递归

段落 阶乘 接收 n: 如果 n 小于等于 1: 返回 1 返回 n 乘 阶乘(n 减 1) 打印 阶乘(10) # 3628800

段落 斐波那契 接收 n: 如果 n 小于 2: 返回 n 返回 斐波那契(n 减 1) 加 斐波那契(n 减 2)

类与继承

类 动物: 属性 名称 属性 年龄 构造 接收 名称, 年龄: 己名称 等于 名称 己年龄 等于 年龄 段落 说话: 打印 己名称 加 " 在叫" 类 猫 继承 动物: 属性 颜色 构造 接收 名称, 年龄, 颜色: 父构造(名称, 年龄) 己颜色 等于 颜色 段落 说话: 打印 己名称 加 " 说:喵~" 设 我的猫 为 新建 猫("小白", 2, "白色") 我的猫.说话() # 小白 说:喵~

完整的面向对象支持------继承、构造函数、(self)、父构造(super),该有的一个不少。

泛型

类 栈[T]: 属性 数据 构造: 己数据 为 [] 段落 入栈 接收 值: 己数据之追加 值 段落 出栈: 返回 己数据之弹出 设 整数栈 为 栈() 设 字符串栈 为 栈()

异常处理

尝试: 结果 等于 10 除 0 捕获 错误 为 e: 打印 "发生错误:" 打印 e 最终: 打印 "完成"

模块化

# math_utils.duan 段落 加法 接收 a, b: 返回 a 加 b 导出 加法 # main.duan 从 math_utils 导入 加法 打印 加法(3, 5) # 8


对比一览------段言 vs Python

功能 Python 段言
变量声明 x = 10 设 甲 为 10
函数定义 def add(a, b): 段落 加法 接收 a, b:
条件语句 if x > 10: 如果 甲 大于 10:
遍历循环 for i in range(1, 10): 遍历 i 之 1至10:
While 循环 while x < 10: 当 甲 小于 10:
类定义 class Animal: 类 动物:
类继承 class Cat(Animal): 类 猫 继承 动物:
异常处理 try: ... except: 尝试: ... 捕获:
导入模块 from math import sin 从 数学 导入 正弦
自引用 self.name 己名称
实例化 Cat("小白") 新建 猫("小白")
返回值 return x 返回 甲

关键区别:段言的关键字承载了语义 ------暗示赋值,遍历暗示迭代,新建暗示构造。对中文母语者来说,读段言代码就像读中文------不需要脑内翻译。


完整工具链

段言不只是语言本身,而是一套完整的开发工具链:

  • 手写递归下降解析器------无 ANTLR 依赖,v3.1 纯缩进语法
  • 双编译后端------Python 解释执行 + LLVM 原生编译(支持编译为 EXE)
  • 23 个中文命名标准库模块------日志、表格、CSV、JSON、文件系统等
  • REPL 交互环境------即时探索,快速验证
  • LSP 语言服务器------补全、跳转、重构、诊断
  • VS Code 插件------语法高亮、代码片段、DAP 调试
  • 代码优化器------常量折叠、死代码消除、循环不变量外提
  • Hindley-Milner 类型推断------渐进式类型安全
  • 从源码一行安装 ------git clone + pip install -e .,开箱即用

编译为原生程序

bash

# 解释执行 duan run hello.duan # 编译为 Python duan compile hello.duan -o hello.py # 编译为 Windows EXE duan compile hello.duan -o hello.exe # LLVM 原生编译(高性能) duan compile hello.duan --backend llvm-typed -o hello.exe

从学习到生产,一条路走通。


谁适合使用段言?

  • 编程初学者------中文关键字消除语言壁垒,先学逻辑再学英语
  • 教育工作者------课堂教学用母语讲解,学生理解更直观
  • 中文母语开发者------代码可读性大幅提升,团队协作更顺畅
  • 领域专家------非计算机专业的业务人员也能读懂和编写代码
  • 语言爱好者------探索中文与编程语言的深度结合

立即开始

bash

git clone https://github.com/skywalk163/duan.git cd duan pip install -e .

第4步:创建程序

创建 hello.duan 文件:

打印 "你好,段言!"

第5步:运行

bash

duan run hello.duan

输出:

你好,段言!

克隆、安装、写代码、运行------你的第一段段言程序就跑起来了。

GitHub: github.com/skywalk163/duan


段言,用段落书写代码,用母语思考逻辑。