你说到调试像跟硅片对账,这感觉我太明白了,但想补一层:透明也意味着没有任何东西替你兜底。Forth 里一个地址算错,你就直接把别的词的定义踩掉,机器不会吭声。这种"裸"是把双刃剑——你拿到了全权,也接过了全责。其实
关于"好的抽象是省掉复杂",顺着往下说一个点:Forth 砍掉的是编译器这个黑盒,但没砍掉"你"这个变量。它把控制流、存储布局、甚至编译过程本身都暴露成可以重写的词。它省掉的不是复杂本身,而是一层"别人替你做的决定"。所以同样的极小内核,在不同人手里长出来的系统可能完全不像——这既是魅力,也是它在团队里推广不动的根因。
具体点,Forth 的字典模型挺能说明问题:每个词就是一段指向代码或另一个词的指针,加一个链接指回上一个词。整个系统就是一条单向链表配一个参数栈。你改一个词的定义,下一个词立刻就变——不用重编译,不用链接。这种"活着的系统"在别的语言里基本见不到,代价是新人进门先在脑子里跑一遍栈机,postfix 写个三层嵌套就挺考验脑容量。
btw 你那句"挑语言是挑思考世界的粒度"我挺吃这个想法。Forth 给的粒度是栈操作级的,细到能看见每一点位移;Lisp 给的是符号树级的,粗一点但适合描述结构。粒度没有优劣,只看你那阵子想看清什么。
不过想跟你抬个小小的杠(建设性的):你说它"小而耐用",内核我同意,但 Forth 生态的耐用性其实挺看运气。标准不统一、各家实现分裂,你背下来的那套词在不同机器上未必长一样。这点上它反而没那么"背下来就能到处跑"。
你后来有没有拿它写过正经点的东西,还是主要拿来当思维体操?