1.解释器就是一个翻译者。将一种符号翻译成另一种符号。
2.翻译者的本质就是规则的描述。例如:“Hello”应该映射为“你好”这就是规则的描述。
3.我们也可以说,解释器是将符号映射为意义。上面的例子中,对于一个不懂英语的中国人来说,“你好”就是意义,“hello”就是符号,他不理解就只是符号。
4.在计算机世界中,从最上层的业务应用开始,到最底层的cpu,都可以用解释器的通用视角来进行重新的观察。
5.我们一个具体的场景来说明:将一段应用程序编译成为一个可执行的二进制文件。这里的输入是APP.txt,输出是APP.exe。APP.txt中是用LISP编程语言写的应用代码。APP.exe里面是二进制0101的机器码。
1)第一层解释器:应用程序。应用程序可以看成是一个解释器,解释的是业务数据,例如:业务数据为:“计算1+2”,解释器就将这句话映射到代码,假如我们用的编程语言是LISP,映射的代码就是:
(+ 1 2)
2)第二层解释器:LISP解释器。为了解释上面那句应用程序,我们需要在下层创建一个新的解释器,解释LISP这种编程语言,即,LISP解释器。更抽象的表达可以是:本层的解释器是要来解释上层解释器所使用的材料而LISP编程语言就是材料,材料可以类比“乐高块”。上层应用程序本质上就是在用LISP这个乐高块这种材料在构建一种解释规则,解释的是他的上层解释器的材料,即,业务约定语言。例如:“计算”就属于业务约定语言。
构建LISP解释器的材料又是什么呢?答案是汇编语言,例如:
CODE SEGMENT
ASSUME CS:CODE
START:MOV DL,1
ADD DL,2
CODE ENDS
END START
(我不懂汇编,这里只是示意)
3)第三层解释器:汇编语言解释器。同理这一层的解释器要来解释上层解释器的材料,即,汇编语言的解释器。
汇编语言的解释器的材料是机器语言,例如:
010101101101010101010101
4)第四层解释器:CPU。解释上一次材料的解释器。上一层的材料是机器码,CPU就是干这事的,所以我们也可以讲CPU定义为:机器码解释器。
构成CPU的材料是“与非门”,抽象表达是这样:
![](https://img.haomeiwen.com/i9470659/938bddc304fc809b.jpg)
但是从这一层解释器开始,解释器的材料变成了硬件,即进入了物理世界。与非门对应的物理材料是二极管,看起来是这样:
![](https://img.haomeiwen.com/i9470659/5434c0f008eb5641.jpg)
5)第5层解释器:二极管解释器。上一层CPU的构成材料是二极管。那么用什么来解释二极管呢?答案是电线。
所以本层解释器的构成材料是电线。这句话就真的在说“材料”的字面意思了。看看,进入到物理世界,类比反而成了具象。
6)第六层解释器:电线解释器。因为上一层解释器的材料是电线,所以本层要来解释电线,什么材料构建起来可以解释器电线呢?答案是原子。
所以本层解释器的构成材料是原子。
原子具有玻粒二象性。
7)第七层解释器,原子解释器。如何解释原子?什么在解释着原子?到了这一层我就不知道了,也许只能说是“道”。无法用语言表达的层面。是道解释着原子的量子物理特性。
那么,又是什么材料在解释着道呢?也许,这种材料在我们的宇宙之外,我们感知不到。
这就像电脑中的应用程序感知不到cpu的存在,因为在他们看来他们分别属于两个宇宙,内部虚拟宇宙和外部物理宇宙。
我们自身又何尝不是当下宇宙中的一个个的应用程序。而原子就是我们自身的编程语言。
另外一种猜测是,道是一个自解释器,道可以用道这种材料解释自自己。这个点我也理解不了了。
而真正的运行是发生在这个层面的解释器。
换句话说,解释器的解释动作就是真正的运行。
还记得我们最初的目标吗,让一个APP.txt经过解释器的层层处理变成APP.exe。真正的运行只发生在“道”这个第七层解释器,所以,万物的运行都是道本身的运行。或者说万物的运行本质上就是道在进行解释。解释的本质就是按照一定规则的变形组装。
道解释原子,原子产生变形,原子的变形驱动了电线的变形,电线的变形就是电线中电子的移动方向的变化,电子移动方向的变化就是电压的变化,电压的变化导致了二极管的机械移动,二极管的机械移动本质上就是数据的变化,导致了APP.exe的生成。
网友评论