《复杂》读书笔记(part6)--计算机中的自我复制
學習筆記
學習書目:《復雜》- 梅拉妮·米歇爾
文章目錄
- 自我復制的計算機程序
- 計算機中的自我復制
- 自我復制程序的深層含義
- 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不僅包含自我復制的"程序",同時也編碼了它自己的解釋器。
馮.諾依曼的自復制自動機
馮·諾依曼最初的自復制自動機(馮·諾依曼只給出了數學描述,并沒有真的建造)也是既包含有自我復制的程序也包含解釋自身程序的機制,因此是完整的自我復制機器。
馮·諾依曼設計的自復制自動機是人工生命科學真正的先驅之一,從原則上證明了自我復制的機器的確是可能的,并且提供了自我復制的“邏輯”,后來證明其與生物的自我復制機制驚人的相似。
總結
以上是生活随笔為你收集整理的《复杂》读书笔记(part6)--计算机中的自我复制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 金牛
- 下一篇: CSS样式表优先级(w3cschool)