更改
跳到导航
跳到搜索
第243行:
第243行:
− +
→建构性的自指
我们只需要把自打印程序(<math>(Copy_o \ Popup_o \ Control)</math>)中的<math> Popup_o </math>改成Construct就可以了。这里的Construct是一个函数,你输入给Construct一段程序的源代码<math>x</math>,它就能把<math>x</math>所对应的程序<math>X</math>编译出来并驻留在内存中。这样,程序<math>q=\lambda (Copy_o \ Popup_o \ Control)</math>就可以完成自复制功能。
我们只需要把自打印程序(<math>(Copy_o \ Popup_o \ Control)</math>)中的<math> Popup_o </math>改成Construct就可以了。这里的Construct是一个函数,你输入给Construct一段程序的源代码<math>x</math>,它就能把<math>x</math>所对应的程序<math>X</math>编译出来并驻留在内存中。这样,程序<math>q=\lambda (Copy_o \ Popup_o \ Control)</math>就可以完成自复制功能。
进一步,利用同样的逻辑,我们也能够制造出可以复制自身的真实机器。只要让Construct代表从给定机器的描述<math>\lambda (X)</math>而构造出实际机器<math>X</math>就行了。在冯诺依曼的著作《自复制自动机理论(TheoryofSelf-reproducingAutomata)》一书中,作者试图构建的自复制自动机就包括了这四个部分。即自复制机器是由一个通用拷贝机(Copy)、一个通用构造机(Construct)和一个控制器(Control)以及所有这三台机器的描述即源代码<math>q=\lambda (Copy_o \ Popup_o \ Control)</math>构成的。
进一步,利用同样的逻辑,我们也能够制造出可以复制自身的真实机器。只要让Construct代表从给定机器的描述<math>\lambda (X)</math>而构造出实际机器<math>X</math>就行了。在冯诺依曼的著作《自复制自动机理论([https://book.douban.com/subject/2982694/ Theory of Self-reproducing Automata])》一书中,作者试图构建的自复制自动机就包括了这四个部分。即自复制机器是由一个通用拷贝机(Copy)、一个通用构造机(Construct)和一个控制器(Control)以及所有这三台机器的描述即源代码<math>q=\lambda (Copy_o \ Popup_o \ Control)</math>构成的。
在此小节中,我们用自打印程序和自复制程序为例来说明了建构型的自指。然而,建构性的自指实际上不仅仅是这两种,它还会有各种各样的用途。下一节,我们将介绍著名的克林尼(Kleene)的递归定理,而自打印程序和自复制程序都仅仅是递归定理的一个逻辑推论。
在此小节中,我们用自打印程序和自复制程序为例来说明了建构型的自指。然而,建构性的自指实际上不仅仅是这两种,它还会有各种各样的用途。下一节,我们将介绍著名的克林尼(Kleene)的递归定理,而自打印程序和自复制程序都仅仅是递归定理的一个逻辑推论。