讀古今文學網 > 盲眼鐘錶匠:生命自然選擇的秘密 > 第三章 累進變化 >

第三章 累進變化

生物不可能全憑偶然因素出現在世上,因為生物的「設計」既複雜又優美,我們已經討論了。那麼它們是怎麼出現的呢?答案是:它們源自一個累積的過程,逐步從非常簡單的開始,變化成今日的模樣。地球上生命演化的起點是太古時期的某些實體,它們因為實在太簡單了,只因偶然的機緣就在世上出現了。這是達爾文提出的答案。演化是個逐步、漸變的過程,每一步驟—相對於前一步驟—都非常簡單,跨出去全憑機緣。但是整串連續步驟卻不是個隨機過程(chance process),從終點產物的複雜程度就可以看出,相形之下起點的樸素模樣反而令人驚訝。引導這個累積過程的是「非隨機存活」。本章的主旨是:這一累積選擇的力量本質上是個非隨機過程(nonrandom process)。

要是你到佈滿卵石的海灘散步,一定會注意到卵石的散佈不是毫無章法的。通常小卵石集中的區域沿著海灘一路上都有,並不連續,較大的卵石集中在不同的區域,錯落其間。那些卵石已經分類、安排、挑選過了。生活在海岸附近的人類部落,看見海灘上卵石的分佈,也許會覺得驚疑不置,認為那是「世上有過分類、安排」的證據,也許還會想出一個神話解釋,「話說天上有一位巨靈,心思有條不紊、講究秩序,卵石就是他安排的」。對這樣的迷信觀念我們也許會展露高傲的微笑,向「土人」解釋:那種看來經過安排的現象,其實是物理學的盲目力量完成的,以海灘上的卵石分佈而言,海浪是肇因。海浪沒有目的也沒有意圖,沒有井然的心,甚至根本沒有心。海浪起勁地衝擊海灘,將卵石拋向前方,不同大小的卵石,以不同的方式反應海浪的力量,落在或遠或近的區域裡。於是一個沒有經過心靈計劃的小型秩序就從混沌中出現了。

有些系統會自動創造出非隨機現象,海浪與卵石就構成了一個簡單的例子。世上到處是這樣的系統。最簡單的例子我想是個洞。只有比洞口小的東西才會掉進去。也就是說,要是你在洞口上隨意堆放一堆東西,並出力隨機地搖晃、推擠它們,過了一段時間後,洞口上與洞口下的東西就會出現非隨機分佈。洞口下的空間裡,東西比洞口小,洞口上則是比洞口大的東西。不消說,人類老早就懂得利用這個簡單的原理創造非隨機分類了,我們叫作篩子的東西不就是嗎?(譯按:可參見唐朝李洞的《喜鸞公自蜀歸》詩中「掃石月盈帚,濾泉花滿篩」。)

太陽系很穩定,是繞日的行星、彗星與小行星碎塊組成的,這種行星繞恆星公轉的系統在宇宙中似乎不少,我們的只是其中之一。這種系統中,行星越接近恆星,公轉速度就得越快,不然無法對抗恆星的引力、停留在穩定的軌道上。任何一條軌道,只有一個速度能使行星(或彗星、小行星)穩定公轉而不逃逸。要是它以其他速度繞行,不是脫離軌道衝向太空深處,就是墜毀在恆星表面上,或進入另一條軌道。要是我們觀察太陽系的行星,瞧!好傢伙!它們每一個都以恰好的速度在恰好的軌道上穩定地公轉。難道是神意設計的奇跡?不是,只不過是另一個自然「篩子」罷了。很明顯,我們見到的所有繞日行星必須以特定速度繞行太陽,不然就無法穩定地停留在它們目前的軌道中—我們就不會看見它們在那裡了。同樣明顯的是,這不能當作證據,說行星軌道是「有意識的設計」。

這種從混沌中「篩」出的簡單秩序,不足以解釋我們在生物界觀察到的大量非隨機秩序。門都沒有。還記得號碼鎖的例子嗎?可以簡單「篩」出的秩序,約略相當於只要撥對一個號碼就能打開的鎖:很容易憑巧勁兒就打開了。我們在生物系統中見到的「非隨機」現象,相當於一個巨大的號碼鎖,必須轉不知多少次、輸入多少正確的數字才打得開。就拿血紅蛋白(紅血球中攜帶氧氣的分子)來說好了。將組成血紅蛋白的所有氨基酸全拿在手邊,隨意把它們組合起來,想憑巧勁兒就組成血紅蛋白分子,你可知需要多大的運氣?大到不可思議。著名科學作家阿西莫夫(Issac Asimov,1920~1992)與其他人就以這個例子有力地論證生物界的秩序不可能是偶然性的產物。

血紅蛋白分子是四條氨基酸鏈絞在一起構成的。我們只拿其中一條來討論。這條鏈包括146個氨基酸。生物體內的氨基酸有20種。以這20種氨基酸組成一條含有146個氨基酸的鏈,可能的組成方式是個大得難以想像的數字,阿西莫夫叫它「血紅蛋白數字」。它很容易計算,但是不可能寫給你看。這146個氨基酸組成的鏈,第一個可能是20種氨基酸中的任何一種。第二個也一樣。因此頭兩個氨基酸的可能組合就有20×20種,就是400種。這條鏈頭三個氨基酸的可能組合方式是20×20×20,就是8000種。整條氨基酸鏈的可能組合方式,就是20自乘146次(20的146次方)。這是個令人頭昏的大數字。100萬是1後面跟著6個0。1萬億是1後面跟著12個0。我們正在計算的數字—「血紅蛋白數字」—接近1後面跟著190個0。這就是我們需要的運氣:在這麼多「可能」中,瞎搞出一個血紅蛋白分子來。然而,就人體的複雜性而言,血紅蛋白分子只是九牛一毛而已。光憑單純的篩選根本無從創造出生物體內的大量秩序。生物秩序的發展過程,篩選是核心成分,但是篩選無法說明生物秩序,差得遠呢。為了解釋這一點,我必須分別「單步驟」選擇與「累積」選擇。在這一章裡到現在為止我們討論過的簡單篩子都是「單步驟」選擇的例子。生物組織是「累積」選擇的產物。

「單步驟」選擇與「累積」選擇的根本差異是這樣的。任何實體的秩序,例如卵石或其他東西,若由「單步驟」選擇造成,就是一蹴而就的。在「累積」選擇中,選擇結果會「繁衍」;或以其他的方式,一次篩選的結果成為下一次篩選的原料,下一次篩選的結果,又是下下一次篩選的原料,如此反覆地篩選下去。實體必須經過許多連續「世代」的篩選。一個世代經過篩選後,就是下一個世代的起點,如此這般每個世代都經過篩選。「繁衍」、「世代」兩個詞通常用在生物身上,我們借用它們是很自然的,因為生物是「累積選擇」主要的例子。也許實際上生物是唯一的例子。但是目前我會暫時擱置這個議題。

天上的雲經過風的隨機捏揉、切割,有時看來會像我們熟悉的事物。有一張流傳很廣的照片,顯示耶穌的面龐在雲中凝視世人,那是一位小飛機駕駛員拍的。我們都看過讓我們想起什麼的雲,像是海馬,或一張微笑的面孔。這種相似是「單步驟選擇」造成的,換言之,「如有雷同,純屬巧合」,因此並不令人驚艷。夜空中的星座,要是你拿它們的名字對號入座的話,也不會感到驚艷,就像星象家的預言一樣,不信的話,告訴我天蠍、獅子、白羊什麼的在哪裡。生物適應就不同了,總令人覺得不可思議。而生物適應是「累積選擇」的產物。一隻蟲與一片葉子的相似程度,或一隻螳螂與一叢粉紅花的相似程度,我們會以不可思議、詭異、壯觀等詞來描述。一朵像黃鼠狼的雲,並不能讓我們目不轉睛,連提醒身邊的友人都不值得。此外,那朵雲究竟像什麼,我們也很容易改變心意。《哈姆雷特》第三幕第二景就有一段對話:

哈姆雷特(王子):你看見天邊那朵雲嗎?像頭駱駝的?

波羅紐斯(首席國政顧問):很大的那一朵?真像駱駝,沒錯。

哈姆雷特:我覺得像一隻黃鼠狼。(Methinks it is like a weasel.)

波羅紐斯:它確實像只拱起背的黃鼠狼。

哈姆雷特:或像一頭鯨魚?

波羅紐斯:很像一頭鯨魚。

有人說過—我忘了誰是第一個—給猴子一台打字機,讓它在上面隨意亂敲,只要時間足夠,整套莎士比亞作品都能打出來。當然,關鍵在「只要時間足夠」。讓我們對這隻猴子面臨的任務做些限制。假定我們只期望它打出一個短句子,而不是整套莎翁作品,就說是「我覺得像一隻黃鼠狼」好了,我們給它的打字機也是簡化的,只有26個大寫字母鍵,外加一個空位鍵。這隻猴子需要多少時間才打得出這一個短句子?

莎士比亞寫這個句子,使用了23個字母,其中穿插了5個空位。我們假定猴子不斷地嘗試,每次都敲28次鍵。一旦敲出了正確的句子,實驗就結束。要是不正確,它就得繼續嘗試。我不認得任何猴子,好在我有個女兒,才11個月大,對隨意亂搞很有經驗,我告訴她我想找猴子做的實驗後,她就迫不及待地想扮演那隻猴子。她在電腦上打出的實例我放在這頁上,讀者也許能夠欣賞。

UMMK JK CDZZ F ZD DSDSKSM

S SS FMCV PU I DDRGLKDXRRDO

RDTE QDWFDVIOY UDSKZWDCCVYT

H CHVY NMGNBAYTDFCCVD D

RCDFYYYRM N DFSKD LD K WDWK

JJKAUIZMZI UXDKIDISFUMDKUDXI

由於她另有要務,我只好寫一個計算機程序,仿真一個隨意敲鍵的孩子,或猴子,這裡也有一些例子可以參考。

WDLDMNNLT DTJBKWIRZREZLMQCO P

Y YVMQKZPGJXWVHGLAWFVCHQYOPY

MWR SWTNUXMLCDLEUBXTQHNZVJQF

FU OVAODVYKDGXDEKYVMOGGS VT

HZQZDSFZIHIVPHZPETPWVOVPMZGF

GEWRGZRPBCTPGQMCKHFDBGW ZCCF

這個程序就這樣不斷製造產品—將隨機敲到的28個鍵在銀幕上顯示出來(或打印)。要花多少時間才能敲出「我覺得像一隻黃鼠狼」呢?想想所有可能敲出來的字母串共有多少—每串是任意按28個鍵的結果。我們必須做的計算與前面做過的血紅蛋白分子一樣,結果也是同樣大的數字。敲第一個鍵時,有27種選擇(不區分空位鍵與字母鍵,26個字母鍵加1個空位鍵),敲到正確字母的概率是1/27。頭兩個鍵都碰巧正確的機會是1/27乘以1/27,等於1/729,因為第二個鍵敲對的概率,與第一個鍵相同,可是頭兩個鍵都要正確的話,得在第一個鍵敲對了之後才算第二個鍵。這個句子全部28個字母都正確的概率,因此是1/27的28次方,就是1/27自乘28次。結果是一個非常小的數字,難以想像的小,以分數表現的話,分子是1,分母是1後面跟著40個0。說得委婉些,這個句子要花很久才敲得出來,什麼《莎士比亞全集》就算了吧。

隨機變異中的「單步驟選擇」已經談得夠多了,讓我們回頭談談「累積選擇」。「累積選擇」會更有效率嗎?效率能提升多少?答案是:有效率多了,即使我們開始覺得這是一個很有效率的過程,也可能低估它的效能。但是只要你仔細再想想,就會發現驚人的效率幾乎是必然的結果。我們要再度使用電腦替代猴子,但是我們會對程序做一個關鍵的修改。一開始這個程序會隨機按28次鍵,例如:

WDLMNLT DTJBKWIRZREZLMQCOP

然後從這一個隨機序列「繁殖」下去。電腦不斷複製這個字母序列,但是複製過程容許某種程度的隨機變異—「突變」。電腦會檢查這些複製出來「子序列」,從其中選出最接近標的序列Methinks it is like a weasel(我覺得像一隻黃鼠狼)的一個,不論相似的程度多麼薄弱。第一個這樣選出來的「子序列」與標的序列實在不怎麼像:

WDLMNLT DTJBSWIRZREZLMQCO P

但是這個程序會重複下去,電腦開始複製這個贏家,並容許同樣程度的隨機變異,並選出一個新的贏家。如此這般,10「代」、20「代」之後的贏家,可能仍然必須憑信心才能看出它們與標的「很像」。但是,到了30「代」,相像就不再是想像的產物了。到了40「代」,銀幕上出現的字母序列,只有一個字母是錯的。正確的結果在第43「代」產生。

第二次重跑這個計算機程序,正確的結果在第64「代」產生。第三次重跑,第41「代」就產生正確的結果了。

電腦實際花了多少時間繁衍出符合標的的那一代,並不重要。如果你真的想知道,電腦第一次完成整個程序,是在我出去吃午餐的時候。大約半個小時。(計算機玩家也許會認為這實在慢得蹊蹺。原因是我的計算機程序是用BASIC寫的,這種語言在計算機程序語言家族中相當「幼齒」。我改用PASCAL語言重寫這個程序後,11秒就完成了一回合。)電腦做這種事比猴子快一些,但是速度的差異其實不大。真正重要的時間差異,是「累積選擇」需要的時間與「單步驟選擇」需要的時間。同一部電腦,以同樣的速度,執行「單步驟選擇」程序的話,要花的時間是:1後面加30個0,單位是年。學者估計的宇宙年齡大約是100億年(1後面加10個0)。我們不必細究1後面加30個0等於宇宙年齡的多少倍,比較適當的說法是:與猴子或電腦要花的巨量時間比起來,宇宙的年齡實在微不足道—在我們這種粗略的計算方式必須容忍的誤差範圍之內。但是同一部以隨機方式按鍵的電腦,只要加入「累積選擇」的條件,達成同樣的任務所需的時間,我們人類以常識便可以瞭解,在11秒與吃一頓午餐所費的時間之間。

現在我們可以看出:「累積選擇」(這個過程中,每一次改進,不論多麼微小,都是未來的基礎)與「單步驟選擇」(每一次「嘗試」都是新鮮的,與過去的「經驗」無關)的差別可大了。要是演化進步必須依賴「單步驟選擇」,絕對一事無成,搞不出什麼名堂。不過,要是自然的盲目力量能夠以某種方式設定「累積選擇」的必要條件,就可能造成奇異、瑰麗的結果。事實上那正是我們這個行星上發生的事,我們人類即使算不上最奇異、最讓人驚訝的結果,也是最近的結果。

讓人驚訝的反而是:類似前面所舉「血紅蛋白數字」的例子,卻一直被用來反駁達爾文的理論。那些這麼做的人,往往在本行中是專家,像是天文學或什麼的,他們似乎真誠地相信達爾文理論純以概率(巧勁兒)—「單步驟選擇」—解釋生物的組織。「達爾文式的演化是『隨機的』」這個信念,不只是不真實而已。它根本與真相相反。在達爾文演化論中,「巧勁兒」只扮演次要的角色,最重要的角色是「累積選擇」,它根本就是「非」隨機的。

天上的雲無法進入「累積選擇」過程。某種特定形態的雲不能通過某種機制生產與自身相似的子女。如果有這種機制,如果雲像黃鼠狼或駱駝一樣,能夠繁衍模樣大致相似的世系,「累積選擇」就有機會發生。當然,有時雲朵的確會分裂、形成「子女」,但那還不足以讓「累積選擇」發生。必要條件是任何一朵雲的「子女」應該與「父母」相似,不像「族群」中的其他「老爹」。這個差別極為緊要,最近有些哲學家對自然選擇理論發生了興趣,可是他們有些人很明顯地誤解了這一點。還有一個必要條件是:任何一朵雲生存、繁衍復本的概率,與它的形態有關。也許在某個遙遠的星系中,這些條件都發生了,而且經過了數以百萬年計的時光,結果是一種虛無縹緲的生命形式,只是壽命短暫。這個題材也許可以寫成一部很棒的科幻小說,題目我都想好了,就叫《白雲記》吧;但是就我們所想討論的問題來說,電腦模型是比較容易掌握的,像猴子/莎士比亞模型一樣。

雖然猴子/莎士比亞模型用來解釋「累積選擇」與「單步驟選擇」的差別很有用,它卻在重要的面相上誤導了我們。其中之一是:在選擇繁衍的過程中,每個世代各突變個體都以它與最終標的(「我覺得像一隻黃鼠狼」)的相似程度判生判死。生物不是那樣。演化沒有長期目標。沒有長程標的,也沒有最終的完美模樣作為選擇的標準,儘管虛榮心讓我們對於「人類是演化的最終目標」這種荒謬的觀念,覺得挺受用的。在現實中,選擇的標準永遠是短期的,不是單純的存活,就是—更為廣義地說成功繁殖率。要是在很久很久之後,以後見之明來看生命史像是朝向某個目標前進,而且也達成了那個目標,那也是許多世代經過短期選擇後的附帶結果。「鐘錶匠」—能夠累積變異的自然選擇—看不見未來,沒有長期目標。

我們可以改變先前的電腦模型,將這一點也考慮進去。在其他方面我們也可以使模型更逼近真實。字母與文字是人類特有的玩意兒,我們何不讓電腦畫圖?說不定我們甚至可以看見類似動物的形狀在電腦中演化,機制是在突變的形狀中做累積選擇。我們一開始不會在電腦中灌進特定的動物照片,免得電腦有成見。它們得完全以累積選擇打造—累積選擇在隨機突變中運作的結果。

實際上每個動物的形態都是胚胎發育建構的。演化會發生,是因為連續的各世代每一個胚胎發育都發生了微小差異。這些差異是因為控制發育的基因發生了變化(即突變,這就是我前面說過的整個過程中的小角色—隨機因素)。因此我們的電腦模型也該有些特徵,相當於胚胎發育與能夠突變的基因。設計這樣的電腦模型,有許多方式。我選了一個,並為它寫了一個計算機程序。現在我要描述這個電腦模型,因為它能給我們一些啟發。要是你對電腦沒有什麼概念,只要記住電腦是機器,會服從命令幹活兒,可是結果往往出人意表。程序就是給電腦的指令單子。

胚胎發育是個非常複雜的過程,無法在小型電腦上逼真地模擬。我們必須以一種簡化的玩意兒做模擬。我們必須找到一個簡單的畫圖規則,電腦很容易照辦,然後它也可以在「基因」的影響下發生變化。我們要選擇什麼樣的畫圖規則呢?電腦科學教科書經常以一個簡單的「樹木發育」(tree-growing)程序,說明所謂「遞歸」程序設計法(recursive programming)的威力。一開始電腦畫出一條垂直線。然後這條線分出兩條枝杈。每一條枝杈再分出兩條小枝杈。每條小枝杈再分出兩條小小枝杈。這是個「遞歸」過程,整棵樹因為繼續在局部應用同一條規則(以這個例子而言,就是「分枝規則」)而不斷地發育。無論樹木發育到多大,同一條分枝規則繼續施用於所有新生枝條的尖端。

「遞歸」的「深度」指枝杈分枝的「次數」;就是一條樹枝長出後,可以繼續以同樣的方式分枝多少次。這個次數程序中可以事先規定,次數一滿新生枝頭就停止分枝了。圖2顯示了「深度」對「遞歸」結果的影響。比較「深」的遞歸樹是個頗為複雜的圖案,但是你仍可以看出那是同一條分枝規則創造出來的。當然,真正的樹就是這樣分枝的。一棵橡樹或蘋果樹的分枝模式看來很複雜,其實不然。基本的分枝規則非常相似。因為同一條規則不斷地施用於整棵樹的生長尖端—主幹分出主枝,主枝分出小枝,小枝分出小小枝,等等,樹才長得又大又繁茂。

圖2

大體而言,動植物的胚胎發育過程也可以比喻成遞歸分枝。我並不是說動物的胚胎看來像發育中的樹。它們一點兒也不像。但是所有胚胎的發育都以細胞分裂進行。細胞總是分裂成兩個子細胞。基因最終會影響身體,可是受它們直接影響的是身體的局部細胞,以及那些細胞的分裂模式。動物的基因組從來不是「宏偉的設計圖」,或整個身體的「藍圖」什麼的。我們下面會討論,基因比較像食譜,而不像藍圖;而且不是整個胚胎的食譜,而是每個細胞或胚胎某個區域一小撮細胞—只要分裂就必須遵循的食譜。我並不否認胚胎以及日後的成年個體有一個大尺度的形態可言。但是,發育中的身體逐漸成形,每個組成細胞都盡了綿薄之力(所以整體的形態是「細胞層次事件」的後果),而每個細胞的局部影響力主要通過「一分為二」的過程施展。樹杈分枝與細胞分裂以同樣的模式影響全身。基因影響這些局部事件,才影響到全身。換言之,基因的終極對象是全身,可是卻從基層—細胞幹起。

總之,用來畫樹的簡單分枝規則看起來像是仿真胚胎發育的理想工具。我就把它寫成一個很小的程序,取名為「發育」,預備將來植入一個大程序中—「演化」。為了編寫「演化」這個程序,我們得先討論基因。在我們的電腦模型中,「基因」的角色與功能如何呈現?在生物體內,基因做兩件事:影響發育以及進入未來的世代。動植物的基因組,基因數目多達幾萬個,但是我們在電腦模型中,只設置9個。每個基因在電腦中都以數字代表,這個數字就是它的「值」。某一個基因的「值」可能是+4,或–7。

這些基因如何影響發育呢?它們能做的可多了。不過萬變不離其宗:它們會對「發育」程序(樹木發育的規則)產生微小的、可以計量的影響。舉例來說,某個基因也許會影響椏杈的角度,另一個基因會影響某一特定枝杈的長度。另一種基因一定會做的事,是影響遞歸的深度—就是連續分枝的次數。我讓「基因9」負責這個功能。因此圖2的「7棵樹」可以視為7個有親緣關係的生物個體,彼此間除了「基因9」之外,其他的基因完全相同。我不想一一詳談其他8個基因的功能。圖3透露了一些信息,你可以據以推測每個基因大體而言能做哪一類的事(功能)。圖3正中的樹是基本形,圖2中也出現過。有8棵樹環繞著基本形。這8棵樹與中央的基本形只有一個基因的差異,也就是說,這8棵樹是因為基本形的一個基因發生了突變而產生的。例如基本形的右側,是「基因5」的原始值因為突變而加了1的結果。要是圖3的空間夠大,我會畫出18棵突變形環繞著基本形。因為總共有9個基因,每個基因每次突變都有兩個方向:升1級(原始值加1),或降1級(原始值減1)。因此基本形環繞著18個突變形,就窮盡了所有單步驟突變的可能結果。

圖3

這些樹每一棵都有獨有的「基因式」(genetic formula)—9個基因的數值。我沒有把圖3每棵樹的「基因式」寫出來,因為基因式本身對各位不會有任何意義。真正的基因也一樣。基因是合成蛋白質的「食譜」,蛋白質直接參與各種生理過程,換言之,基因必須「翻譯」成胚胎的發育規則,才能造成觀察得到的結果。同樣,在電腦模型中,9個基因的數值只有在翻譯成枝杈模式的發育規則時,才對我們有意義。要是兩個個體只有一個基因有差異,比較這兩個個體的身體,對於這個基因的功能就能有個大致的理解。例如圖3中間那一列,對於「基因5」的功能就透露了有用的信息。

這也是正宗的遺傳學方法。遺傳學家通常不知道基因影響胚胎發育的方式。他們也不知道任何動物的完整基因式。(譯按:完整基因式,指基因啟動的順序與作用;即使細胞核DNA的全部鹼基序列都清楚了,也未必能找出完整的基因式。)但是兩個成年個體若已知只有一個基因有差異,遺傳學家比較它們的身體就可以觀察到那個基因的作用。當然,實況更為複雜,因為基因的功能有複雜的互動,整體無法簡化成「所有基因的總和」。電腦裡的樹也一樣。下面我會舉出一些圖案,讀者會發現:支配它們發育的基因,作用方式與生物的基因非常相像。

讀者想必已注意到我的枝杈模式圖全是左右對稱的。這是我強加在「發育」(計算機程序)過程的限制。這樣做部分原因是為了美感,以及精簡基因的數量(如果基因不能在左右兩側產生鏡像效果,那麼每一側都得有基因控制)。此外,我想演化出類似動物的形狀,而大多數動物的身體都是左右對稱的。為了同樣的理由,從現在起,我不再管這些玩意兒叫「樹」,我會管它們叫「身體」或「生物形」(biomorphs)。「生物形」是我師兄莫裡斯(Desmond Morris,1928~1954年獲得牛津大學動物學博士學位)創造的詞,他的超現實主義繪畫中有些玩意兒他叫作生物形,因為它們的形狀模糊地類似動物。那些畫在我鍾愛的事物中有非常特別的地位,因為其中一幅上了我第一本書的封面。莫裡斯宣稱那些生物形在他心裡演化,它們演化的來龍去脈可以在他一系列畫作中尋繹。

閒話休說,言歸正傳,且說電腦生物形,先前我們說到一圈18個可能的突變形,圖3可以見到8個。由於這一圈裡每個突變形都與中央的生物形只差一個突變步驟,因此把它們視為中央基本形的子女,是很自然的。於是在我們的電腦模型中,「生殖」就有了著落。我們寫一個小程序再現這種生殖過程,題名「生殖」,然後將它像「發育」一樣塞入較大的「演化」程序中。關於「生殖」,有兩點值得注意。第一,不涉及性別,生殖是無性的。因此我將生物形想像成女性,因為實行無性生殖的物種幾乎總是女體。第二,我規定一次只有一個基因能夠突變。孩子與母親的差異,限於9個基因中的一個;此外,突變僅限於在母親基因的原始值上加(或減)1。這些只是我任意強加的約定;即使另換一組約定,我們的模型仍然能恰當地仿真生物界的實況。

我們的模型倒是有一個特徵,不能視為任意的約定,而是一個生物學基本原理的化身。每個孩子的形狀不是直接源自母親的形狀。每個孩子的形狀都是它9個基因的值(影響枝杈角度、距離等等)決定的。每個孩子的基因都來自母親。這正是生物界的實況。身體不會代代遺傳,基因會。基因在身體中,影響身體的胚胎發育。那些基因或者遺傳到下一個世代,或者不。基因的性質不會因為參與過建構身體的過程而發生變化,可是它們遺傳到下一世代的機會卻可能受身體的影響。成功的身體協助基因進入下一世代,失敗的身體則否。所以在我們的電腦模型中,我要仔細地分別發育與生殖,將它們寫成兩個不同的小程序。「生殖」將基因值傳遞給「發育」,基因值通過「發育」影響發育規則,此外「生殖」與「發育」互不相干。必須特別強調的是:「發育」不會將基因值回傳給「生殖」,要是會的話,就與所謂「拉馬克主義」(Lamarckism)無異了。(見第十一章)

好了,我們已經寫好兩個計算機程序模塊了,叫作「發育」與「生殖」。「生殖」使基因世代相傳,在遺傳過程中基因可能會突變。在每個世代中,「發育」取得「生殖」提供的基因,並將它們逐步翻譯成樹木枝杈,最後在電腦屏幕上展示出一個(生物形)身體的圖案。現在我們可以在一個叫作「演化」的大程序中將這兩個模塊組合起來。

「演化」基本上是一個無窮重複的「生殖」過程。在每個世代裡,「生殖」從上一世代取得基因,遺傳到下一世代,但是往往不是原封不動地遺傳下去,有些基因會發生微小的隨機差錯—突變。一次突變不過是在基因既有的值上加1或減1,而且突變的基因是隨機選出的。這就是說,即使每一世代的變化,從量方面說非常微小,經過許多世代後,後裔與始祖之間就會因為累積的突變而有巨大的遺傳差異。但是,雖然突變是隨機的,世代累積起來的變化卻不是隨機的。每個世代與母親的差異沒有一定的方向(隨機)。但是母親的兒女中哪一個有機會將體內的基因遺傳到下一代,不是隨機的。這是達爾文自然選擇的功能。自然選擇憑借的標準不是基因,而是身體—基因經由「發育」影響過它的形狀。

每個世代,基因除了複製、遺傳(經由「生殖」)之外,還參與「發育」—這個程序依據事先規定好的嚴格規則,將適當的身體圖案畫在銀幕上。每個世代會有「一窩兒女」(下一世代的預定成員)展示在銀幕上。它們都是同一個母親的突變兒女,每個與母親只有一個基因的差異。這麼高的突變率,是電腦模型最不像生物的地方。實際上,真正基因的突變率往往小於百萬分之一。我讓電腦模型表現高突變率,是為了讓銀幕上的圖案方便我們的眼睛,人才沒有耐心等待100萬個世代呢。

在這個故事中,人眼扮演了積極的角色。我們的眼睛會做選擇。我們掃視銀幕上的「那窩兒女」,選出一個繁殖。當選的就成為母親,生出自己的「一窩兒女」,一齊展示在銀幕上。我們的眼睛在這兒做的,與在繁殖名犬、異卉的脈絡中所做的完全一樣。換言之,我們的模型嚴格地說是一個人擇(artificial selection)模型,而不是自然選擇。「成功」的標準不是存活的直接標準,在真正的自然選擇中才是。在真正的自然選擇中,要是一個身體擁有存活的本錢,體內的基因也會存活,因為基因在身體裡。因此,能存活的基因通常是讓身體有存活本錢的基因,兩者的關係如影隨形。另一方面,在電腦模型中,選擇的標準不是存活,而是迎合我們口味的潛力。這可不一定非是閒閒美代子的無厘頭口味,因為我們可以下決心針對某個特定性質持續不斷地選下去,例如「類似垂柳的樹形」。不過,我從經驗中知道,人類選擇者往往口味不專、見異思遷。其實,在這一方面某些種類的自然選擇也未遑謙讓。

我們從屏幕上這一窩裡選出一個繁衍下一代,就按鍵讓計算機知道。中選的個體將體內基因交給「生殖」,新的世代就開始繁衍了。這個過程可以不斷地反覆,就像實際的演化一樣。生物形的每個世代與前後世代,差異只有一個基因的一個突變步驟。但是100個世代後,突變累積了100個,模樣的變化就說不准了。而經過這100個突變,模樣可變的地方太多了。

我寫好「演化」程序,第一次跑的時候,做夢都想不到變化可以大到那個程度。讓我驚訝的主要是:生物形很快就看來不像樹了。基本的二分分枝結構一直沒變,但是很容易讓彼此交錯、再交錯的線段遮掩住,造成密實的顏色塊(打印機只能印出黑色與白色)。圖4的演化史只包括了29個世代而已。始祖只是一個渺小的傢伙,一個實心墨點—英文用的句點。雖然這老小子的身體只是一個墨點,像個太古濃湯中的細菌,它體內卻有分枝發育的潛力,能夠發育成圖3中央的基本形:它體內「基因9」的值是0(意思是分枝0次),所以才只是一個點。圖4中所有「生物」都源自「點始祖」,但是為了不讓這一頁看來擁擠不堪,我沒有把它所有的苗裔都印出來。每一世代除了成功的那一位,只印出一位至兩位失敗的姊妹。所以圖4只代表一個演化世系的主幹,在我的美感引導下演化。每一個演化階段圖上都有。

圖4

讓我們簡短地回顧圖4的頭幾個世系。墨點在第二代變成一根Y形樹杈。在下兩代這根樹杈變大了。然後兩根枝杈有了弧度,整根樹杈像是製作精良的彈弓。第7代,兩根枝杈的弧度加大了,幾乎互相碰觸。第8代,樹杈變得更大了,有弧度的枝杈每根都新增了一對小枝杈。第9代,這些小枝杈消失了,彈弓的柄變長了。第10代,看來像一朵花的剖面;帶弧的主枝杈像合圍著一根中央枝或「柱頭」的花瓣。第11代,同樣的花形,只是更大、更複雜些。

我不再這樣敘述了。你看圖就行了,一直看到第29代。請注意每一代的姊妹之間只有微小的差異,它們與母親的差異同樣的小。由於它們每一代都與母親有微小差異,因此我們預期它們與外祖母的差異會稍大一點。這就是累積演化的要義—即使我們提升了突變率,讓演化以不切實際的速率向前狂奔。因為演化速度快得不符實際,所以圖4看來像物種的系譜,而不是個體的系譜,但是原則(累積演化)是一樣的。

當初我編寫這個程序,除了各式各樣類似樹的形狀,完全沒有想到它會演化出其他的東西。我期待見到垂柳、黎巴嫩杉(cedars of Lebanon)、倫巴第楊樹(Lombardy poplars)、海草,也許還有鹿角。我身為生物學家的直覺,加上20年編寫計算機程序的經驗,以及最狂野的夢境,都不足以讓我產生足夠的心理準備,實際在銀幕上出現的圖案令人出乎意料。在枝杈模式的演化過程中,我不記得什麼時候腦海裡突然浮現一個念頭:何不試試演化出類似昆蟲的圖案!就這麼著,這個無厘頭點子驅使我一代又一代地挑出任何一個看來像似昆蟲的孩子繁衍下去。相似的程度逐步演化,不可思議的感覺也在心頭逐步滋長。讀者可以在圖4下方看見最終的產物。我承認,它們有八隻腳,像蜘蛛,而不是六足的昆蟲,即便如此,你看它們多像昆蟲啊!我第一次看見這些精緻的電腦創造物在我眼前出現,欣喜雀躍,難以自已,直到現在仍然無法平復。我記得當時心中響起了宣示勝利的《查拉圖斯特拉如是說》起始和弦(理查·施特勞斯1896年的作品,1968年的電影《2001年:太空漫遊》主題曲)。我無心進食,那天晚上,我一闔眼「我的」昆蟲就蜂擁而出。

市面上有些電腦遊戲會令玩家產生幻覺,以為自己正在一座地下迷宮中漫遊,這座迷宮非常複雜,但是地理佈局明確,在其中玩家會遇見惡龍、半人半牛獸,以及其他神話主角的對手。在這些遊戲中,怪物的數量其實不多。它們全是計算機程序師設計的,迷宮的地理佈局也是。在演化遊戲中,無論是虛擬的還是真實的,玩家(或觀察者)在道路不斷分叉的迷宮中神遊,但是可能路徑的數量幾乎是無限的,而且一路上遇到的怪物都不是設計出來的,都是事先不可預測的。我在閉塞的生物形世界中漫遊,一路上遇見了精靈蝦、阿茲特克神殿、哥特式教堂的窗子、袋鼠的畫,有一次還碰上一幅「漫畫」,我居然認得,是牛津大學教授威金斯(Davis Wiggins,邏輯講座教授,2000年退休)!可惜我忘了「收集」起來,空留回憶。圖5是我收藏的一部分,全是以相同的方式「培育」出來的。我要強調:這些形狀不是藝術家的創作。它們沒有經過任何加工、修飾。它們全都在電腦裡演化,由電腦畫出來的。人類眼睛的角色,只限於「選擇」—在隨機突變的兒女中挑出一個繁殖,許多世代後,就可以觀察到累積演化的結果。

現在我們手裡有了一個切合實際情況的演化模型了,盲目敲打鍵盤的猴子沒的比。但是生物形模型仍然有所不足。它為我們演示了累積選擇的威力,類似生物的形狀(「生物形」)得以產生幾乎無限的變異,但是這個模型依賴人擇而非自然選擇。人眼在做選擇。我們可以擺脫人眼,讓電腦根據符合生物界實情的標準自行選擇嗎?不過這事比預想的困難多了,值得我花一些時間向大家解釋。

要是所有動物的基因組你都一目瞭然,根據一個明確的判斷標準選出一個特定的基因式就太容易了。但是自然選擇並不直接揀選基因,它揀選的是「基因對身體的影響」,就是學者所說的「表型效應」(phenotypic effects)。我們的眼睛擅長挑選「表型效應」,人類已培育出了許多品種的家犬、牲口以及家鴿就是明證,要是讀者不嫌棄,不妨圖5也當作一件證據。為了讓電腦直接選擇「表型效應」,我們得寫一個非常複雜的「模式辨識」(pattern-recognition)程序。市面上的確有這種「模式辨識」程序,電腦用來「閱讀」印刷文字,甚至手寫文字。但是這種程序是尖端軟件,高手才會設計,而且大型、高速電腦才跑得動。不過,即使這種程序我會寫,我的64k計算機跑得動,我也懶得動它們的腦筋。「模式辨識」這種工作,還是眼睛與大腦合夥來做比較妥當,畢竟大腦是個擁有100億神經元的電腦!

圖5

讓電腦選擇模糊的一般特徵倒不太難,例如高瘦、短胖,甚至玲瓏有致的曲線、鋒芒、洛可可式的(rococo)裝飾紋。一個辦法是寫個電腦程序讓電腦記住人類在歷史上青睞過的性質—著眼於它們的「類別」—然後電腦繼續以同樣的標準挑選未來的世代。但是這算不上仿真自然選擇。請記住:自然不需要計算能力就能選擇—除了少數例外,例如雌孔雀選擇雄孔雀。在自然中,通常的選擇媒介(agent)作風直接、赤裸又簡單。它是台陰森的收割機。當然,存活的理由並不單純—難怪自然選擇能夠創造出極為複雜的動物、植物。但是死亡卻是粗陋、簡單的。在自然界,在眾表現型中做選擇,只要通過「非隨機死亡」就成了。表現型一旦選出,也等於選了它體內的基因。

若要電腦以令人感興趣的方式模擬自然選擇,我們就該忘記洛可可式的裝飾紋與所有吸引視線的特徵。我們應該致力於模擬「非隨機死亡」。在電腦裡,生物形應與虛擬的惡劣環境對抗。它們是否經得起環境的折騰,應與它們的形狀有因果關聯。理想狀態是,惡劣的環境應包括其他的生物形—獵食者、獵物、寄生蟲、競爭者—大家都在物競天擇,自求多福。舉例來說,獵物與獵食者之間的鬥爭,勝負與它們的形狀特徵有因果關聯。換言之,有些獵物由於體形的特徵,易於逃過遭獵殺的命運。可是什麼樣的體形特徵能協助個體逃過劫數,或讓個體易遭劫數,不應由程序設計師事先決定。那些判生判死的標準應該是結果,就像生物形的演化一樣,我們憑後見之明才能發覺。於是符合實情的演化劇就可以在電腦裡上演了,因為條件已經齊備,一場不斷增強的「軍備競賽」(arms race,參見第七章)即將發動,至於結局,我不敢臆測。不幸,我的程序設計本領還不足以建構這麼一個虛擬演化世界。

什麼人有這種本領呢?我想電玩店裡「外星人入侵」之類的嘈雜、庸俗動作電玩你一定早已熟悉了,發展那些電玩的程序師就有這種本領。這些程序都在仿真想像的世界。在那個虛擬世界中,有地理情境,通常以三維空間呈現,也有快速移動的時間向度。其中有些對像在虛擬的三維空間中嗡嗡穿梭,在令人難以忍受的嘈雜聲中彼此相撞、相互射擊、互相吞噬。那個虛擬世界甚至逼真到操弄控制器的玩家都以為身臨其境,情不自禁。我認為這種計算機程序設計最高段的產品,就是訓練飛行員或宇宙飛船駕駛員的虛擬機了。但是與我們想要模擬的世界與情況相比,這些程序就太小兒科了。我們得模擬一個完整的生態系,獵物與獵食動物在其中演化,然後發展成愈演愈烈的軍備競賽!不過,這是做得到的。要是程序設計高手有意試試身手,與我合作接受挑戰,請與我聯絡。

儘管模擬「軍備競賽」目前似乎是不可能的任務,還是有一些簡單得多的事可做,我就打算暑假試試看。我會在花園裡找個陰涼的地方,擺上一台電腦。屏幕要用彩色的。我手邊有個「生物形」程序,其中有幾個基因專門控制色彩,運作的方式就像那9個控制形狀的基因一樣。我會隨便挑一個看來簡潔、鮮艷的生物形做起點。然後電腦就展示出它的突變子女,整個屏幕上都是,有的顏色不同,有的形狀不同,有的顏色、形狀都不同。我相信蜜蜂、蝴蝶或其他昆蟲會「造訪」屏幕,它們「撞擊」屏幕上特定生物形的位置,就表示它們「看上」了它—「選擇」了它。等到昆蟲訪客超過一定數量之後,電腦就清理屏幕,以最受青睞的那個生物形代表第二世代,繁衍下一世代。於是屏幕上就出現了新一代的突變子女。

我很指望經過許多許多世代後野外的昆蟲能讓花朵在電腦裡演化出來。果真的話,電腦花朵遭受的自然選擇壓力與野外的花朵完全一樣—顯花植物的演化驅力正是昆蟲。我的指望可不是一廂情願,事實上昆蟲經常停留在女士衣服上的鮮艷處,科學家也系統地做過實驗,研究昆蟲的色彩癖好。另一個更令人興奮的可能,是野生昆蟲讓類似昆蟲的形狀演化出來。這也有先例可援,絕非我瞎想:蜜蜂就是蜂蘭演化的推手。蜂蘭看來像似蜂后,引誘雄蜂與它交配,藉以傳播花粉。蜂蘭今日的形態是它世代受到雄蜂垂青的累積結果。想像一下,要是圖5中的「蜂花」是彩色的,你會不會以為它是蜜蜂?

我悲觀的主要理由是:昆蟲的視覺與我們的很不一樣。映像管屏幕是為人眼設計的,而不是昆蟲的眼睛。因此,雖然我們與蜜蜂殊途同歸,都將蜂蘭看作形似蜂后的東西,蜜蜂可能根本看不見映像管屏幕上的圖像。蜜蜂也許只能看見625條掃瞄線而已。不過,這個實驗仍然值得做。我想本書出版時,我就知道答案了。

常聽人說:電腦輸出的結果,不會比你輸入的多。這個說法還有其他的版本,像是:電腦只能做你叫它做的事,因此電腦絕無創意。這些陳腔濫調的確是真的,可是又當不得真,這好有一比:莎士比亞一輩子寫過的—字—也不過是他第一位老師教他寫的那些玩意兒,不是嗎?電腦跑的「演化」程序是我寫的,可是圖5上的那些圖形都不是我事先構想的。壓根兒我就沒想到它們會出現,因此我認為說它們「突現」(emerge)挺實際的。沒錯,它們的演化以我的選擇做嚮導,但是每一階段我只能在一小撮隨機突變的樣本中做選擇,我的選擇談不上「策略」,只能說投機、善變、短視。對生物形會演化成什麼模樣,我心無定見,自然選擇也沒有。

關於這一點,要是你聽我說過一個故事,管保你印象更深刻。話說有一回,我的確試過在跑「演化」程序之前就默認了一個終極目標。不過我必須先來個坦白從寬。即使我不坦白,我想你也猜得到。圖4的演化史是事後重建的。裡面的「昆蟲」不是我第一次見到的那些。當初它們出現在屏幕上,我心頭響起了勝利的號角,可是我無法記錄它們的基因式。它們就在眼前,在屏幕上,而我無法掌握它們,無法解開它們的基因式。我不願把電腦關掉,一直在絞盡腦汁,希望想出什麼辦法來將它們的基因式記錄下來,結果枉費心機。它們的基因埋藏在內部深處,真實生物的也是。我可以用打印機將它們的軀殼印出來,但是我失去了它們的基因。我立即修改了程序,以後的生物形都能留下基因式供日後查考,可是往者已矣,無從挽回。

於是我開始設法將它們找回來。既然它們演化出來過,難道不能再演化一次?記憶中的施特勞斯和弦縈繞心頭,「我的」昆蟲也揮之不去。我在生物形的國度裡四處漫遊,不知見過多少奇異的生物與事物,無奈過盡千帆皆不是,我沒找到它們。我知道它們必然在什麼地方。我知道它們的演化起點—始祖的基因式。我有它們的「畫影圖形」。我甚至連它們歷代祖先的形貌都有記錄。可是我不知道它們的基因式。

也許你以為重建它們的演化路徑很容易,其實不然。理由是:演化世代要是到達某個數目,即使只涉及9個基因,可能的演化系譜也是個天文數字。好幾次我遇上似乎可算「我的」昆蟲的祖先,可是不管我怎麼小心在意地選,以後的演化總不免步入歧途。最後,我在生物形國度裡的演化漫遊總算有了眉目—我又逮著了它們。那種勝利的心情,不亞於我第一次見到昆蟲在屏幕上演化出來。我至今仍不清楚它們是否就是讓我心中響起施特勞斯《查拉圖斯特拉如是說》起始和弦的那些,還是它們只是趨同演化的產物,只不過形似而已。不過我已經很滿意了。這一次不會再出錯了:我把它們的基因式記了下來,現在我隨時可以讓「昆蟲」演化了。

我承認這個故事有些地方我誇張了一些,但是我有深意。我希望讀者明白的是:即使程序是我寫的,電腦按照指令亦步亦趨行事,屏幕上演化出的動物也不是我規劃的,我很清楚它們的「祖先」是什麼模樣,可是我見到它們時自己也萬分驚訝。我完全不能控制演化,即便我想讓某個「演化史」重演過一遍,依然無法得逞。好在那些「昆蟲」的祖先每個世代我都打印過,留下了完整的圖像記錄,然而即使有圖為憑,整個過程仍困難而沉悶。程序師不能控制或預測電腦圖像的演化過程,你覺得困惑嗎?難不成電腦裡有什麼我們難以理解甚至神秘的玩意兒在搞鬼?當然不是。真實生物的演化也不涉及什麼神秘玩意兒。電腦模型可以幫助我們解決這個謎團,並對真實的演化過程有所認識。

我先交代一下,解決謎團的論證大致是這樣的:有一個數目固定的生物形集合,每一個生物形都在一個數學空間中佔據一個獨特的位置。它們的位置是永久的,只要知道基因式就能立刻找到它們;而且每個生物形與四周的緊鄰都只有一個基因的差異。因為我已知道我的「昆蟲」的基因式,我可以隨意複製它們,也可以讓電腦從任何一個生物形朝向它們演化。你第一次以「人擇」演化出新玩意兒的時候,會覺得那是一個創造的過程。也的確是。但是你實際在做的,只是在生物形國度的數學(基因)空間裡「找尋」它們。我說這的確是個創造的過程,理由是:尋找任何一個特定的生物形極為困難,只因為生物形的國度非常非常大,居民幾乎有無限多。在其中,漫無目的、毫無章法地搜尋根本不可行。你必須採取某種有效的—有創意的—搜尋策略。

有些人天真地以為會下棋的電腦是暗中試過所有可能的棋步後才落子的。要是他們輸給電腦,這種想法可以令他們好過一點,但是他們的想法完全錯了。棋局的可能棋步,數量實在太大了:在這麼大的搜尋空間中使用闖空門的伎倆無異於大海撈針。寫一個成功的下棋程序,秘訣在於找出有效的搜尋快捷方式。累積選擇—無論是電腦模型的人擇還是真實世界裡的自然選擇—是個有效的搜尋方式,它的結果看來就像是有創意的智能設計出來的。畢竟培裡的設計論證著眼的就是那一點。就技術而言,我們在電腦上玩的生物形遊戲,不過是從早已在數學空間就位的玩意兒中,搜尋覺得悅目的個體。整個過程讓人覺得像是從事藝術創作。在一個很小的空間中搜尋的話,其中不過小貓三四隻,通常不會覺得像是在創作什麼。孩子玩的找東西遊戲不會令人覺得有創意。隨意瞎闖就想找到目標,通常只有在搜尋空間很小的時候才行得通。空間增大後,搜尋方式就得有點章法;空間越大,章法越得講究。一旦空間大到一定的程度,有效的搜尋方式就與真正的創意無從分別了。

電腦生物形模型把這些論點展示得十分清楚,它們在人類的創造過程(例如構思贏得棋賽的策略)與自然選擇(盲眼鐘錶匠)的演化創造之間構成一座有教育意義的橋樑。為了瞭解這一點,我們必須將「生物形國度」發展成一個數學「空間」,四面八方充滿了形態有差異的生物形,它們有秩序地分佈排列,各安其位,等待造訪。圖5的17個生物形,並沒有什麼特殊的安排。但是它們在生物形國度中,都有自己的獨特位置,由基因式決定,四周也圍繞著特定的鄰居。在生物形國度中,它們彼此間都有明確的空間關係。那是什麼意思?空間位置會有什麼意義?

我們談的空間是基因空間。在基因空間中,近鄰都是基因式只差一個基因的個體。圖3中央是基本形,周圍的生物形是它在基因空間中18個近鄰里的8個。那18個近鄰都是它可能生產的子女,它也可能是它們的子女,這都是我們的電腦模型容許的。由那些近鄰向外跨出一步,中央生物形的鄰居就達到324個(18×18,暫且忽略「朝向祖先方向的」突變)。再跨出一步,鄰居的數量就增加到5824個(18×18×18),包括可能的曾祖/曾孫,表/堂兄弟姊妹等等。

為什麼要談基因空間呢?我們會得到什麼結論呢?答案是:基因空間可以幫助我們瞭解演化是一個漸進、累積的過程。根據電腦模型的規則,每一個世代只能在基因空間中移動一步。自始祖起經過29個世代,落腳的位置不可能距始祖29步以上。每一部演化史都是基因空間中一個特定的路徑,或叫「軌跡」。舉例來說,圖4所記錄的演化史就是基因空間中一個特定的蜿蜒軌跡,連接一個點與一隻昆蟲,中間經過了28個世代。我以比喻的方式說我在生物形國度裡「漫遊」,指的就是這個。

本來我想將這個基因空間以一張圖畫來呈現。我遇到的問題是:圖畫是二維空間。生物形居住的基因空間不是二維空間。它甚至不是三維空間,而是九維空間![一談到數學,千萬記住別害怕。數學沒那麼可怕,儘管有時數學家會讓你覺得數學難得不得了。每一次數學難著我了,我都會想起電機工程大師湯普森(Silvanus Thompson,1851~1916)在《輕鬆學習微積分》(Calculus Made Easy)中的箴言:「要是一個傻子會做,每個傻子都會。」]要是我們能夠畫出九個向度,就能以每個向度對應一個生物形基因組的基因。每個特定動物的位置,就說蠍子或蝙蝠或昆蟲好了,都能在基因空間中以它的基因式定位。演化變化就是在這九維空間中一步一腳印創造出來的。兩個動物的遺傳差異,從一個演化成另一個所需的時間,以及演化的困難程度,都可以用它們在這九維空間中的距離來表示。

可是我們沒有辦法畫出有九個向度的空間。我想找個辦法來湊合,就是用一張二向度的圖(平面圖)來表達在(九度)基因空間中從一點移動到另一點的感覺。有許多辦法都能達到這個目的,我挑了一個我叫作「三角形」的。請看圖6。三角形以任意挑出的三個生物形為頂點。頂上那個是基本樹形,左邊是「我的」昆蟲中的一個,右邊的沒有名字但是我覺得它很好看。它們每一個都有獨特的基因式,與所有生物形一樣,基因式決定了它們在(九維)基因空間中的位置。

圖6

這三角形在一個(二維)平面上,這個平面是(九維)基因空間的一個切面(一個傻子會做的,每個傻子都會)。這個平面就像一片插入果凍的平板玻璃。玻璃表面上畫著一個三角形,以及憑基因式剛好位於玻璃面上的生物形。「憑基因式」是什麼意思?這就要談談位於三角形三個頂點上的生物形了。我們管它們叫「錨地」(anchor)。

記得嗎?我們談基因空間中的「距離」,指的是遺傳上相似的個體是「近」鄰,遺傳上相異的個體是「遠」親。在這一個平面上,三個「錨地」是計算所有距離的參考點。這片玻璃上的任一點,無論在三角形之內還是之外,基因式的計算方式都是求得距三個「錨地」生物形基因式的「加權平均數」。我想你已經猜到「加權」是怎麼做的。就是以那個點到三個「錨地」的距離來加權的,精確地說,是它與三個「錨地」的接近程度。因此,那個點越接近昆蟲就越像昆蟲。要是你向樹的方向看去,就會看見生物形的昆蟲模樣逐漸消失,反而越來越像樹。當你的視線停留在三角形的中心,那兒見到的動物都因為三個「錨地」的影響表現出不同程度的「遺傳夾纏」(Genetic Compromises)。

但是以上的說明對三個「錨地」生物形頗有抬舉過當之嫌。電腦的確利用它們計算平面上任一點的基因式,無可否認。但是,在這個平面上任取三點都能完成這個任務,算出相同的數值。因此圖7中,我就不畫出三角形了。圖7與圖6是同樣的圖,只是另一個平面罷了。同一隻昆蟲仍是三個「錨地」之一,只是這會兒它在右手邊。其他兩個「錨地」是「悍婦」(第二次世界大戰期間的英國海軍飛機)與蜂花,圖5上都有。在這個平面上,你也會注意到:近鄰比遠親看來相似得多。例如「悍婦」就位於一中隊類似機種之間,它們正以編隊飛行。由於昆蟲位於兩個平面上,你可以想像兩個平面相交,其間有一夾角。

圖7

我們的方法因為除去了三角形而有所改進,因為它岔開了我們的注意力。三角形過度凸顯了處於「錨地」位置的三個生物形。不過我們的方法還得進一步改進。圖6與圖7中,空間距離代表遺傳距離,但是比例都扭曲了。縱坐標的比例尺與橫坐標的比例尺未必對應。為了修正,我們必須慎選當作「錨地」的生物形,使它們彼此的遺傳距離都相等。圖8就是修正後的結果。三角形同樣沒有畫上。三個「錨地」分別是圖5中的蠍子,同樣的昆蟲(又來了),以及頂上說不出名堂的一個玩意兒。這三個生物形彼此相距30個突變(遺傳距離)。換言之,任何一個都可以演化成另外兩個,一樣容易。任何一個要演化成另外一個,至少需要30個遺傳步驟。圖8下緣的標尺,標上了遺傳距離的單位—基因。它可以被看作一把遺傳尺。這把尺不僅能用在水平方向,你可以將它向任何方向傾斜,測量平面上任一點與另一點的遺傳距離,以及所需的最低演化時間(讓人懊惱的是:在圖8的平面上,這並不確實,因為用來打印的打印機會扭曲比例,但是由於扭曲的比例很輕微,不值得計較。不過,要是你使用圖8的標尺,記住:你得到的讀數並不精確)。

圖8

這些切入九向度基因空間的二向度平面,讓我們多少可以體會「在生物形國度中漫遊」的意思。若要更實際些,你得記住演化並不局限在一個平面上。在真正的演化旅途上,你隨時可能從一個平面掉到另一個平面上,例如從圖6的平面掉到圖7的平面上(在那只「昆蟲」附近,因為兩個平面在那裡相交)。

我說過圖8的「遺傳尺」讓我們能夠計算從一點演化到另一點需要的最短時間。就我們的模型而言,這是不錯的,因為我們的模型內建了嚴格的演化規則,但是我想強調的是「最短」這個形容詞。由於昆蟲與蠍子相距30個基因單位,從昆蟲演化成蠍子只要30個世代—要是一步都不錯的話。可是「一步都不錯」談何容易?你得知道目標的基因式,想出前進的路徑,並有「按表操課」的能力。這些機會—知道目標的基因式,想出前進的路徑—在生物演化中完全不存在。

現在我們可以用生物形模型討論先前以「猴子敲出莎士比亞作品」建立的論點了,那就是:漸進、逐步的變化是演化的關鍵,純偶然性事件不是。首先我們要改變圖8下方的標尺單位。距離不再是「(演化過程中)必須改變的基因數目」,而是「(完全憑偶然性)一次就能跳躍過該距離的概率」。為了方便討論,我們得先軟化一條電腦模型的內建規則,最後讀者會瞭解為什麼我一開始要設計那條規則。那條規則是:子女與父母的差異只限於一個基因。每一次只有一個基因可以突變,而且這個基因的「值」只准加1或減1。這條規則軟化後,突變基因的數目不限,突變值也不限。這樣軟化,實際上的確太過分了,因為這等於突變值可以是正負無限之間的任意值。要是我們以個位數限定基因的突變值,例如正負9之間,就能恰當地契合我想推演的論點了。

那條規則適當地軟化後,理論上生物形每個世代可能發生的變化,包括9個基因的任意組合。還有,每個基因的突變值也有許多可能,只要是個位數就可以了。這有什麼意思呢?是這樣的,理論上這麼一來演化就是可以跳躍的:任何世代都可能在生物形國度中從一點跳到另一點。不只是一個平面上的另一點,而是整個九維超空間中的另一點。舉例來說,要是你想從昆蟲一步就演化成圖5中的狐狸,辦法如下:在基因1至9的值上加上下列數值,–2,2,2,–2,2,0,–4,–1,1。但是由於我們談的是隨機跳躍,每一次生物形國度中所有的點都有同樣的機會成為目標。因此任何一個特定的點(例如狐狸)果真天降鴻運成為目標的概率就很容易計算了。那就要先算出超空間中所有生物形的總數。你一定已經看出來了,我們又要做天文數字的計算了。我們這次有9個基因,每個基因有19個可能的值(從–9到9),因此一次跳躍的可能目標有19的9次方個。總數是5000億。與阿西莫夫的「血紅蛋白數字」比起來寒磣得很,但是我還是認為它是個「大數字」。要是你開始時是個昆蟲,像個白癡跳蚤一樣跳個5000億下,至少有一次你會跳成狐狸。

這對我們瞭解真正的演化有什麼幫助呢?這個模型再一次讓我們體認到「漸進、逐步變化」的重要。有些演化學者不認為演化需要這種「漸變假定」(gradualism)。生物形模型讓我們結結實實地瞭解「漸進、逐步變化」很重要的理由。說起演化,我們預期那只昆蟲會跳到它週遭近鄰的位置,而不會一躍就到達狐狸或蠍子的位置。為什麼?且聽我分解。隨機跳躍果真發生過,從昆蟲跳到蠍子當然可能。它跳到近鄰的位置一樣可能。它跳到國度中任何一個生物形的位置都一樣可能。但是現在問題來了,既然國度裡生物形的總數達5000億個,而跳到任一個位置的概率與其他位置的概率完全一樣,於是跳到任何一個特定位置的概率就小到可以忽略的地步。

請注意,假定生物形國度裡流行著一股非隨機「選擇壓力」,對我們沒有任何幫助。即使國王設立大獎,頒給任何一跳就跳到蠍子位置的幸運兒,也無濟於事。概率仍是5000億分之一,(與零相差多少?)但是,要是你不跳,而是走,一次一步,每一次你恰巧朝正確方向跨出一步的話就會得到一個小硬幣作為獎勵,你短時間內就能到達蠍子的位置。最快也要30步(世代),你不一定那麼快,可是要不了太多時間,是可以肯定的。正因為一蹴而就的概率太低,一步一個腳印地前進,每一步都奠基於先前的成就,是唯一的可行之道。

前面幾段的基調很容易引起誤會,我非得「消毒」不可。我舉的例子是從昆蟲演化到蠍子,好像演化是針對某個遙遠目標(例如蠍子)前進的過程。這個問題我們已經討論過,演化從來不是個有目標的過程。但是如果所謂目標就是「任何能增進生存機會的條件」,我的論證仍然有效。如果一個動物有子女,它至少有本事活到成年。它的突變子女可能本事更大。但是如果子女的突變規模很大,遺傳空間中的親子距離拉得很開,子女因此擁有更大本領的概率有多大呢?答案是:很低。非常低。至於理由,我們在討論生物形模型時已經討論過了。要是突變的規模很大,可能的跳躍目標就會是個天文數字。而我們在第一章討論過,因為死掉的方法比活著的方法多得多,在遺傳空間中隨機長距蹦跳顯然是穩健的找死之道。在遺傳空間中即使短距蹦跳都很可能闖入鬼門關。但是跳越的距離越短,死亡的概率越低,改善本領的概率越高。我們會在另一章回到這個主題。

那就是我想從生物形模型捻出的教訓。我希望讀者不會覺得太抽像。另有一個數學空間,充斥了有血有肉的動物,每個都由幾十億個細胞組成,每個細胞都包含幾萬個基因。這不是生物形空間,而是真正的基因空間。地球上生存過的真實動物,比起這個理論上可能生存的動物,數量簡直微不足道。這些真實動物都是基因空間中演化路徑的產物,真實的演化路徑數量很少。動物空間中大多數理論路徑都產生不可能生存的怪物。真實動物分佈在理論怪物之間,這兒一些,那兒一些,在基因超空間中每個都有自己獨特的位置。每個真實動物週遭的一小撮鄰居位置,大部分從沒有被真實動物填充過,但是有一些有,是它的祖先、苗裔、旁支親族。

在這個巨大的數學空間中,人類、鬣狗、變形蟲、土豚、扁蟲(如渦蟲)、烏賊、渡渡鳥與恐龍都有特定位置。要是我們有高明的基因工程技術,理論上我們就可以在動物空間中任意移動。我們就能在基因迷宮中逍遙自在,從任何一點出發都能找到抵達渡渡鳥(幾百年前滅絕)、暴龍(中生代之末滅絕)與三葉蟲(古生代之末滅絕)的路徑(也就是重新創造它們)。我們必須知道的,不過是哪些基因必須修理,染色體哪些片段要複製、顛倒或者「刪掉」。我不大相信我們會有那麼完整的知識來幹這件事,但是這些令人著迷的已滅絕的動物是那個巨大基因超空間中的永久居民,它們躲在自己的私密角落裡,只要我們有正確的知識,懂得在迷宮中如何找路,就能發現它們。我們甚至還可能以人擇讓鴿子演化成渡渡鳥的復本,不過我們得活上100萬年才能完成這個實驗。但是現實世界的遺憾,可以用想像力彌補。像我一樣沒受過專業數學訓練的人,電腦是想像力的有力盟友。電腦就像數學,想像力不僅因而飛翔,也因而自律自制。