湯姆·雷的實驗顯示,在他的自我複製世界裏,可變的基因長度瞬時就湧現出來了。他的創造物自行決定其基因組的長度(由此也決定了它們可能存在的基因庫的規模),短至出乎他意料的22字節,長至23000字節。

開放的基因組帶來開放的進化。一個預先設定了每個基因的工作或基因數量的係統隻能在預先設定的範圍內進化。道金斯、拉薩姆和西姆斯最初的那些係統以及俄羅斯程序員的電子魚,都擱淺在這個局限性上。它們也許能生成所有可能的具有既定大小和深度的畫麵,但不能生成所有可能的藝術品。一個沒有預先確定基因角色和數量的係統才能出奇製勝。這就是湯姆·雷的創造物造成轟動的原因。從理論上說,他的世界隻要運行時間夠長,在最終的形式庫中就能進化出任意東西。

17.2 生成圖像的基元組

形成開放基因組的方法不止一種。1990年,卡爾·西姆斯利用二代連接機(CM2)的超級計算能力設計了一個由長度可變基因組成的新型人工世界,比他設計的植物圖像世界更為先進。西姆斯的妙招是創造一個由小方程而非長串數碼組成的基因組。他原來的基因庫中每個固定長度的基因各控製著植物的一個視覺參數;這個新基因庫則擁有長度不定且可自由擴展的方程,籍此繪製各種曲線、色彩和形狀。

西姆斯的方程——或著說基因,是一種計算機語言(LISP) [371]sup> 的小型自包含邏輯單元。每一個模塊都是一個算數指令,諸如加、減、乘、餘弦、正弦。西姆斯把這些單元統稱為“基元組”——它們構成了一個邏輯的字母表。隻要有一張恰當的邏輯字母表在手,就可以建立任何方程,就像用適當多樣的語音元素表就能合成任何語音句子一樣。加、乘、餘弦等的相互組合能產生任何我們想得出的數學方程。既然任何形狀都可以用方程來表達,這一基元字母表也就可以畫出任何一種圖像。增加方程的複雜性也就神奇地擴大了所生成圖像的複雜性。

方程基因庫還有個意外的好處。在西姆斯的原版世界(以及在湯姆·雷的“地球”和丹尼·希利斯的共同進化的寄生蟲世界中),有機體是一串串每次隨機轉換一個數字的數碼,就像博爾赫斯圖書館裏的書那樣,一次改變一個字母。而在西姆斯的改良版世界裏,有機體成了一串串每次隨機轉換一個基元的邏輯基元組。仍以博爾赫斯圖書館為例的話,這次被調換的是詞而不是字母。每本書裏每個詞的拚寫都正確,每本書的每一頁由此就更有實際意義。但是,對於以詞為原料的博爾赫斯圖書館來說,要煮這鍋湯 [372]sup> 至少需要數以萬計的詞,而西姆斯僅用一打左右的數學基元就能列出所有可能的方程。

湯姆·雷的實驗顯示,在他的自我複製世界裏,可變的基因長度瞬時就湧現出來了。他的創造物自行決定其基因組的長度(由此也決定了它們可能存在的基因庫的規模),短至出乎他意料的22字節,長至23000字節。

開放的基因組帶來開放的進化。一個預先設定了每個基因的工作或基因數量的係統隻能在預先設定的範圍內進化。道金斯、拉薩姆和西姆斯最初的那些係統以及俄羅斯程序員的電子魚,都擱淺在這個局限性上。它們也許能生成所有可能的具有既定大小和深度的畫麵,但不能生成所有可能的藝術品。一個沒有預先確定基因角色和數量的係統才能出奇製勝。這就是湯姆·雷的創造物造成轟動的原因。從理論上說,他的世界隻要運行時間夠長,在最終的形式庫中就能進化出任意東西。

17.2 生成圖像的基元組

形成開放基因組的方法不止一種。1990年,卡爾·西姆斯利用二代連接機(CM2)的超級計算能力設計了一個由長度可變基因組成的新型人工世界,比他設計的植物圖像世界更為先進。西姆斯的妙招是創造一個由小方程而非長串數碼組成的基因組。他原來的基因庫中每個固定長度的基因各控製著植物的一個視覺參數;這個新基因庫則擁有長度不定且可自由擴展的方程,籍此繪製各種曲線、色彩和形狀。

西姆斯的方程——或著說基因,是一種計算機語言(LISP) [371]sup> 的小型自包含邏輯單元。每一個模塊都是一個算數指令,諸如加、減、乘、餘弦、正弦。西姆斯把這些單元統稱為“基元組”——它們構成了一個邏輯的字母表。隻要有一張恰當的邏輯字母表在手,就可以建立任何方程,就像用適當多樣的語音元素表就能合成任何語音句子一樣。加、乘、餘弦等的相互組合能產生任何我們想得出的數學方程。既然任何形狀都可以用方程來表達,這一基元字母表也就可以畫出任何一種圖像。增加方程的複雜性也就神奇地擴大了所生成圖像的複雜性。

方程基因庫還有個意外的好處。在西姆斯的原版世界(以及在湯姆·雷的“地球”和丹尼·希利斯的共同進化的寄生蟲世界中),有機體是一串串每次隨機轉換一個數字的數碼,就像博爾赫斯圖書館裏的書那樣,一次改變一個字母。而在西姆斯的改良版世界裏,有機體成了一串串每次隨機轉換一個基元的邏輯基元組。仍以博爾赫斯圖書館為例的話,這次被調換的是詞而不是字母。每本書裏每個詞的拚寫都正確,每本書的每一頁由此就更有實際意義。但是,對於以詞為原料的博爾赫斯圖書館來說,要煮這鍋湯 [372]sup> 至少需要數以萬計的詞,而西姆斯僅用一打左右的數學基元就能列出所有可能的方程。

對邏輯單元而不是數字位元做進化,最根本的優勢還在於它能馬上將係統引上通往開放宇宙的大道。邏輯單元本身就是功能,而不像數字位元那樣僅僅是功能的數值。在任意一個地方增加或交換一個邏輯基元,程序的整體功能就會產生轉變或得到擴展,從而在係統中湧現出新功能和新事物。