学习笔记
学习书目:《复杂》- 梅拉妮·米歇尔
文章目录
- 自我复制的计算机程序
- 计算机中的自我复制
- 自我复制程序的深层含义
- DNA的自我复制
- 冯.诺依曼的自复制自动机
自我复制的计算机程序
计算机和机器人可以被认为有生命吗?
这个问题将计算、生命和进化的问题联系到一起。
生命的要素是什么?
如果我们问10个生物学家,我们可能得到不同的回答,但可能大部分会包括自主、新陈代谢、自我复制、生存本能,还有进化和适应。
我们能不能将这些过程机械化,并用计算机来实现呢?
许多人认为绝对不可能,理由如下:
自主:计算机本身什么都做不了,只能执行程序的指令。
新陈代谢:计算机无法像生物那样从环境中获取能量,它们必须由人提供能源(例如电力)。
自我复制:计算机不能复制自身,要复制自身就必须包含对自身的描述,而这个描述又包含其本身的描述,这样反复无穷。
生存本能:计算机不关心自己能不能生存,它们也不关心自己是不是成功。
进化和适应:计算机本身无法进化或适应,它只能严格依照程序员预先设定的方式变化。
虽然还有很多人相信这些观点,但它们都在人工生命领域中以各种方式被否定了。人工生命关注的是在计算机中仿真或“创造”生命。
计算机中的自我复制
冯·诺依曼是量子力学、经济学等多个领域的先驱,也是最早设计电子计算机的人之一。冯·诺依曼也是最早深刻认识到计算和生物之间联系的科学家之一。他在生命最后的岁月里一直致力于解决机器如何才能复制自身的问题。他给出了第一个能自我复制的机器的完整设计。
我们先来看看计算机自我复制问题最简单的形式:写一段程序打印其自身
在介绍自复制程序之前,我们先介绍一些编程语言相关知识:
- 计算机存储器由有编号的位置或**“地址”**组成,上图中编号为
1~5
,依次往后; - 各个位置中有一些字符,这些字符可以作为程序的指令或程序使用的数据;
- 计算机要有一个**“指令指针”—同样存储在存储器中的一个数字**,记录当前执行的指令在存储器中的位置;
- 指令指针简记为IP,最初设为程序第一行的存储地址,在计算的每一步IP指向的指令会被执行,IP加1。我们可以称IP为变量,因它的值随着计算的进行而不断变化。例如,上图中IP的值为2,也就是说指向的是print(“Hello,world!”);
- 还可以定义变量line[n]表示地址n中的字符串。例如,指令print(line[2])会显示输出 print(“Hello,world!”)
我们现在看一看下面这段程序:
在这个程序中自我复制的本质,是用两种方式来使用内存中的信息:既作为执行的指令,又作为这些指令使用的数据。这是一种对信息的双重使用,正是对信息的双重使用,才让我们得以避开自我复制的无穷反复。
自我复制程序的深层含义
信息的双重使用是哥德尔悖论的核心,他的自指句子**“这个命题是不可证的”**体现的正是这一点。
我们可以从两个角度看这个自指句子:
①视为句子中包括的文字、空格符和标点组成的字符串;
②视为字符串所代表的意义,同语言使用者的解读一样。
为了明确起见,可以从两个角度来看:我们将这个自指句子的字符串本身记为S。也就是说:
S="这个命题是不可证的。"
现在可以陈述的上述句子:例如它包含9个字,1个句号。
我们将句子的意义则记为G,并将M重写为"命题S是不可证的"。某种程度上,我们可以将M视为指令,而将S视为指令操作的数据。
数据S与指令M是同一个东西。哥德尔之所以能将句子转化为数学中的悖论,一个主要原因就是他能将M表示成数学命题,将S表示成编码那个数学命题字符串的数字。
DNA的自我复制
真正让我们惊奇的是,对信息的双重使用竟然也是DNA复制自身的关键。但是,在自复制程序和DNA的自复制之间有一个重要的差别。自复制程序需要有一个解释器来执行它:指令指针依次指向各行代码,然后由操作系统来执行它们(存取IP和L等中间变量,显示输出字符串,等等)。执行器完全外在于程序本身。
而在DNA的情形中,构建"解释器"(信使RNA、转运RNA,核糖体和所有用于蛋白质合成的成分)的指令也一起编码在DNA中。也就是说,DNA不仅包含自我复制的"程序",同时也编码了它自己的解释器。
冯.诺依曼的自复制自动机
冯·诺依曼最初的自复制自动机(冯·诺依曼只给出了数学描述,并没有真的建造)也是既包含有自我复制的程序也包含解释自身程序的机制,因此是完整的自我复制机器。
冯·诺依曼设计的自复制自动机是人工生命科学真正的先驱之一,从原则上证明了自我复制的机器的确是可能的,并且提供了自我复制的“逻辑”,后来证明其与生物的自我复制机制惊人的相似。