一种图灵完备的编程语言,本身就包涵了实现自举的必要条件。

无论是从哪一种层次,从计算机科学、物理学还是从哲学,这本身就代表了一种伟大的思想:当事物由简单变得复杂的过程中,基础科学总能提供一点点难以影响质变的改变,然后借助这点改变更新自身,不断的迭代进化。 这个最简单和著名的例子就是 先有鸡蛋还是先有鸡。曾今,这似乎是一个难题。

这个问题曾经带来哲学上的偏见,跟著名的一个问题是,人类来自哪里?如果答案是来自另一个人的子宫,那么,另一个人从哪里来…..于此循环,直到这个问题在第一个人类终止。现在我们知道,人类的诞生并非必需依赖子宫,借助实验室也可以做到。但必需获得受精卵和完整的生存环境。

编译器也是一样,如果一个语言实现来自举(一个语言的编译器,是用它自身写的),编译器也是一个程序,那么它本身是如何被编译的呢?

问题有趣的地方在于,我们都被一种看似悖论的东西蒙蔽了。编译器的原理很简单:

假如一种叫x的语言要实现自举

  1. x首先实现一个v1的简单版本(用汇编或c来编译)

  2. v1支持IO.可以读取x的源代码,用v1编译x的源代码,实现v2

  3. v2也有能力编译x ,此时,v2编译器就是用x编写的。可以编译自身源代码

简单来说,编译器会将文本转化成一个二进制描述。这个描述本身包含了读取文本并生成二进制的能力。一旦它存在,就不需要在使用之前的编译器了。它自身就可以描述自己并不断进化。

注意!汇编是一种低级的编程语言,仍旧需要被解释成二进制。这个过程借助来指令集(也就是一个map)

这个问题对长生也有很多启发,我们有把身体的构造全部改为硅而非碳为基础的科学基础。我们可以造出一些像我们一样能造出一些人的人…..或者制造出一些上帝……

所以,回到哲学上,我们现在处于那一个阶段?我们创造了自己,根本就没有上帝,我们就是上帝

阿门~