Repository navigation
Home
tujue edited this page Oct 1, 2026
·
2 revisions
一个故意做慢的编程语言解释器。寄生在 CPython 之上,把 1 毫秒能做完的事拖成 100 毫秒。
这不是玩笑项目。它是一个认真的、有完整设计文档的解释器——只不过它的设计目标 跟所有正常语言相反:不追求正确,只追求过程。
a「1」 赋值。用 「」 代替等号,变量自动创建
$(a) 输出。用 $() 代替 print
~ · 等于 / 不等于
(a + b) 2 并排即相乘 = (a+b)*2,只在括号内生效
if a ~ 1 缩进划块,没有冒号,没有分号
$(42)
else
$(0)
x「未知」 三值逻辑的第三态:还没被观测
$(x) → MAYBE ⟨MAYBE⟩
$(x and 0) → 0 ⟨FALSE⟩ 0b0 确定的假能压过未知
$(x and 1) → MAYBE ⟨MAYBE⟩ 不确定的一侧压不过去
$(1+1) 输出的是 2 ⟨TRUE⟩ 0b10——数字要过真值密室判一次真假、
再过手写的二进制转换、最后套上全角装饰字符。
- 把简单的东西复杂化
- 把高效的东西低效化
- 把能跑的东西整得不能跑
$(1+1) 这一条语句,实际要走 9 层函数调用、
做 5 次数据结构转换、每个 token 至少 2 次正则匹配。
慢是真的慢:比 CPython 裸执行慢 约 474 倍。
这是这门语言唯一一个不是"套壳 CPython"的功能,也是唯一一个 "正常语言没有、而它有"的东西。
布尔有三个值:TRUE(确真)、FALSE(确假)、MAYBE(未观测)。
MAYBE 不是 None、不是错误、不是随机数。它是还没被观测的状态——
消息发出去还没回。没回不等于失败,也不等于成功。
实现上遵循 Kleene 三值逻辑,并且:
-
绝不用
random模拟未知——底层是二进制机器,任何随机都是伪随机, 用伪随机冒充未知就是撒谎。已验证连续 8 次求值结果完全一致。 -
未知会传染:
未知 + 1、未知 > 1、f(未知)结果都还是未知。 -
控制流碰到未知就静默观测:
if两边都不执行,只记一笔账。 -
能真溯源:未知身上带污染标记,能追出
x → y → z → w完整链路。
→ 详见 三值逻辑
| 你想知道 | 看这里 |
|---|---|
| 语言怎么写 | 语言参考 |
| 三值逻辑怎么用 | 三值逻辑 |
| IDE 怎么用 | IDE 使用 |
| 装起来跑一下 | 快速开始 |
| 为什么这么设计 | 设计哲学 |
| 里面是怎么实现的 | 实现原理 |
| 踩过哪些坑 | 踩坑记录 |
| 哪些功能还没有 | 已知限制 |
| 项 | 值 |
|---|---|
| 语言本体 |
pypython.py,5539 行 |
| IDE | 两套(源码改造版 + 运行时代理版) |
| 回归测试 | 11 个脚本,全绿 |
| 架构决策记录 | 9 篇 ADR |
| 已实现 | 四版:基础语法 → 循环/函数/类 → 下标/字典/逻辑 → 三值逻辑 |
| 还没有 | 切片、异常、import、继承、range()、while...else
|
这个 wiki 里所有数字都是本机实测,包括没达标的那一项。
比如性能:对基线 A(预编译裸执行)慢了 474 倍,达标(要求 ≥100 倍);
对基线 B(exec 全流程,与 pyPython 同口径)只慢 11.9 倍,未达标。
两个基线都报出来,不挑对自己有利的那个。详见 性能。