盲眼鐘表匠:第三章 ? 累進變化

圖片發(fā)自簡書App

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

WDLDMNNLT DTJBKWIRZREZLMQCO P

Y YVMQKZPGJXWVHGLAWFVCHQYOPY

MWR SWTNUXMLCDLEUBXTQHNZVJQF

FU OVAODVYKDGXDEKYVMOGGS VT

HZQZDSFZIHIVPHZPETPWVOVPMZGF

GEWRGZRPBCTPGQMCKHFDBGW ZCCF

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

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

WDLMNLT DTJBKWIRZREZLMQCOP

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

WDLMNLT DTJBSWIRZREZLMQCO P

但是這個程序會重復(fù)下去,電腦開始復(fù)制這個贏家,并容許同樣程度的隨機變異,并選出一個新的贏家。如此這般,10“代”、20“代”之后的贏家,可能仍然必須憑信心才能看出它們與標(biāo)的“很像”。但是,到了30“代”,相像就不再是想象的產(chǎn)物了。到了40“代”,銀幕上出現(xiàn)的字母序列,只有一個字母是錯的。正確的結(jié)果在第43“代”產(chǎn)生。

第二次重跑這個計算機程序,正確的結(jié)果在第64“代”產(chǎn)生。第三次重跑,第41“代”就產(chǎn)生正確的結(jié)果了。

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

現(xiàn)在我們可以看出:“累積選擇”(這個過程中,每一次改進,不論多么微小,都是未來的基礎(chǔ))與“單步驟選擇”(每一次“嘗試”都是新鮮的,與過去的“經(jīng)驗”無關(guān))的差別可大了。要是演化進步必須依賴“單步驟選擇”,絕對一事無成,搞不出什么名堂。不過,要是自然的盲目力量能夠以某種方式設(shè)定“累積選擇”的必要條件,就可能造成奇異、瑰麗的結(jié)果。事實上那正是我們這個行星上發(fā)生的事,我們?nèi)祟惣词顾悴簧献钇娈悺⒆钭屓梭@訝的結(jié)果,也是最近的結(jié)果。

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

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

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

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

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

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

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


圖片發(fā)自簡書App


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

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

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


圖片發(fā)自簡書App

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

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

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

閑話休說,言歸正傳,且說電腦生物形,先前我們說到一圈18個可能的突變形,圖3可以見到8個。由于這一圈里每個突變形都與中央的生物形只差一個突變步驟,因此把它們視為中央基本形的子女,是很自然的。于是在我們的電腦模型中,“生殖”就有了著落。我們寫一個小程序再現(xiàn)這種生殖過程,題名“生殖”,然后將它像“發(fā)育”一樣塞入較大的“演化”程序中。關(guān)于“生殖”,有兩點值得注意。第一,不涉及性別,生殖是無性的。因此我將生物形想象成女性,因為實行無性生殖的物種幾乎總是女體。第二,我規(guī)定一次只有一個基因能夠突變。孩子與母親的差異,限于9個基因中的一個;此外,突變僅限于在母親基因的原始值上加(或減)1。這些只是我任意強加的約定;即使另換一組約定,我們的模型仍然能恰當(dāng)?shù)胤抡嫔锝绲膶崨r。

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

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

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

每個世代,基因除了復(fù)制、遺傳(經(jīng)由“生殖”)之外,還參與“發(fā)育”——這個程序依據(jù)事先規(guī)定好的嚴(yán)格規(guī)則,將適當(dāng)?shù)纳眢w圖案畫在銀幕上。每個世代會有“一窩兒女”(下一世代的預(yù)定成員)展示在銀幕上。它們都是同一個母親的突變兒女,每個與母親只有一個基因的差異。這么高的突變率,是電腦模型最不像生物的地方。實際上,真正基因的突變率往往小于百萬分之一。我讓電腦模型表現(xiàn)高突變率,是為了讓銀幕上的圖案方便我們的眼睛,人才沒有耐心等待100萬個世代呢。

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

我們從屏幕上這一窩里選出一個繁衍下一代,就按鍵讓計算機知道。中選的個體將體內(nèi)基因交給“生殖”,新的世代就開始繁衍了。這個過程可以不斷地反復(fù),就像實際的演化一樣。生物形的每個世代與前后世代,差異只有一個基因的一個突變步驟。但是100個世代后,突變累積了100個,模樣的變化就說不準(zhǔn)了。而經(jīng)過這100個突變,模樣可變的地方太多了。

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

圖片發(fā)自簡書App

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

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

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

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

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

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

圖片發(fā)自簡書App

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

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

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

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

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

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

常聽人說:電腦輸出的結(jié)果,不會比你輸入的多。這個說法還有其他的版本,像是:電腦只能做你叫它做的事,因此電腦絕無創(chuàng)意。這些陳腔濫調(diào)的確是真的,可是又當(dāng)不得真,這好有一比:莎士比亞一輩子寫過的——字——也不過是他第一位老師教他寫的那些玩意兒,不是嗎?電腦跑的“演化”程序是我寫的,可是圖5上的那些圖形都不是我事先構(gòu)想的。壓根兒我就沒想到它們會出現(xiàn),因此我認為說它們“突現(xiàn)”(emerge)挺實際的。沒錯,它們的演化以我的選擇做向?qū)В敲恳浑A段我只能在一小撮隨機突變的樣本中做選擇,我的選擇談不上“策略”,只能說投機、善變、短視。對生物形會演化成什么模樣,我心無定見,自然選擇也沒有。

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

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

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

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

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

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

電腦生物形模型把這些論點展示得十分清楚,它們在人類的創(chuàng)造過程(例如構(gòu)思贏得棋賽的策略)與自然選擇(盲眼鐘表匠)的演化創(chuàng)造之間構(gòu)成一座有教育意義的橋梁。為了了解這一點,我們必須將“生物形國度”發(fā)展成一個數(shù)學(xué)“空間”,四面八方充滿了形態(tài)有差異的生物形,它們有秩序地分布排列,各安其位,等待造訪。圖5的17個生物形,并沒有什么特殊的安排。但是它們在生物形國度中,都有自己的獨特位置,由基因式?jīng)Q定,四周也圍繞著特定的鄰居。在生物形國度中,它們彼此間都有明確的空間關(guān)系。那是什么意思?空間位置會有什么意義?

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

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

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

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

圖片發(fā)自簡書App


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

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

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

圖片發(fā)自簡書App


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

圖片發(fā)自簡書App


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

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

現(xiàn)在我們可以用生物形模型討論先前以“猴子敲出莎士比亞作品”建立的論點了,那就是:漸進、逐步的變化是演化的關(guān)鍵,純偶然性事件不是。首先我們要改變圖8下方的標(biāo)尺單位。距離不再是“(演化過程中)必須改變的基因數(shù)目”,而是“(完全憑偶然性)一次就能跳躍過該距離的概率”。為了方便討論,我們得先軟化一條電腦模型的內(nèi)建規(guī)則,最后讀者會了解為什么我一開始要設(shè)計那條規(guī)則。那條規(guī)則是:子女與父母的差異只限于一個基因。每一次只有一個基因可以突變,而且這個基因的“值”只準(zhǔn)加1或減1。這條規(guī)則軟化后,突變基因的數(shù)目不限,突變值也不限。這樣軟化,實際上的確太過分了,因為這等于突變值可以是正負無限之間的任意值。要是我們以個位數(shù)限定基因的突變值,例如正負9之間,就能恰當(dāng)?shù)仄鹾衔蚁胪蒲莸恼擖c了。

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

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

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

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

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

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,533評論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,055評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,365評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,561評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 71,346評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 54,889評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,978評論 3 439
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,118評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,637評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,558評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,739評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,246評論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 43,980評論 3 346
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,362評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,619評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,347評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 47,702評論 2 370

推薦閱讀更多精彩內(nèi)容

  • 第一章 不可能! 哲學(xué)家培里在他的書《自然神學(xué)》中說如果我走在草地上,看到了一個鐘表,那么我一定會認為這個復(fù)雜的機...
    魔鬼的小牧師閱讀 1,039評論 0 1
  • 我看文章注意到了扎克伯格的妻子,他這么有錢找這樣的妻子是必然的,找其他的我估計他也怕不是真愛,這點想法和我們普通人...
    傳說_閱讀 171評論 0 0
  • 聞?wù)f牡丹開笑顏, 喜從家中奔小園。 園中月季已凋落, 國色與我本無緣。
    我本為旭閱讀 293評論 0 4
  • 人在的時候 以為來日方長什么都有機會, 其實人生是減法, 見一面,少一面。 別人怎么看你, 和你毫無關(guān)系; 你要怎...
    浪漫人生福哥閱讀 224評論 0 0