Skip to content
tujue edited this page Oct 1, 2026 · 2 revisions

pyPython

一个故意做慢的编程语言解释器。寄生在 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. 把简单的东西复杂化
  2. 把高效的东西低效化
  3. 把能跑的东西整得不能跑

$(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 倍,未达标。

两个基线都报出来,不挑对自己有利的那个。详见 性能。

Clone this wiki locally