




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
\h為什么需要生物學(xué)思維目錄\h01\h歡迎來到這個糾纏的時代連接和反饋是復(fù)雜系統(tǒng)的典型標(biāo)志。技術(shù)系統(tǒng)已經(jīng)變得如此復(fù)雜,以致每個專家都僅知道其中的一個部分,沒有人能夠完全理解整體。我們已經(jīng)從“啟蒙時代”邁進(jìn)了“糾纏時代”。\h什么是復(fù)雜系統(tǒng)\h從“啟蒙時代”到“糾纏時代”\h抽象的局限\h02\h復(fù)雜系統(tǒng)形成的4個原因技術(shù)系統(tǒng)變得越來越復(fù)雜的主要原因是“吸積”和“交互”。隨著時間的推移,系統(tǒng)中不斷加入更多的組成部分,部分之間也增加了越來越多的連接?!氨仨毺幚淼睦馇闆r”和“普遍的稀有事物”也讓技術(shù)系統(tǒng)變得愈加復(fù)雜。\h原因1:吸積\h原因2:交互\h原因3:必須處理的例外情況\h原因4:普遍的稀有事物\h越來越多的復(fù)雜系統(tǒng)\h03\h為什么復(fù)雜系統(tǒng)越來越難以理解了對于大多數(shù)人來說,記住一個7位數(shù)就相當(dāng)不容易了。當(dāng)復(fù)雜系統(tǒng)的組成部分和連接數(shù)量猛增時,即便是專家也會望而生畏。我們個人的知識儲備,與理解復(fù)雜系統(tǒng)所需要的知識相比,存在著根本性的沖突。\h力不從心的大腦\h認(rèn)知的極限\h最后一個無所不知的人\h04\h令人費(fèi)解的bugbug并不都是能夠找到確切起因的那些錯誤,在以連接和交互為特征的復(fù)雜系統(tǒng)中,經(jīng)常會出現(xiàn)一些令人費(fèi)解的bug。盡管我們對這些bug沒什么好感,但它們卻是這個糾纏時代中無法回避的存在。\h并不是所有bug都能被消除\h從錯誤中學(xué)習(xí)\h像生物學(xué)家一樣思考\h05\h為什么需要生物學(xué)思維復(fù)雜的技術(shù)系統(tǒng)更接近生物學(xué)系統(tǒng),因此,用生物學(xué)思維思考復(fù)雜技術(shù)是個不錯的選擇。為了從整體上理解系統(tǒng),我們也會忽略掉一些細(xì)節(jié),這時,物理學(xué)思維才是首選。我們真正需要的是經(jīng)過物理學(xué)思維錘煉的生物學(xué)思維。\h復(fù)雜的技術(shù)系統(tǒng)需要生物學(xué)思維的3個原因\h技術(shù)領(lǐng)域的“生物學(xué)家”\h當(dāng)物理學(xué)遇見生物學(xué)\h復(fù)雜性科學(xué)的視角\h思維方式的進(jìn)化\h我們需要通才\h06\h生物學(xué)思維是理解復(fù)雜世界的一把金鑰匙認(rèn)識復(fù)雜系統(tǒng)的正確態(tài)度是:對于難以理解的事物,要努力克服我們的無知;一旦理解了某個事物,也不會認(rèn)為它是理所當(dāng)然的。謙卑之心,加上迭代的生物學(xué)思維,就是洞悉復(fù)雜世界的正確方式。\h不要被表象迷惑\h以欣慰感看待不理解的事物\h謙卑之心+迭代的生物學(xué)思維連接和反饋是復(fù)雜系統(tǒng)的典型標(biāo)志。技術(shù)系統(tǒng)已經(jīng)變得如此復(fù)雜,以致每個專家都僅知道其中的一個部分,沒有人能夠完全理解整體。我們已經(jīng)從“啟蒙時代”邁進(jìn)了“糾纏時代”。1986年初的一個冬日,距離“挑戰(zhàn)者號”航天飛機(jī)爆炸事件發(fā)生還不到一個月,著名物理學(xué)家理查德·費(fèi)曼(RichardFeynman)在調(diào)查委員會的聽證會上公開了一份調(diào)查報告。\h\h[1]費(fèi)曼非常冷靜地揭示了導(dǎo)致“挑戰(zhàn)者號”航天飛機(jī)起飛后不久就爆炸解體的原因。問題出在用于密封固體火箭助推器各部分之間縫隙的O型圈上。O型圈其實(shí)是一小片橡膠,放入冰水后會失去彈性,也就是說,這種小部件對溫度變化非常敏感,所以無法保證密封的牢固性。這些O型圈很可能就是這起導(dǎo)致7名機(jī)組人員喪生災(zāi)難的罪魁禍?zhǔn)住Ec此事件如出一轍的是發(fā)生在汽車業(yè)中的另一事件。2007年的一天,瓊·布考特(JeanBookout)駕駛著一輛生產(chǎn)于2005年的豐田凱美瑞,行駛在俄克拉何馬州的一個小鎮(zhèn)上。突然,她的車開始加速,并失去了控制。\h\h[2]她踩下了剎車,但沒有任何作用;她拉起了緊急制動器,輪胎在道路上留下了觸目驚心的摩擦痕跡。然而,這些努力都無濟(jì)于事,汽車最終狠狠地撞到了路堤上。布考特受了重傷,車上的乘客、她的朋友芭芭拉·施瓦茨(BarbaraSchwarz)則不幸遇難。并不是只有布考特一個人遇到這種怪事。事實(shí)上,多年以來,在豐田公司生產(chǎn)的汽車中,有多種型號的汽車都曾出現(xiàn)過此類奇怪且危險的故障:汽車在行駛過程中會“違背”駕駛員的意愿保持勻速,甚至還會“擅自”加速。這種意外加速事故已經(jīng)導(dǎo)致多人傷亡。業(yè)內(nèi)專家分析出了這類事故的幾個導(dǎo)火索:駕駛員操作失誤,墊氈頂住了油門加速踏板,油門加速踏板黏滯未能及時復(fù)原,等等。但是,這些原因并不能解釋所有的意外加速事故。在受事故影響的車型中,因?yàn)閴|氈或油門加速踏板不合格而被召回的并不多,而且我們也沒有理由認(rèn)為,豐田汽車的駕駛員比其他汽車的駕駛員更容易犯錯。無奈之下,豐田公司請來了嵌入式軟件專家邁克爾·巴爾(MichaelBarr)追查原因,并向他開放了專有數(shù)據(jù)庫以及向來嚴(yán)格保密的軟件代碼。在6位經(jīng)驗(yàn)豐富的工程師的協(xié)助下,巴爾幾經(jīng)周折終于找到了問題的根源。與此同時,計(jì)算機(jī)科學(xué)家菲利普·庫普曼(PhilipKoopman)也通過對公開程序的仔細(xì)分析,找到了事故發(fā)生的大致原因。\h\h[3]兩位專家都認(rèn)為,對于意外加速事故的發(fā)生,豐田發(fā)動機(jī)軟件系統(tǒng)的過度龐大和極度復(fù)雜,以及糟糕的設(shè)計(jì)都應(yīng)該承擔(dān)相應(yīng)的責(zé)任。我們無法將事故責(zé)任明確地歸咎于某個設(shè)計(jì)或部件出了錯,畢竟,這里面存在的問題盤根錯節(jié),而且這些問題還會引發(fā)汽車軟件系統(tǒng)與外部機(jī)電系統(tǒng)之間的巴洛克式結(jié)構(gòu)(baroquestructure)的大規(guī)模交互。無論是單獨(dú)看來,還是整體看來,這個系統(tǒng)的極度復(fù)雜性讓我們很難理解這些相互作用、相互影響的部件的深層問題和缺陷。有依據(jù)表明,豐田公司本來完全沒有必要搞出一個如此復(fù)雜的系統(tǒng),至少在現(xiàn)有情況下,不必如此復(fù)雜,它們顯然不夠小心。\h\h[4]這個“診斷結(jié)果”與我們熟悉的“技術(shù)失敗”并無二致。費(fèi)曼找到了導(dǎo)致“挑戰(zhàn)者號”航天飛機(jī)爆炸的單一原因,有所不同的是,我們無法確定導(dǎo)致豐田汽車出現(xiàn)事故的單一原因。無論如何,如果部件堆積得越來越多,設(shè)計(jì)也越來越復(fù)雜,那么災(zāi)難便只會越來越多。事實(shí)上,即使找到了導(dǎo)致失敗的單一原因,但在極度復(fù)雜的系統(tǒng)中,那很可能也只是掩人耳目的東西罷了。1996年,阿麗亞娜5型火箭在發(fā)射升空39秒后爆炸,火箭上搭載的4顆衛(wèi)星均毀于一旦。\h\h[5]事故分析表明,發(fā)生爆炸的原因是,火箭在新環(huán)境下使用了一些較為陳舊的軟件代碼。但是,根據(jù)霍默-狄克遜教授的說法,沒有任何一個承包商被追責(zé)。這次爆炸并不是某個決策失誤所致,而是整個發(fā)射系統(tǒng)的極度復(fù)雜性所致。其他類似的災(zāi)難還有三哩島核電站事故,\h\h[6]盡管有關(guān)方面也找到了一個原因,但是究其根本,仍然得歸咎于系統(tǒng)的龐大和極度復(fù)雜,而非某個部件或決策出了錯。\h\h[7]當(dāng)我們試圖將這種復(fù)雜性拆解開來時,難免會陷入“挑戰(zhàn)者號”航天飛機(jī)的主流事故中。\h\h[8]盡管航天飛機(jī)的發(fā)射和操作是一項(xiàng)異常復(fù)雜的工作,但是很多人都相信,只要徹底核查復(fù)雜系統(tǒng),將其分解開來,確定每個部件如何工作,在什么情況下會出故障,我們就應(yīng)該能夠理解它們。這無疑是一種過于自信的想法,其根源在于:人類的思想擁有無限潛力。人們總認(rèn)為,只要足夠努力,就可以完美地理解身邊的一切事物,特別是人類自己所構(gòu)建的那些東西。我們觀察到,這種情緒在所謂的輝格黨式(Whiggish)的進(jìn)步觀念中體現(xiàn)得最為充分。正如科學(xué)作家菲利普·鮑爾(PhilipBall)所描述的那樣,這種觀念認(rèn)為人類已經(jīng)踏上了“從無知和迷信的黑暗時代走向理性時代的勝利之旅”\h\h[9]。在科學(xué)界和技術(shù)愛好者的圈子中,這個觀念根深蒂固,正如歷史學(xué)家伊恩·畢考克(IanBeacock)在文章中所寫:“科技行業(yè)講述了人類‘?dāng)?shù)字時代’的崛起,那是一個輝格黨式的故事:陰郁昏暗的時代行將結(jié)束,人類將迎來一個更加美好的未來,一個更幸福、更開放的世界。在那個美麗新世界中,一切都是測量好的、經(jīng)過精心設(shè)計(jì)的,并達(dá)到了最高效的完美狀態(tài)?!盶h\h[10]當(dāng)然,堅(jiān)持這種觀點(diǎn)的人還認(rèn)為,效率和生產(chǎn)力的提高,促使人們?yōu)榱藢?shí)現(xiàn)某個令人振奮的目標(biāo),而持續(xù)關(guān)注和理解自身所構(gòu)建的現(xiàn)代工程。這種輝格黨式的觀點(diǎn)與社會學(xué)家馬克斯·韋伯(MaxWeber)所描述的“現(xiàn)代思維模式”有關(guān):在一個“不再擁有幻想的世界”中,人們會產(chǎn)生一種感覺,也就是“在原則上,我們可以通過運(yùn)算來掌握所有事物”。\h\h[11]然而,這種理解復(fù)雜性的方法如今已經(jīng)失效了。是的,我們正處在一個新時代,正在建立一個新系統(tǒng),而這個系統(tǒng)是無法從整體上被掌握的\h\h[12],或者說,無論對誰而言,它都太復(fù)雜了。我們發(fā)現(xiàn),在分析豐田汽車意外加速事故時,無論是不是專家,上述那種陳舊的思維模式都不足以應(yīng)對其復(fù)雜性了。不僅如此,這些情況不只附著在我們?nèi)笔У慕?jīng)驗(yàn)中,它們已充斥了我們的整個生活。什么是復(fù)雜系統(tǒng)在這里,我們必須先花些時間討論一下“龐雜”(complicated)和“復(fù)雜”(complex)系統(tǒng)的含義。\h\h[13]盡管我在文中,以及書名中使用這兩個術(shù)語時所指含義與它們在口語中的意義大致相同,但實(shí)際上,它們的準(zhǔn)確含義和日常意義存在著一些重要區(qū)別。請想象一下,有許多水上浮標(biāo)被綁在一起,漂浮在水面。\h\h[14]當(dāng)一艘船經(jīng)過時,其尾流會形成一個個小波浪,從而使浮標(biāo)一個個動起來。但是,每個浮標(biāo)都無法單獨(dú)“行動”。因?yàn)槊恳粋€浮標(biāo)都通過繩索連接著不同重量和大小的其他浮標(biāo),所以任何一只浮標(biāo)的行動,都會帶動其他浮標(biāo)產(chǎn)生相應(yīng)的行動。這些行動還可能會引發(fā)意想不到的反饋過程,也就是說,浮標(biāo)的行動會間接地影響到自身。于是,船的簡單尾流,在這個復(fù)雜的浮標(biāo)網(wǎng)絡(luò)中引發(fā)了大量級聯(lián)式(cascade)的行動。如果船以其他方式駛過,比如以另一種速度或角度駛過,那么浮標(biāo)的行動可能會完全不同。接下來再想象一下,人們把這些浮標(biāo)從水中撈了出來,扔在了碼頭上。它們可能被排列得非常巧妙,卻很難描述清楚,我們需要頗多文字才能講明白它們之間的相對位置,或許還需要附上一些圖表,以便日后能復(fù)制出同樣的排列方法。但是,無論被排列成什么樣,這里也不會有趣事發(fā)生。因?yàn)樵谶@個精巧的網(wǎng)絡(luò)中不存在級聯(lián)效應(yīng),也不存在反饋過程。說到底,只不過是一堆可以漂浮的東西被放在了碼頭上。水中的浮標(biāo)形成了一個復(fù)雜的系統(tǒng)。那么碼頭上的浮標(biāo)呢?它們的排列也許看上去很巧妙,但其所構(gòu)成的系統(tǒng)最多只能說是龐雜的。任何一個系統(tǒng),要想成為一個復(fù)雜的系統(tǒng),僅僅包含很多組成部分是不夠的,各部分之間還必須相互關(guān)聯(lián),并在“嘈雜的舞蹈”中相互作用才行。在這種情況下,我們可以觀察到某些行為特征,那是復(fù)雜系統(tǒng)的標(biāo)志:微小的變化通過網(wǎng)絡(luò)被級聯(lián)式放大,并引發(fā)反饋過程,同時敏感地依賴于系統(tǒng)的初始狀態(tài)。這些特征,與其他一些特征一起,使系統(tǒng)從“龐雜的”變成了“復(fù)雜的”。對于這種區(qū)別,還可以從另一個角度來思考:生物在活著的時候是復(fù)雜的,而死后最多只能說是龐雜的。死去的動物雖不失其復(fù)雜特性,但其內(nèi)部卻沒有任何過程在發(fā)生:整個生命網(wǎng)絡(luò),比如血液循環(huán)系統(tǒng)、新陳代謝系統(tǒng)、神經(jīng)系統(tǒng)等,都很“安靜”。生命是運(yùn)動和相互作用的“狂暴之流”,極其復(fù)雜精妙,在有生命的機(jī)體中,再小的變化都會被級聯(lián)式放大,進(jìn)而引發(fā)大量行為。另外,即使一個系統(tǒng)是動態(tài)的,比如浮在水中的一堆沒有被連接起來的浮標(biāo),因?yàn)槠鋬?nèi)部不存在相互聯(lián)系,沒有反饋的可能性以及其他類似的屬性,所以我們也只能稱其是“龐雜的”,而非“復(fù)雜的”。如果將技術(shù)定義為人類為特定目的而設(shè)計(jì)和構(gòu)建的各種類型的系統(tǒng),那么就不難注意到,當(dāng)今最先進(jìn)的技術(shù)幾乎都是復(fù)雜的系統(tǒng):動態(tài)、功能復(fù)雜、規(guī)模龐大,而且擁有近乎有機(jī)生命體般的復(fù)雜性。這些復(fù)雜的系統(tǒng)遍布我們周圍,從汽車軟件到電腦設(shè)備,再到城市基礎(chǔ)設(shè)施。\h\h[15]那些龐大的、高度互聯(lián)的軟件,其規(guī)模足以與百科全書相比。據(jù)估計(jì),微軟的辦公軟件就有數(shù)千萬行計(jì)算機(jī)程序代碼。\h\h[16]美國的公路系統(tǒng)有30萬個交叉路口,每一個路口都有交通信號燈。\h\h[17]這是一個覆蓋全美的動態(tài)交通網(wǎng)絡(luò),所包含的自動糾錯系統(tǒng)先進(jìn)得令人難以置信,盡管我們會因?yàn)樗?jīng)常出問題而嘲笑它愚蠢得令人絕望。該系統(tǒng)的背后是PB級數(shù)據(jù)(1PB等于100萬個GB)和復(fù)雜的概率模型。\h\h[18]隨著時間的推移,法律體系也變得越來越復(fù)雜。截至2014年,美國聯(lián)邦稅法的總頁數(shù)已經(jīng)超過了74000頁。\h\h[19]這個龐大的法律網(wǎng)絡(luò)非常復(fù)雜,擁有無數(shù)個關(guān)聯(lián)點(diǎn),會對納稅人產(chǎn)生級聯(lián)式的影響,可以說幾乎沒有人能從整體上完全理解其功能。在我們的生活中,復(fù)雜的技術(shù)系統(tǒng)無處不在,這通常是一件好事。正是在這種龐大的復(fù)雜性中,我們發(fā)現(xiàn)了驚人的彈性,也就是復(fù)原力。這些系統(tǒng)通常擁有許多功能各異的工具箱和故障保險箱,可以幫助人們完成任何“想要”完成的事情。這些系統(tǒng)也為我們提供了連古代皇室都無法想象的生活:免除了辛苦的重復(fù)勞動;把水電送到家中;讓我們一年到頭都可以生活在舒適的溫度下;還能幫助我們快速地傳遞信息。那么,我們該如何理解復(fù)雜系統(tǒng),而這又意味著什么呢?無論是分析一個現(xiàn)象,還是了解一個系統(tǒng),都不是非此即彼的二元選擇。這種理解其實(shí)是一條內(nèi)涵豐富的光譜。\h\h[20]換句話說,你可以只從整體上去理解一個系統(tǒng),掌握它的全局情況,而不一定非得理解其各個組成部分的細(xì)節(jié)情況;你也可以只理解它的所有組成部分,而不太關(guān)注其整體功能;你還可以只了解各部分是如何相互關(guān)聯(lián)的,或者只探究這種關(guān)聯(lián)的最終效應(yīng)。此外,所有的“理解”都會涉及一些具體活動:描述事物是如何運(yùn)行的,在不同層面上預(yù)測其未來的行為,并在時間充足和資源豐富的情況下通過構(gòu)建模型來復(fù)制它?;氐缴衔闹杏嘘P(guān)浮標(biāo)的例子。你或許只能了解到兩三個被連接在一起的浮標(biāo)的行為細(xì)節(jié),甚至只能搞清楚一個浮標(biāo)的行為,而無法描述所有浮標(biāo)所組成的巨大網(wǎng)絡(luò)的整體行為;或者,你能夠描述浮標(biāo)的整體運(yùn)動,卻無法預(yù)測它們各自的行為。對于軟件,你或許可以很好地理解給定程序中的若干模塊,例如計(jì)算圓周率值的子程序,或是對一組數(shù)字進(jìn)行排序的子程序,但你卻不一定能理解它們是如何一起發(fā)揮作用的。通常,我們只能把握上述“理解”中的一部分,而非全部。另外,“理解”也不是固定不變的,它可以通過訓(xùn)練來改進(jìn)。從來沒有下過國際象棋的人,在看到棋局的時候,可能無法將勢均力敵的平局和王已經(jīng)受到致命威脅的殘局區(qū)別開來。而接受過一定訓(xùn)練的初學(xué)者和中段棋手,均能掌握下棋的基本模式,并判斷棋局的基本形勢和大致走向。國際象棋大師則能一眼看透當(dāng)前的形勢和接下來可能會出現(xiàn)的演變,而后評估棋局并給出可靠的走法,同時彌補(bǔ)潛在的弱點(diǎn)。經(jīng)過充分訓(xùn)練后,棋手在看到一盤棋時,眼中所見的就不再是一排排、一列列的棋子了,而是諸如“白棋三步就可將死對方”之類的棋局。因此,學(xué)習(xí)專業(yè)知識并接受一定的訓(xùn)練確實(shí)可以從根本上改變我們對世界的看法和理解方式。對于人類構(gòu)建的系統(tǒng)而言,亦是如此。計(jì)算機(jī)代碼既可能是難懂的天書,也可能是解決難題的優(yōu)雅方案,這一切都取決于你到底了解些什么。不過,當(dāng)我們無法完全理解它們時,就會遭到某種特定的失敗或打擊,也就是某種意想不到的結(jié)果。以空中交通預(yù)警防撞系統(tǒng)(TrafficAlertandCollisionAvoidanceSystem,TCAS)為例,人們創(chuàng)建這個系統(tǒng)的目的是防止飛機(jī)在空中相撞。這個系統(tǒng)會提醒飛機(jī)駕駛員注意潛在危險,并告之如何根據(jù)規(guī)則做出應(yīng)對。但是,幾十年來,這個系統(tǒng)的規(guī)則已經(jīng)變得極其復(fù)雜,復(fù)雜到全世界只有屈指可數(shù)的幾個人能夠真正了解它。每當(dāng)有人提出一項(xiàng)新的系統(tǒng)規(guī)則時,有關(guān)方面就會通過模擬實(shí)驗(yàn)來測試其效果。在若干次測試中,如果表現(xiàn)均能達(dá)到預(yù)期,新規(guī)則就會被批準(zhǔn)投入使用。盡管避免飛機(jī)相撞本就是一個復(fù)雜的挑戰(zhàn),但是從根本上來說,我們?yōu)榇硕⑵饋淼南到y(tǒng)已經(jīng)變得太過復(fù)雜了。不但一般人無法理解,即使是專家,有時候也會對系統(tǒng)在某些情況下所做出的反應(yīng)感到疑惑。當(dāng)結(jié)果出人意料時,就意味著我們對相關(guān)問題的理解還不夠充分,因而無法搞清楚這種結(jié)果從何而來。倘若只是視頻游戲中的一個錯誤,那倒也無傷大雅,甚至還能起到娛樂大眾的效果。然而,如果是極度復(fù)雜的社會保障系統(tǒng)發(fā)生了出人意料的狀況,我們肯定就無心娛樂了。這些復(fù)雜的系統(tǒng)可能是為我們提供水電的基礎(chǔ)設(shè)施,也可能是執(zhí)行金融交易的軟件,還可能是防止飛機(jī)相撞的程序。在這種時候,理解是否到位就成了一個生死攸關(guān)的問題。每個人理解世界的能力天生就有所不同。天才擁有常人難以企及的直覺,他們的跳躍性思維可能遠(yuǎn)遠(yuǎn)超出了常人所能理解的范疇。但是,人類的認(rèn)知能力終歸是有限的。隨著時間的流逝,我們所構(gòu)建的各種技術(shù)系統(tǒng)變得越來越復(fù)雜,系統(tǒng)之間的關(guān)聯(lián)性也變得越來越強(qiáng),越來越難以理解。無論人類有多聰明,記憶力有多強(qiáng),都無濟(jì)于事,因?yàn)檫@些系統(tǒng)的構(gòu)建方式與人類的思維方式不一樣。人類不具備同時應(yīng)對數(shù)百萬個組成部分及其之間的大量交互,并將所有結(jié)果都記在腦袋中的能力。我們的大腦會“嚴(yán)重超載”,繼而宣告失敗。從“啟蒙時代”到“糾纏時代”在當(dāng)今這個機(jī)器時代,非技術(shù)專家在試圖理解技術(shù)時,偶爾會訴諸迷信或某種一廂情愿的觀點(diǎn)。通常來說,在一個家庭中,總會有一個人會因計(jì)算機(jī)或某種機(jī)器無法正常運(yùn)行而受到指責(zé),在其他人看來,他只是用手碰了一下就把事情搞砸了。有時候,甚至只要他在場,人們就會認(rèn)定他是導(dǎo)致某種技術(shù)無法正常發(fā)揮作用的原因。例如,一個大學(xué)生放暑假回到家,偏巧打印機(jī)壞了;或者父母來訪,電腦鼠標(biāo)就失靈了。反之亦然。一個你無法解決的問題,別人卻能輕松解決。你將某個出了故障的設(shè)備交給技術(shù)人員維修,可是一到他們手上,故障就消失得無影無蹤,而當(dāng)你把設(shè)備帶回家后,卻發(fā)現(xiàn)它仍然無法使用。在缺乏專業(yè)技術(shù)知識的外行人看來,機(jī)器的內(nèi)部工作原理相當(dāng)神秘。如果我們只是這些系統(tǒng)的使用者,那么不知其詳也并無大礙。當(dāng)機(jī)器出現(xiàn)故障時,我們可能會半真半假地認(rèn)為有人正在對機(jī)器“發(fā)功”,對它施加了不利影響。當(dāng)然,不管有沒有做出這樣的假設(shè),至少我們會很自然地相信,肯定有某個專家知道到底是怎么回事,比如“主板燒了”,于是我們便將那個神秘的搗蛋鬼因素拋之腦后。然而,持有這種“迷信”觀念的,早已不再僅限于普通人了,事實(shí)上,就連技術(shù)開發(fā)者也開始這樣想了。美國計(jì)算機(jī)工程師李·費(fèi)爾森施泰因(LeeFelsenstein)講述了一個發(fā)生在某位工程經(jīng)理身上的故事:在對軟件進(jìn)行展示的時候,那位工程經(jīng)理不得不選擇回避,因?yàn)橹灰趫觯浖蜁\(yùn)行失常。軟件工程師們完全搞不清楚為什么會這樣,總之只要這位經(jīng)理在場,事情就會變糟。\h\h[21]費(fèi)爾森施泰因指出,這種無法通過運(yùn)算來解釋的失敗“已經(jīng)落入形而上學(xué)的領(lǐng)域”。工程師們不明就里,下意識地把思考點(diǎn)放在了“存在問題”這個層面上,并走上了哲學(xué)思考之路。當(dāng)然,他們并不孤單。計(jì)算機(jī)科學(xué)家杰勒德·奧爾茨曼(GerardHolzmann)也有同樣的感受:大型的、復(fù)雜的代碼總會包含一些不祥的“暗碼”(darkcode)\h\h(1)。沒有人能完全理解這種代碼,它的存在也沒有明確的目的。然而,想要讓應(yīng)用程序按照預(yù)期正常地運(yùn)行,這種代碼又是不可或缺的。你不想去碰它,所以會傾向于繞過它。暗碼是會逆轉(zhuǎn)的。應(yīng)用程序具有防止實(shí)際代碼被追溯的功能,它會莫名其妙地做出一些程式之外的事。\h\h[22]在司法領(lǐng)域中也存在類似的狀況。根據(jù)律師兼作家菲利普·K.霍華德(PhilipK.Howard)的說法,我們目前正處在這樣的境況中:“現(xiàn)代法律的叢林已經(jīng)太密集了,成了不可知之境。”\h\h[23]在技術(shù)領(lǐng)域,這樣的例子顯然更多,甚至不需要到最前沿去找。正如作家奎因·諾頓(QuinnNorton)所指出的那樣,即使是功能平庸的家用臺式電腦,也是“非常復(fù)雜的,復(fù)雜到地球上的任何人都不知道它在做什么、怎么做”。\h\h[24]近幾十年來,在人類一手打造的“創(chuàng)世界”中,異常龐雜、難以理解的事物越來越多。事實(shí)上,即使是這些系統(tǒng)的創(chuàng)造者也常常一頭霧水。美國政治理論家和技術(shù)哲學(xué)家蘭登·溫納(LangdonWinner)在其著作《自主的技術(shù)》(AutonomousTechnology)中指出,英國著名小說家和政治家赫伯特·喬治·威爾斯(H.G.Wells)晚年提出的那個觀點(diǎn)是值得相信的:“人類的思維已經(jīng)無法應(yīng)對它自己所創(chuàng)造的環(huán)境了?!盶h\h[25]威爾斯早在1945年就得出了這個結(jié)論,不過,他當(dāng)時討論的主題是“人類的組織和社會本身”。近年來,這個問題變得愈加尖銳,盡管技術(shù)已經(jīng)發(fā)展到當(dāng)年的威爾斯完全想象不到的水平。計(jì)算機(jī)科學(xué)家丹尼爾·希利斯(DanielHillis)認(rèn)為,我們的世界已經(jīng)從“啟蒙”(enlightenment)轉(zhuǎn)向了“糾纏”(entanglement),至少技術(shù)領(lǐng)域肯定如此:“技術(shù)已經(jīng)變得如此復(fù)雜,以致我們無法完全理解它,也無法完全控制它。我們已經(jīng)進(jìn)入了‘糾纏時代’……每個專家都只了解難題的片段,卻無法把握難題的整體?!盶h\h[26]就連作為技術(shù)創(chuàng)造者的專家都無法完全了解技術(shù)了。抽象的局限在創(chuàng)建復(fù)雜的技術(shù)時,最強(qiáng)大的方法就是人們常說的“抽象”(abstraction)。從根本上說,抽象其實(shí)就是:將系統(tǒng)中某些不必要的組件細(xì)節(jié)隱藏起來,同時保留組件與系統(tǒng)進(jìn)行高效交互的方式和能力。例如,我在編寫計(jì)算機(jī)程序時,不必再用機(jī)器代碼語言來編程,而可以使用C語言或其他類似的語言。機(jī)器代碼語言是一種二進(jìn)制代碼,此前,每臺特定的計(jì)算機(jī)都需要用這種語言來設(shè)置指令?,F(xiàn)在,我寫出來的程序不僅易于閱讀,還可以轉(zhuǎn)換為機(jī)器代碼語言。在很多情況下,我甚至不需要知道程序?qū)谀姆N特定的機(jī)器上運(yùn)行,那些與機(jī)器有著更深層級交互的其他程序自然會“考慮”細(xì)節(jié)。換句話說,這些細(xì)節(jié)在編程時已經(jīng)被我抽象化了。這種抽象方法在技術(shù)中無處不在。在與某個界面友好的網(wǎng)站進(jìn)行互動時,對于網(wǎng)站的內(nèi)部技術(shù)細(xì)節(jié),我們并不關(guān)心;在將烤面包機(jī)的插頭插入某個插孔中時,我們也不需要知道電力是哪里輸送過來的,或是發(fā)電廠位于什么地方。這就好比我們無須知道搜索引擎是如何給出具體結(jié)果的。只要接口或界面是合乎邏輯的、可以使用的,那么我們就只需要關(guān)注正在構(gòu)建或修復(fù)的細(xì)節(jié),而不用擔(dān)心接口和界面背后的一切復(fù)雜問題。利用這種抽象方法,我們可以在一種技術(shù)的基礎(chǔ)上構(gòu)建出另一種技術(shù),也就是直接利用他人創(chuàng)建的技術(shù),而無須了解其內(nèi)部細(xì)節(jié)。如果你是使用統(tǒng)計(jì)軟件包分析數(shù)據(jù)集的財(cái)務(wù)分析師,或是使用預(yù)設(shè)代碼創(chuàng)作有趣動畫的應(yīng)用程序開發(fā)者,那么你無疑已經(jīng)在使用抽象方法了。抽象給人們帶來的最大好處是專業(yè)化。即使系統(tǒng)擁有數(shù)百萬量級的交互,系統(tǒng)的構(gòu)建者和維護(hù)者也不是必須知道它到底是如何工作的。抽象使他們只需了解自身關(guān)注的某個具體部分,而其他部分的細(xì)節(jié)會被再次抽象化。然而在這個糾纏時代,抽象方法也可能會崩潰。事實(shí)上,這種情況出現(xiàn)得越來越頻繁。在一個系統(tǒng)中,原本被設(shè)計(jì)者和構(gòu)建者屏蔽的各個組成部分,正在越來越多地以意想不到的方式發(fā)生碰撞。這一點(diǎn)在金融領(lǐng)域顯得尤為突出。在當(dāng)今的金融市場上,“參與者”早就不僅限于人類了,大量以各種信息為基礎(chǔ)的計(jì)算機(jī)程序也參與了交易,而且速度比人類手動執(zhí)行快了無數(shù)倍。這些計(jì)算機(jī)程序以異常復(fù)雜的方式相互聯(lián)系著,并通過巨大的交易網(wǎng)絡(luò)對決策進(jìn)行級聯(lián)式放大和傳播。那么,它們究竟是如何做出交易決策的呢?某些計(jì)算機(jī)程序能從海量的數(shù)據(jù)中總結(jié)出有意義的參數(shù)。結(jié)果可能會非常極端。2010年5月6日,全球金融市場出現(xiàn)了閃電崩盤,股市出現(xiàn)了大規(guī)模的、非常迅速的巨幅震蕩。\h\h[27]許多上市公司的市值都因此遭受了重創(chuàng),不過不久之后又都基本重回原位。這次閃電崩盤涉及一系列交易算法和實(shí)施細(xì)則,這些算法和細(xì)則以意想不到的方式進(jìn)行了交互,在短時間內(nèi)便造成數(shù)十億美元的損失。盡管很復(fù)雜,但這些系統(tǒng)并非處于真空地帶,它們是更高層級的技術(shù)生態(tài)系統(tǒng)的一部分,而這個技術(shù)生態(tài)系統(tǒng)決定了每種證券或商品的交易時段。金融系統(tǒng)還會受到一系列法律法規(guī)的約束。當(dāng)然,法律法規(guī)本身即是一個系統(tǒng),而且是一個龐大且復(fù)雜的系統(tǒng)。不同法律之間存在相互依賴、相互援引的關(guān)系,且聯(lián)系方式時而精確、時而混沌,令人難以琢磨。此外,這些交易所依賴的基礎(chǔ)設(shè)備,都建立在持續(xù)發(fā)展了數(shù)十年的技術(shù)之上。這樣一來,整個系統(tǒng)就成了“新”與“舊”的組合:在這個系統(tǒng)中,古老的依靠人工喊價的實(shí)物交易與通過光纖傳輸完成的電子交易共存。我們在構(gòu)建能夠?qū)崿F(xiàn)高效交易的計(jì)算機(jī)程序時,不僅要考慮日新月異的計(jì)算機(jī)科學(xué)、繁雜的金融工具和深不可測的法律法規(guī)等,還要深入了解物理學(xué)。因?yàn)椤肮庠诓煌牧现械膫鬏斔俣取边@一點(diǎn)在交易中至關(guān)重要。因此,我們說,地球上沒有人能完全理解金融世界中相互關(guān)聯(lián)的所有系統(tǒng),甚至沒有人能完全理解其中任何一個系統(tǒng)。當(dāng)然,在很多情況下,系統(tǒng)的使用者確實(shí)只需要很好地理解系統(tǒng)的一小部分,甚至僅是最表層的一部分就可以了。在一家金融公司里,程序員可能只需要知道如何維護(hù)交易系統(tǒng),而不需要了解計(jì)算機(jī)在物理層面上的基礎(chǔ)設(shè)置;有的人可能只會關(guān)注某個特定的軟件,這些軟件可以對公司外部的消息進(jìn)行過濾,然后將部分信息傳輸?shù)焦緝?nèi)部進(jìn)行運(yùn)算,至于其他大部分信息,只作大致了解即可;為該公司工作的律師則需要了解與各種交易有關(guān)的法律條文,但不需要知道軟件、服務(wù)器或光纖的任何細(xì)節(jié)。在這里,抽象方法給我們帶來了很大的便利。在大多數(shù)情況下,對某個事物“足夠”了解,看起來已經(jīng)很不錯了,\h\h[28]但是,當(dāng)我們構(gòu)建出越來越復(fù)雜的系統(tǒng)之后,在系統(tǒng)及其子系統(tǒng)運(yùn)行的不同層級之間就會越來越頻繁地出現(xiàn)跨界交互現(xiàn)象。尤其是隨著事物之間的相互聯(lián)系不斷加強(qiáng),我們愈加難以判斷原有的那些粗略的、不完整的理解是不是仍然夠用。在糾纏中,事物會在不同的抽象層級上相互碰撞,以各種令人無法想象的方式進(jìn)行交互。在充滿交互的網(wǎng)絡(luò)中,常常會出現(xiàn)被復(fù)雜性科學(xué)反復(fù)提及的“涌現(xiàn)”(emergence),也就是某種層次上的交互最終導(dǎo)致其他層次上的交互出現(xiàn)了預(yù)料之外的現(xiàn)象。涌現(xiàn),在所有類型的復(fù)雜系統(tǒng)中都很常見。例如,昆蟲的集體飛行便是一種涌現(xiàn)行為。另外,在金融系統(tǒng)中,涌現(xiàn)也很常見。金融系統(tǒng)的運(yùn)行所涉及的因素多種多樣,上至全球范圍內(nèi)的算法交互,下至每條網(wǎng)絡(luò)線的傳輸速度。要想真正搞清楚哪些細(xì)節(jié)應(yīng)該被抽象化,是一個太過繁雜的問題。當(dāng)系統(tǒng)內(nèi)部深處的某些微小細(xì)節(jié)像“微型造物主”一樣崛起,并開始破壞技術(shù)系統(tǒng)的其他組成部分時,我們就不能只對系統(tǒng)進(jìn)行局部理解了。當(dāng)系統(tǒng)處于糾纏之中時,其內(nèi)部各部分之間的交互會陷入混亂,以往幫助我們管理復(fù)雜性的等級結(jié)構(gòu)和抽象方法,都會迅速地分崩離析。那么,在可見的未來中,人類是否有希望找到擺脫這種混亂的辦法,并讓世界重新回到可管理的狀態(tài)呢?或者,我們注定要帶著深切的、無法言喻的恐懼感來面對這些不斷增殖的系統(tǒng)?在大多數(shù)人看來,不完全了解那些技術(shù)系統(tǒng),不知道所在城市的基礎(chǔ)設(shè)施細(xì)節(jié),不理解蘋果手機(jī)的硬件如何驗(yàn)證指紋,不清楚法律法規(guī)如何促進(jìn)國際貿(mào)易,其實(shí)并沒有什么關(guān)系。人們簡單地認(rèn)為,對于那些復(fù)雜的系統(tǒng),只需要明白如何使用即可,它們的具體機(jī)制是什么則無關(guān)緊要。不過,對于一個新工具的工作原理,有人搞不懂是一回事,所有人都搞不懂又是另一回事。許多人還在自欺欺人地以為,專家們終會把我們從這種龐大的復(fù)雜性中拯救出來,因?yàn)樗麄兝斫馕覀兯焕斫獾臇|西。但是事實(shí)并非如此,專家也不一定理解,依賴專家的時代早就一去不復(fù)返了。我們過去所采用的用以理解這些系統(tǒng)的思維方式,也就是找到“挑戰(zhàn)者號”航天飛機(jī)失事原因的那種思維方式,現(xiàn)在已經(jīng)完全失效了。這很令人絕望。糾纏的世界并非遠(yuǎn)在天邊,而是近在眼前。每個人都需要用新的思維方式去理解技術(shù),甚至是那些我們輕松地將理解外包給專家的技術(shù)。雖然對人類而言糾纏時代的到來是一場嚴(yán)峻的挑戰(zhàn),但我仍然滿懷希望,并堅(jiān)信:我們定能學(xué)會如何處理這些系統(tǒng),至少在某種程度上。但是,要想真正理解這個由人類一手創(chuàng)造的時代,我們就需要先退而求其次,將迫使我們陷入復(fù)雜性、阻礙我們理解復(fù)雜性的各種因素找出來。技術(shù)系統(tǒng)變得越來越復(fù)雜的主要原因是“吸積”和“交互”。隨著時間的推移,系統(tǒng)中不斷加入更多的組成部分,部分之間也增加了越來越多的連接?!氨仨毺幚淼睦馇闆r”和“普遍的稀有事物”也讓技術(shù)系統(tǒng)變得愈加復(fù)雜。要想使用互聯(lián)網(wǎng),我們就必須忍受或是間接地忍受雜亂無章、東拼西湊的網(wǎng)絡(luò)世界。真是一團(tuán)糟!互聯(lián)網(wǎng)的第一步是在20世紀(jì)60年代邁出的。\h\h[1]當(dāng)時,有人創(chuàng)造出了一個巧妙的設(shè)計(jì),使人們能夠在不同的地方通過計(jì)算機(jī)傳遞信息包。于是,小網(wǎng)絡(luò)被相互關(guān)聯(lián)起來,構(gòu)成了大網(wǎng)絡(luò)。同時,為了高效地傳輸信息,人們還開發(fā)出了各種各樣的協(xié)議。到了今天,互聯(lián)網(wǎng)的應(yīng)用已與其最初出現(xiàn)時大不相同,以安全問題為例?;ヂ?lián)網(wǎng)原本是研究者以溝通為目的開發(fā)出來的系統(tǒng),對于要求高效和安全的大規(guī)模商業(yè)交易而言,并不理想。為了彌補(bǔ)這種缺陷,促進(jìn)商業(yè)交易,人們在原有的互聯(lián)網(wǎng)基礎(chǔ)設(shè)置上開發(fā)出了很多不同的機(jī)制,包括加密和解密信息的方法,以數(shù)字方式轉(zhuǎn)移資金的規(guī)則,等等。令人高興的是,這個系統(tǒng)確實(shí)變得有用了。然而,在網(wǎng)站的用戶界面背后,其實(shí)潛藏著一個奇怪且復(fù)雜的結(jié)構(gòu)。有時候,作為用戶的我們也能直接窺見些許混亂的跡象,例如,網(wǎng)頁上彈出的安全證書警告。是的,很多事物都是這樣,有用,但是遠(yuǎn)遠(yuǎn)稱不上優(yōu)雅。與此類似,開發(fā)網(wǎng)站所用的HTML語言,在設(shè)計(jì)之初,也并非是為了服務(wù)諸如谷歌在線辦公軟件(GoogleDocs)這類基于全球廣域網(wǎng)(Web)的交互式應(yīng)用程序。現(xiàn)在,這類應(yīng)用程序已經(jīng)投入運(yùn)行,但人們?nèi)匀辉诟冻龃鷥r:我們必須在一個簡單的系統(tǒng)上建造一棟非常宏偉的巴洛克式建筑。倘若你想一瞥這種復(fù)雜性的一角,只需查看一下谷歌主頁的源代碼就足夠了。雖然我們在瀏覽器中看到的網(wǎng)頁既簡潔又優(yōu)雅,但是潛藏在這個表象下的東西卻數(shù)不勝數(shù)。我上一次查看谷歌主頁的源代碼時,其字符數(shù)已超過了10萬個,如果完整地打印出來,將超過50頁紙!\h\h[2]再比如電子郵件。從表面上看,這是一個相對簡單的應(yīng)用程序,已經(jīng)發(fā)展了好幾十年。在其古老的原始結(jié)構(gòu)的基礎(chǔ)上,消息線程等各種新功能層出不窮。不過,網(wǎng)絡(luò)雜志《頁巖》(Slate)的互動編輯克里斯·柯克(ChrisKirk)在嘗試構(gòu)建自己的電子郵件客戶端程序之后指出:“雖然電子郵件的軟件時有創(chuàng)新,但這些創(chuàng)新都建立在過時的系統(tǒng)之上,如同狡猾的平衡術(shù),有時甚至相當(dāng)隨意,比如,將電子郵件恢復(fù)為最初形式,或是將它改頭換面。”\h\h[3]在計(jì)算機(jī)學(xué)和工程學(xué)中,有一個術(shù)語kluge,指的是拼湊起來的系統(tǒng),也就是將許多不同的東西混合在一起,以求解決問題的系統(tǒng)。這種系統(tǒng)肯定是不精致、不優(yōu)雅的,而且很多時候龐雜得毫無必要。雖然這種拼湊起來的系統(tǒng)是有效的,但遠(yuǎn)遠(yuǎn)稱不上完美。有些東西的第一代設(shè)計(jì)可能是相當(dāng)優(yōu)雅的,但是隨著時間的推移,它們的結(jié)構(gòu)變得越來越復(fù)雜,最終變成了雜亂的魯布·戈德堡(RubeGoldberg)式\h\h(2)的應(yīng)急之物。包括互聯(lián)網(wǎng)在內(nèi),在每一個技術(shù)領(lǐng)域中,都存在著這類拼湊起來的系統(tǒng),例如交通網(wǎng)絡(luò)和醫(yī)療設(shè)施。以家庭娛樂系統(tǒng)為例,它們雖然有用,但需要同時使用好幾個遙控器,以及一大團(tuán)亂麻般的電線、信號線和數(shù)據(jù)線。美國的法律體系也是個拼湊起來的系統(tǒng)。這是一個為了達(dá)到特定目的而被構(gòu)建出來的技術(shù)系統(tǒng),遠(yuǎn)遠(yuǎn)稱不上優(yōu)雅。就像計(jì)算機(jī)代碼是操作軟件的書面描述一樣,法律法規(guī)本質(zhì)上也是技術(shù)代碼的書面體現(xiàn)。\h\h[4]毫無疑問,《美利堅(jiān)合眾國憲法》是一部非常優(yōu)雅的文件,只用了寥寥數(shù)頁,就為代議制民主奠定了堅(jiān)實(shí)的基礎(chǔ)。當(dāng)然,憲法的確立并不是故事的結(jié)局。對聯(lián)邦法律具有指導(dǎo)意義的《美國法典》是在憲法的框架內(nèi)發(fā)展起來的。這些法律致力于闡明憲法的一般原則,以及對各種具體情況的處理準(zhǔn)則和方法。例如,《美利堅(jiān)合眾國憲法》只用一句話規(guī)定了國會有權(quán)建立公共郵政服務(wù)機(jī)構(gòu),而在《美國法典》中,有關(guān)這個政府職能的闡述多達(dá)500余頁。\h\h[5]此外,美國聯(lián)邦郵政法規(guī)還規(guī)定了從郵政局的職位設(shè)置到郵政資費(fèi)等各方面的所有細(xì)節(jié)??偠灾?,《美國法典》比《美利堅(jiān)合眾國憲法》要復(fù)雜得多。\h\h[6]事實(shí)上,《美國法典》的規(guī)模和互聯(lián)性仍在不斷增加,時至今日,其總字?jǐn)?shù)已經(jīng)超過了2200萬,內(nèi)部各章節(jié)之間的關(guān)聯(lián)點(diǎn)也已超過了8萬個。其實(shí),無論在什么地方,我們都可以觀察到,隨著時間的推移,各種系統(tǒng)的復(fù)雜性都出現(xiàn)了大規(guī)模增長。我們還發(fā)現(xiàn),一般來說,當(dāng)一個復(fù)雜的系統(tǒng)龐大到一定程度時,無論其具體形式如何,都會變成一個拼湊起來的系統(tǒng)。萊特兄弟于1903年制造的飛機(jī)是簡約主義的杰作\h\h[7],只有很少的幾個部件,載人后總重量僅為340千克;而到了今天,制造一架波音747-400飛機(jī)\h\h[8]需要用掉67000千克鋁材,600萬個獨(dú)立部件和275千米管線\h\h[9]。這是個普遍現(xiàn)象,在過去的200年里,我們制造出來的機(jī)器所包含的零件數(shù)量一直在大幅增加。那么,對于影響著我們生活方方面面的,現(xiàn)代技術(shù)系統(tǒng)中的軟件來說,情況又如何呢?衡量軟件復(fù)雜性的常用指標(biāo)之一是程序代碼的行數(shù)。據(jù)估計(jì),微軟操作系統(tǒng)的源代碼行數(shù)近10年增長了10倍。\h\h[10]Photoshop的源代碼行數(shù)在過去20年里爆炸式增長,幾乎是1990年的40倍。\h\h[11]在電話通訊系統(tǒng)中,類似的情況同樣存在,隨之而來的還有巨大的復(fù)雜性。20世紀(jì)20年代,美國的電話通訊系統(tǒng)已經(jīng)擁有了大約480萬千米的收費(fèi)線路和大約1700萬部電話。\h\h[12]要知道,就當(dāng)時而言,電話才剛剛問世幾十年;而時至今日,相關(guān)的技術(shù)生態(tài)系統(tǒng)已遍布全美。所有這些系統(tǒng)都是為了實(shí)現(xiàn)某個特定功能,由一代又一代的專家設(shè)計(jì)、構(gòu)建出來的。有人可能會認(rèn)為,如果這些系統(tǒng)的設(shè)計(jì)是合理的,那么它們理應(yīng)合乎邏輯、優(yōu)雅,甚至簡潔,也理應(yīng)易于說明、易于修復(fù)。然而,盡管我們已盡了最大努力,但技術(shù)系統(tǒng)還是變得越來越復(fù)雜、越來越龐大。這絕非偶然,技術(shù)發(fā)展過程中某些固有的力量,使我們在“復(fù)雜性”中越陷越深。和萬有引力之類的物理定律截然不同,這些力量強(qiáng)大到能讓系統(tǒng)變得越來越復(fù)雜。不管時代如何變遷,它們總能壓制住人們對簡單的渴求,以致在人們心中,它們已如物理規(guī)律般不可抗拒??墒?,為什么會這樣呢?在本章中,我將詳細(xì)分析一些會使系統(tǒng)變得日益復(fù)雜的因素。從表面上看,這些因素完全合理,它們所引發(fā)的每一個變化都能使技術(shù)更加適應(yīng)不斷變化的環(huán)境,要么有助于系統(tǒng)繼續(xù)在新環(huán)境中正常運(yùn)行,要么增加了系統(tǒng)的實(shí)用性。然而,這些因素最終會使原本優(yōu)雅的解決方案變成雜亂無章的、拼湊起來的系統(tǒng)。無論付出多大努力也無法避免這樣的結(jié)果,無法阻止技術(shù)復(fù)雜性的不斷增長。最終,我們生活的方方面面都會受到影響。各種技術(shù)系統(tǒng)皆會隨著時間的推移而越來越復(fù)雜,究其首要原因,也是最顯而易見的原因是系統(tǒng)內(nèi)部存在著雙重力量:吸積(accretion)和交互,也就是說,隨著時間的推移,系統(tǒng)的組成部分越來越多,同時組成部分之間的關(guān)聯(lián)也越來越多。原因1:吸積在2000年1月1日到來前的幾年里,許多工程師都在研究如何解決“千年蟲”問題。簡而言之,若一個軟件在存儲年份時使用的是兩位數(shù),而不是四位數(shù),那么當(dāng)2000年到來時,這個軟件就會“認(rèn)為”那是1900年,從而引發(fā)諸多問題??峙聸]有任何人、任何機(jī)構(gòu)會比美國聯(lián)邦航空管理局(FAA)更擔(dān)心“千年蟲”問題了。如果空中交通管制系統(tǒng)在新千年到來時出現(xiàn)故障,那將會導(dǎo)致巨大的災(zāi)難。因此,美國聯(lián)邦航空管理局檢查了計(jì)算機(jī)系統(tǒng),并對系統(tǒng)進(jìn)行了測試:如果系統(tǒng)認(rèn)為那是1900年,會出現(xiàn)什么情況?\h\h[13]在測試過程中,他們發(fā)現(xiàn)交通管制系統(tǒng)中的IBM3083計(jì)算機(jī)問題特別棘手。作為技術(shù)人員代表,美國聯(lián)邦航空管理局的工會主席指出主要問題在于:“IBM公司只有兩個人知道這種型號的計(jì)算機(jī)的微代碼,但是他們都退休了?!盶h\h[14]但真正的原因是,IBM3083屬于大型機(jī),從20世紀(jì)80年代開始發(fā)售,而且所用的系統(tǒng)軟件早在發(fā)售前幾年就已投入使用。這就意味著,到了20世紀(jì)90年代后期,這個為全美的飛機(jī)制定航線的計(jì)算機(jī)系統(tǒng)所使用的代碼幾乎已無人可識。這還算不上令人震驚。一直以來,許多大型系統(tǒng)的基礎(chǔ)都是較小和較陳舊的系統(tǒng)。只要這些系統(tǒng)能夠繼續(xù)平穩(wěn)地運(yùn)行下去,就不會有人在意那些舊東西上面到底堆了多少新東西,系統(tǒng)中到底累積了多少次第加入的片段。據(jù)一位消息人士透露,直到2007年,美國國稅局所使用的報稅系統(tǒng)依舊是20世紀(jì)60年代早期,也就是肯尼迪政府時期開發(fā)的系統(tǒng)。\h\h[15]美國國稅局所使用的另一個系統(tǒng)則始建于20世紀(jì)70年代,并于1985年進(jìn)行了大修。與此類似,美國的航天飛機(jī)在執(zhí)行最后一次航天任務(wù)時,\h\h[16]所用的平臺是由5臺IBM計(jì)算機(jī)組成的,其計(jì)算能力甚至還比不上今天的一部普通智能手機(jī)。然而,這些軟件和技術(shù)仍然在使用著。1975年出版的《人月神話》(TheMythicalMan-Month)一書中,計(jì)算機(jī)科學(xué)家小弗雷德里克·布魯克斯(FrederickP.BrooksJr.)討論了有關(guān)軟件設(shè)計(jì)和項(xiàng)目編程的管理問題。在這本書中,他引用了業(yè)內(nèi)的一句俗語:“每次加一點(diǎn),每次加一點(diǎn),最后就有了一大堆。”\h\h[17]每一個獨(dú)立設(shè)計(jì),無論是為了修復(fù),還是用來提供新功能,看上去都不過是一次獨(dú)立的選擇,而且都很合理:要么解決了問題,要么為用戶創(chuàng)造了新的令人興奮的功能。然而,日積月累下,它們終會變成“一大堆”。從交通運(yùn)輸業(yè)到能源業(yè),再到農(nóng)業(yè),我們都可以從中清楚地看到,但凡是大型的技術(shù)系統(tǒng),就定會發(fā)生這種情況。舉例來說,一大堆石頭不一定會成為問題,即使它們看上去可能很難處理、過于零亂,但卻不一定深奧難解。真正的問題是,當(dāng)我們創(chuàng)造的“一大堆”引發(fā)出意料之外的狀況時,我們就會遭遇“雪崩”。不幸的是,我們不斷地往技術(shù)系統(tǒng)中加入一個又一個片段,“雪崩”在所難免。“一大堆”不僅變得更大,而且變得更難琢磨了。我記得我最早是在一些討論“行星系如何形成”的文章中看到“吸積”這個術(shù)語的。行星系由一團(tuán)旋轉(zhuǎn)的塵埃和氣體凝聚而成,這種星星點(diǎn)點(diǎn)的累積過程,就是“吸積”的過程。\h\h[18]這個用來描述行星系如何形成的概念由來已久,而在技術(shù)的增長過程中也是類似的吸積作用。吸積過程的結(jié)果之一就是形成了人們常說的遺留代碼(legacycode)或遺留系統(tǒng)(legacysystems),即過時的機(jī)器和技術(shù),也就是開發(fā)出來之后使用至今的機(jī)器和技術(shù),譬如美國國稅局所使用的報稅系統(tǒng)。這種老舊的系統(tǒng)并不罕見,甚至可以說相當(dāng)常見。\h\h[19]它們經(jīng)歷了多年的吸積過程,成了拼湊起來的系統(tǒng),從科學(xué)模型到城市基礎(chǔ)設(shè)施,幾乎無處不在。例如,在城市的排水系統(tǒng)中,既有服役超過百年的舊管道,也有剛剛埋設(shè)好的新管道。就計(jì)算機(jī)領(lǐng)域而言,很多技術(shù)系統(tǒng)都依賴于已停產(chǎn)的舊型號計(jì)算機(jī)系統(tǒng),而且程序代碼也是用早已退役的編程語言所寫。例如,許多科學(xué)軟件現(xiàn)在都成了遺留系統(tǒng),它們一般都是用Fortran語言編寫的,那是一種功能強(qiáng)大但早已過時的編程語言。隨著技術(shù)的高速發(fā)展,如今我們再來看Fortran語言編寫的計(jì)算機(jī)代碼,就好像是在看中古時代的英語。在這里,不妨引用《全球概覽》(WholeEarthCatalog)的創(chuàng)始人斯圖爾特·布蘭德(StewartBrand)在《萬年鐘傳奇》(TheClockoftheLongNow)一書中的說法:“通常,這些已經(jīng)過時的遺留系統(tǒng),在過去的許多年里,一直都扮演著十分重要的角色,若是替換掉它們,必定會‘傷筋動骨’,恐怕沒有人能夠承擔(dān)這樣的后果。此外,它們也是無法被完全修復(fù)的,一是因?yàn)閱栴}過于復(fù)雜,二是因?yàn)闆]有人完全了解整個系統(tǒng)?!蹦敲?,當(dāng)我們面對一個仍在緩慢增大、小故障不斷的遺留系統(tǒng)時,又該怎么辦呢?我們只能小心翼翼地對待它,因?yàn)樵O(shè)計(jì)它的人可能早就“杳無音訊”了。這個遺留系統(tǒng)可能已經(jīng)完全嵌入了其他系統(tǒng),徹底移除它的后果,可能遠(yuǎn)比容忍它的小故障更加糟糕。這種系統(tǒng)實(shí)在難以處理,有時甚至?xí)环Q為“恐怖爬行獸”(crawlinghorrors),也就是美國恐怖、科幻小說作家霍華德·菲利普斯·洛夫克拉夫特(H.P.Lovecraft)小說中那種無法形容的怪物。\h\h[20]司法系統(tǒng)條文,也有類似的情況。在法律體系中,隨著時間的推移,法律條文會被修正或修改。人們會根據(jù)不斷變化的環(huán)境,對法律條文做出調(diào)整,但總會留下一些數(shù)十年前制定的法律條文。例如,互聯(lián)網(wǎng)流量管理的相關(guān)法規(guī)就源于1934年通過的一項(xiàng)法律。隨著時間的推移,法律體系也在不斷地吸積,最終成了一個拼湊起來的系統(tǒng)。它可以發(fā)揮作用,但是遠(yuǎn)遠(yuǎn)談不上優(yōu)雅。以稅法為例。事實(shí)上,美國的稅法早已復(fù)雜不堪了,立法者也早就承認(rèn)了這個事實(shí)。稅表的使用說明已經(jīng)從1940年的兩頁,增加到了2013年的200多頁。\h\h[21]鑒于此,如果你在申報納稅時,因?yàn)榉煞ㄒ?guī)太過復(fù)雜而出了錯,那么最高法院會裁定你無罪,因?yàn)槟阍阱e誤報稅這件事上并沒有“主觀故意”。\h\h[22]盡管如此,就法律體系本身而言,在現(xiàn)有稅法上修修補(bǔ)補(bǔ),要比重新制定更容易,也更有效。另外,我們也要考慮一下諸如美國環(huán)境保護(hù)署之類的政府部門和機(jī)構(gòu)所頒布的法規(guī)的總體增長趨勢。事實(shí)上,只要看一看《美國聯(lián)邦法規(guī)》的總頁數(shù)就足夠了。\h\h[23]《美國聯(lián)邦法規(guī)》收錄了各行政機(jī)構(gòu)頒布的各種法規(guī),在過去的50年里,其頁數(shù)從不到25000頁增加到了超過165000頁。我們還觀察到,行政人員和行政機(jī)構(gòu)的數(shù)量也出現(xiàn)了類似的增長趨勢。20世紀(jì)50年代,《經(jīng)濟(jì)學(xué)人》雜志中有一篇文章提到了帕金森定律(Parkinson'sLaw),并定量地描述了行政人員數(shù)量的增長規(guī)律。\h\h[24]雖然這篇文章的觀點(diǎn)還不太完善,但帕金森定律畢竟有數(shù)據(jù)的支持,其結(jié)論到今天仍基本成立:政府部門的行政人員數(shù)量以每年5%至6%的速度在增長。毫無疑問,隨著行政機(jī)構(gòu)的規(guī)模越來越大,機(jī)構(gòu)的管理問題只會越來越復(fù)雜。事實(shí)上,軟件界已經(jīng)將吸積和積累奉為普適規(guī)則。\h\h[25]就發(fā)展而言,軟件系統(tǒng)的規(guī)模勢必會與日俱增,除非有人積極地嘗試簡化它們。那么,為什么我們不能對復(fù)雜的系統(tǒng)進(jìn)行定期清理并從頭開始呢?這和實(shí)際操作有關(guān)。例如,軟件未能按時重寫完,索性就在推出新版本之前先發(fā)布一個補(bǔ)丁。\h\h[26]我在想,只要愿意花上很多年的時間,那么微軟內(nèi)部的任何一位軟件專家都可以重寫Word的全部代碼。當(dāng)時間、精力和金錢都有限,且不得不進(jìn)行權(quán)衡時,\h\h[27]我們通常會選擇對系統(tǒng)進(jìn)行修改,讓它“足夠好”就行了。這意味著,我們需要不斷對系統(tǒng)進(jìn)行調(diào)試和修正,就像立法者對美國法律體系所做的那樣,也就是說,我們需要在以往的基礎(chǔ)上加上一層又一層的東西。我們的城市擁有一個多世紀(jì)之前埋設(shè)的燃?xì)夤艿繺h\h[28]、20世紀(jì)30年代建成的運(yùn)輸網(wǎng)絡(luò)\h\h[29],以及廢棄的地鐵站。它們都隱藏在城市的地下。不過,更多的時候,我們之所以放棄從頭開始的想法,是因?yàn)槟菢幼霾粌H太困難,而且太危險。沒有人能夠完全理解一個系統(tǒng)所依賴的所有舊的組成部分的全部作用,所以重新設(shè)計(jì)一個未經(jīng)檢驗(yàn)的系統(tǒng)不僅是愚蠢的行為,更是危險的行為。試想一下,一個幾十年前設(shè)計(jì)好的、非常復(fù)雜的銀行軟件系統(tǒng)正慢慢適應(yīng)著各種先進(jìn)的技術(shù),無論是新型的計(jì)算機(jī),還是新的操作系統(tǒng),或是無處不在的互聯(lián)網(wǎng)。雖然這個系統(tǒng)的核心基礎(chǔ)并不適用當(dāng)今時代,但它們已經(jīng)嵌入得太深,以致無法刪除??偠灾覀儽仨毥邮苓@樣一個普遍規(guī)則,那就是:無論何種技術(shù)系統(tǒng),終將變得日益復(fù)雜。\h\h[30]但是,當(dāng)仔細(xì)觀察技術(shù)系統(tǒng)中的遺留代碼時,無論是在一個軟件中,還是在一個法律體系中,我們都會發(fā)現(xiàn),真正的復(fù)雜性絕不僅僅只體現(xiàn)在日益擴(kuò)大的系統(tǒng)規(guī)模上。畢竟,只有和另一個因素結(jié)合起來,吸積才能使技術(shù)系統(tǒng)變得復(fù)雜,這個因素就是交互。原因2:交互現(xiàn)在,幾乎所有的學(xué)生都會在師長的引導(dǎo)下,學(xué)習(xí)一些編程技術(shù)。是的,不管是教育工作者還是技術(shù)專家,都告訴我們計(jì)算機(jī)編程就是未來。計(jì)算機(jī)操縱了周遭的一切,比如汽車和微波爐。專家們當(dāng)然沒有說錯。不僅如此,編程還可以為你帶來一種結(jié)構(gòu)化的思維模式,以及提示你關(guān)注某種技術(shù)系統(tǒng)的實(shí)際功能。當(dāng)我說起某個新的應(yīng)用程序能夠做某件事時,如果你參與了編程,哪怕只是一點(diǎn)點(diǎn),你也會比一般人更清楚我的說法是否合理。如果你以前寫過代碼,那么你應(yīng)該清楚計(jì)算機(jī)程序是如何抵制簡化工作的。隨著計(jì)算機(jī)程序變得越來越龐大、越來越復(fù)雜,代碼也變得越來越復(fù)雜,而且絕大部分代碼的聚合方式都是令人費(fèi)解的。為了確保大型程序仍可控,我們開發(fā)出了各種各樣的技術(shù)方法,例如版本控制、錯誤跟蹤,以及跨團(tuán)隊(duì)溝通工具等,但是這些方法通常都只是“戰(zhàn)斗失敗”后的亡羊補(bǔ)牢之術(shù)。不僅軟件代碼本身在不斷吸積,每個組成部分也在越來越頻繁地與其他組成部分進(jìn)行交互。與存在于“真空”中的全新項(xiàng)目有所不同,任何一個計(jì)算機(jī)程序都是一個大規(guī)模的互聯(lián)系統(tǒng):不僅會作用于自身,還會與其他程序相互作用。我們在舊代碼中一次又一次地加入新代碼,并以出其不意的新方式去使用它們,以此將各個層次拼接在一起。交互過程,包括許多意外交互在內(nèi),有時會因編程語言本身的原因而加劇。即使是剛?cè)腴T的程序員也知道,GOTO語句會帶來麻煩。在BASIC編程語言中,通過設(shè)置GOTO語句,可以讓程序輕松地從某一行跳轉(zhuǎn)到另一行。換句話說,如果代碼中包含了GOTO語句,那么程序就可以輕松地從某一行指向另一行,從代碼中的一個點(diǎn)跳轉(zhuǎn)到另一個點(diǎn)。如此容易便能實(shí)現(xiàn)跳轉(zhuǎn),難怪有人會說,對于那些想要對自己的計(jì)算思維進(jìn)行測試的文科生而言,GOTO語句無疑是“天賜良品”。\h\h[31]在一個小程序中,使用GOTO語句實(shí)現(xiàn)跳轉(zhuǎn),既容易又無傷大雅。但是,隨著程序變得越來越大,GOTO語句最終會將代碼綁定到某些龐雜的節(jié)點(diǎn)上,但即使是最熟練的程序員也無法解開這些龐雜的節(jié)點(diǎn)。最終,你得到的將是所謂的“意大利面條”式的代碼,因?yàn)樗袞|西都糾纏在了一起,既難解開,又難理解。在這種情況下,要想搞清楚程序指令執(zhí)行的次序幾乎是不可能的,這也是為什么這樣的計(jì)算機(jī)程序特別容易出現(xiàn)令人意想不到和無法理解的行為。此類簡化命令即使只是在獨(dú)立的、較小的環(huán)境下發(fā)揮作用,也有可能通過某種方式脫離當(dāng)初設(shè)定的目標(biāo)。如果使用的頻率和方式超出了預(yù)設(shè)范圍,系統(tǒng)及其組成部分就會出現(xiàn)諸多問題,而這些問題比當(dāng)初設(shè)想的要龐雜得多。GOTO語句就是一個突出的例子,它從一個美妙的超快捷工具變成了既不優(yōu)雅,又實(shí)為“有害”的東西。\h\h[32]為了更好地理解并強(qiáng)化系統(tǒng)秩序,專家們想出了很多方法,包括使用更加復(fù)雜的計(jì)算機(jī)語言。\h\h[33]在大多數(shù)由專家構(gòu)建的新系統(tǒng)中,意大利面條式的代碼已成為過去式。然而,由于互聯(lián)的易發(fā)性和各種層次上的不斷吸積,交互作用正在持續(xù)增多。于是,高度互聯(lián)的系統(tǒng)動態(tài),即信息的流動和各部分之間的交互,也就變得異常復(fù)雜和不可預(yù)測。仍以豐田汽車軟件為例,因?yàn)榇嬖诮换?,豐田汽車軟件中的大量代碼已無法被測試了。\h\h[34]在我們構(gòu)建的其他類型的技術(shù)系統(tǒng)中,互聯(lián)性同樣在不斷升級。例如,在法律體系中,由于每項(xiàng)新的法律法規(guī)都與以前的法律法規(guī)相互關(guān)聯(lián),因此我們很難預(yù)測單項(xiàng)法律條文的效果。菲利普·K.霍華德曾仔細(xì)分析過貝永大橋(BayonneBridge)這個案例。\h\h[35]貝永大橋是連接紐約州和新澤西州的主要通道之一。由于這座百年大橋的橋梁實(shí)在太低,以致那些前往紐瓦克港的現(xiàn)代集裝箱船無法順利通過。紐瓦克港是一個重要的商業(yè)中心。那么應(yīng)該怎么辦呢?在人們提出的各種解決方案中,有一個方案是這樣的:對這座橋進(jìn)行改造,適度提高橋梁高度。這應(yīng)該是成本最低的方案了,也是在2009年脫穎而出的方案。但是,改造工程拖了很多年都未能啟動,因?yàn)槿藗冸y以應(yīng)對吸積和交互的綜合作用。與大橋改造工程有關(guān)的規(guī)章制度總共涉及19個政府部門的47份許可文件,從環(huán)境影響評估報告到歷史影響評估報告,不一而足。\h\h[36]其他地方也出現(xiàn)過諸多類似情況,一些公共項(xiàng)目需要10年左右的時間才會獲得批準(zhǔn),因?yàn)橄嚓P(guān)的規(guī)則和流程冗長繁多。\h\h[37]正如霍華德所說,這種情況在很多時候甚至是致命的,比如,老化腐朽的基礎(chǔ)設(shè)施如果未能得到及時修繕,就有可能奪走許多人的生命。研究員邁克爾·曼德爾(MichaelMandel)和黛安娜·卡魯(DianaCarew)就職于位于華盛頓特區(qū)的進(jìn)步政策研究所(ProgressivePolicyInstitute)總部。他們將規(guī)則體系的增長稱為“監(jiān)管積累”(regulatoryaccumulation),即隨著時間的推移,規(guī)則會變得越來越多。\h\h[38]換句話說,每一條法律法規(guī)都是合理的,但當(dāng)它們被放到一起時,就有可能會因?yàn)橄嗷プ饔枚兊卯惓!败浫酢?,甚至可能以令人驚訝和意想不到的方式產(chǎn)生沖突。我們不僅越來越多地將某項(xiàng)技術(shù)的各個組成部分關(guān)聯(lián)起來,而且還越來越多地將不同的軟件和技術(shù)關(guān)聯(lián)起來。后者是一種高階互聯(lián)模式,也就是互操作性(interoperability)。\h\h[39]讓各項(xiàng)技術(shù)互通,也就是讓不同系統(tǒng)進(jìn)行交互,相互傳遞信息通常是一件好事。例如,因特網(wǎng)之所以擁有如此強(qiáng)大的功能,就是因?yàn)槠溥B接的機(jī)器數(shù)量極其龐大,而且可以在無數(shù)機(jī)器之間傳遞信息。當(dāng)你問Siri“世界總?cè)丝谑嵌嗌佟睍r,你的蘋果手機(jī)會通過WolframAlpha服務(wù)獲取到答案,然后回答你;當(dāng)你使用谷歌地圖時,它會告訴你利用“優(yōu)步”去往目的地可能要花多少錢。這些都是互操作性的實(shí)例。但是不要忘記,讓不同系統(tǒng)互通的同時,我們不得不去面對陷入復(fù)雜世界的巨大風(fēng)險。我們現(xiàn)在不僅建成了互聯(lián)網(wǎng)絡(luò),比如由不同計(jì)算機(jī)和設(shè)備組成的互聯(lián)網(wǎng),而且還建成了擁有眾多子系統(tǒng)的大型互聯(lián)系統(tǒng)。除了互操作性之外,不同類型的技術(shù)之間還會產(chǎn)生相互依賴性,例如互聯(lián)網(wǎng)與電網(wǎng)之間的相互依賴性。\h\h[40]研究者在研究了多種類型的系統(tǒng),并了解了它們的優(yōu)缺點(diǎn)后指出,某些系統(tǒng)在多種條件下均可能會出現(xiàn)故障或崩潰。例如,某個規(guī)模相當(dāng)小的電網(wǎng)出現(xiàn)了故障,繼而引發(fā)了無法收拾的級聯(lián)效應(yīng)。對于這種風(fēng)險,有一種觀點(diǎn)是:將技術(shù)系統(tǒng)之間的相互聯(lián)系切斷。然而,這種想法的可操作性幾乎為零。互聯(lián)系統(tǒng)的構(gòu)建成本其實(shí)很低:在當(dāng)今這個充滿互操作性的時代,工程師和設(shè)計(jì)人員都在有意為各個系統(tǒng)創(chuàng)建接口,因此,不同的系統(tǒng)可以很容易被關(guān)聯(lián)起來。我們在構(gòu)建新事物時,通常都會在故障成本和構(gòu)建成本之間進(jìn)行權(quán)衡。我們需要知道,如果出了故障,失敗的成本會有多大。\h\h[41]如果Word崩潰了,那么尚未保存下來的東西將會丟失。盡管沒有人希望看到這樣的結(jié)果,但這個故障的成本的確是相對較低的。如果電網(wǎng)出了故障,并導(dǎo)致美國很多地區(qū)停電,那么故障的成本就極其高昂了。例如,在2003年,美國東北部的大停電對5000萬人的生活和工作造成了影響,并導(dǎo)致11人喪生,直接損失估計(jì)高達(dá)60億美元。\h\h[42]每一項(xiàng)故障成本都應(yīng)該拿來與系統(tǒng)的構(gòu)建成本進(jìn)行比較??v觀歷史,我們所構(gòu)建的系統(tǒng)越重要,構(gòu)建成本就越高。例如,構(gòu)建銀行系統(tǒng)的基礎(chǔ)設(shè)施所耗費(fèi)的資源,比編寫一個聊天程序多得多。因此,我們必須確保那些昂貴的系統(tǒng)不易發(fā)生故障,而這又意味著需要增加構(gòu)建成本。換句話說,在極高的構(gòu)建成本面前,通過大量檢查和測試來降低故障成本的做法,變得至關(guān)重要。在一個相當(dāng)長的時期內(nèi),這種方法一直行之有效。因?yàn)閷?gòu)建成本的重視程度超過了對故障成本的重視程度,所以我們所依賴的所有重要的社會保障系統(tǒng),都是花費(fèi)大量資源構(gòu)建起來的。\h\h[43]然而,現(xiàn)在事情已經(jīng)發(fā)生了變化。出于各種原因,例如,我們可以找到現(xiàn)成的工具和組件,同時“云”上面也存有很多可用資源,所以構(gòu)建成本已大幅下降。創(chuàng)立技術(shù)公司已不再需要太多啟動資金:你可以快速地設(shè)計(jì)和生產(chǎn)出復(fù)雜的工具,并通過市場進(jìn)行測試,而你為此所付出的成本并不大。與此同時,與互聯(lián)有關(guān)的故障成本也已出現(xiàn)持續(xù)上升的趨勢。盡管系統(tǒng)關(guān)聯(lián)技術(shù)相當(dāng)簡單,而且成本很低,但是這種互聯(lián)系統(tǒng)的故障成本卻非常巨大。當(dāng)我們把數(shù)字地圖軟件與出行指導(dǎo)軟件關(guān)聯(lián)到一起時,哪怕只是一個很小的錯誤也有可能導(dǎo)致一場災(zāi)難。例如,蘋果地圖在首次發(fā)布時就曾將超市錯標(biāo)為醫(yī)院。在當(dāng)今時代,利用互聯(lián)網(wǎng)信息人工合成微生物并不是一件不可思議的事情,但正因如此,爆發(fā)生物災(zāi)難的風(fēng)險也比以往任何一個時代都高得多。例如,已經(jīng)有實(shí)驗(yàn)室通過使用電子郵購的生物原料合成出了脊髓灰質(zhì)炎病毒?,F(xiàn)在,有不少初創(chuàng)公司正在努力實(shí)現(xiàn)生物學(xué)實(shí)驗(yàn)的遠(yuǎn)程操作。不難想象,在這個日益自動化的世界中,軟件合成的生物因子\h\h[45]完全有可能會在不經(jīng)意間被釋放。當(dāng)構(gòu)建成本持續(xù)暴跌,而故障成本直線上升時,我們便進(jìn)入了一個無比復(fù)雜的技術(shù)領(lǐng)域。是時候停下來想一想了。一般來說,隨著系統(tǒng)內(nèi)部及系統(tǒng)之間的交互增多,包括擁有子系統(tǒng)的大型系統(tǒng)在內(nèi)的所有系統(tǒng)的復(fù)雜性都會增加。有人認(rèn)為,互聯(lián)性的不斷提高,體現(xiàn)了技術(shù)的基本要求。\h\h[46]技術(shù)終究會產(chǎn)生交互和聚合,并在這種情況出現(xiàn)時進(jìn)一步推動我們走向復(fù)雜化。盡管從開始構(gòu)建大型技術(shù)系統(tǒng)的第一天起,這些趨勢就一直存在,但是近年來,它們變得愈發(fā)強(qiáng)大了。正如我在本書導(dǎo)論中所提到的那樣,計(jì)算機(jī)科學(xué)家艾茲格·迪科斯徹對當(dāng)下的大型系統(tǒng),特別是計(jì)算機(jī)系統(tǒng)的激進(jìn)新穎性所進(jìn)行的分析發(fā)人深省。早在1988年,迪科斯徹就已指出,計(jì)算機(jī)程序的設(shè)計(jì)需要克服大量規(guī)模上的差異,當(dāng)然,在計(jì)算機(jī)問世之前,沒有人需要去處理這樣的事情。\h\h[47]以智能導(dǎo)航系統(tǒng)為例,迪科斯徹很好地解釋了其跨度極大的層級結(jié)構(gòu)。從程序中的1個比特,到機(jī)器存儲空間里的幾百兆字節(jié),的確是從非常小到非常大的跨越。這種跨越涉及近10億次的跳轉(zhuǎn),極端的規(guī)模變化不但超乎想象,而且史無前例。事實(shí)上,這一切已經(jīng),并將繼續(xù)走向極端化,因?yàn)槿粘?yīng)用技術(shù)的普通用戶,現(xiàn)在已經(jīng)熟悉了千兆或萬兆這樣的前綴,而這些前綴又意味著,我們要對龐大的規(guī)模差異負(fù)責(zé),而這種龐大系統(tǒng)的邊界已近乎天文意義上的邊界了。在過去的短短幾十年間,大型系統(tǒng)已變得異常龐大且錯綜復(fù)雜,用迪科斯徹的話來說即是“概念層級的深度,絕非人類心智曾需面對的任何事物可比”。不僅如此,即使我們有能力阻止系統(tǒng)的吸積和交互,也還需面對另一個會使系統(tǒng)變得日益復(fù)雜的因素,而那將是更加難以解決的問題。原因3:必須處理的例外情況假設(shè)你想創(chuàng)建一個日歷程序??瓷先ズ芎唵?,是不是?從很多方面來看,的確如此。要想計(jì)算一年的天數(shù),相對來說并不算困難。一般來說,一年有365天,遇到閏年就在2月底加上一天。怎樣計(jì)算閏年?也不難。只需要看一下年份即可。如果年份可以被4整除,但無法被100整除,或是能被400整除,那么這年便是閏年。也許你還希望這個應(yīng)用程序能夠處理時區(qū)問題。這應(yīng)該也不算難。只需利用全球定位系統(tǒng)(GPS)中的地理坐標(biāo)來確定所在位置的時區(qū)即可。你還可以創(chuàng)建一個列表,將各州與時區(qū)對應(yīng)起來。當(dāng)然,時區(qū)并不是沿著州界劃分的?,F(xiàn)在你需要用更具體的、分辨率更高的信息來處理小區(qū)域。此外,你還不能忘記,亞利桑那州的大部分地區(qū)都是不使用夏令時的,它把自己置于一個“特殊的時空”當(dāng)中了。是不是還想讓日歷程序包含節(jié)假日的相關(guān)信息?當(dāng)然,節(jié)假日通常都有明確的時間安排,至少大部分節(jié)假日都是如此,把它們加上去應(yīng)該不會太困難。感恩節(jié)是11月的第4個周四,美國退伍軍人節(jié)被定在每年的11月11日。那么逾越節(jié)(Passover)呢?看來,我們還需要將這個日歷程序與另一個基于希伯來歷的日歷程序整合到一起。因?yàn)橛庠焦?jié)是從希伯來歷一月的第15夜伊始的。因此,我們需要遠(yuǎn)超預(yù)期的更多信息。那么,你是否還希望這個日歷程序包含其他時間段,并且在過去時段和未來時段上都表現(xiàn)得準(zhǔn)確無誤呢?如果我們回到19世紀(jì),在那個時代,由于標(biāo)準(zhǔn)化時區(qū)制尚未被推行,所以各個城鎮(zhèn)都有自己的時間制度,而這些信息都需要“硬編碼”(hard-coded)\h\h(3)到我們的應(yīng)用程序中。與此類似,在過去的幾個世紀(jì)里,雖然全球許多國家和地區(qū)都已放棄使用羅馬儒略歷(Juliancalendar),轉(zhuǎn)而使用格里高利歷(Gregoriancalendar),但是各國以及各地區(qū)所采用的具體時間制度并不全然相同。例如,俄羅斯“十月革命”的紀(jì)念日之所以是在11月,是因?yàn)樵诟锩l(fā)生時,俄羅斯仍在使用羅馬儒略歷,其日期與西方許多地區(qū)所使用的格里高利歷相差一周多,而“十月革命”發(fā)生在儒略歷的10月底。如果希望日歷程序準(zhǔn)確且詳盡,那么就應(yīng)該將此類信息也植入進(jìn)去。這個過程還將持續(xù)下去。以這種方式構(gòu)建起來的系統(tǒng)最終會變得復(fù)雜無比,因?yàn)樗从车氖挛?,本身就是?fù)雜的。\h\h[48]通過一個簡單的模型來處理絕大多數(shù)復(fù)雜性,是相對直接的方法。比如,我們知道了一年有365天或366天,就可以通過簡單的運(yùn)算來確定某一年到底有多少天。但是,如果你對準(zhǔn)確性有要求,無論是想確保永遠(yuǎn)不會錯過任何一個約會,還是想構(gòu)建一輛既不會迷路也不會撞傷人的自動駕駛汽車,事情就會變得非常復(fù)雜。\h\h[49]這種復(fù)雜的情況就是必須處理的例外情況,也就是所謂的“邊界情況”(edgecase),若不處理,技術(shù)系統(tǒng)就會出現(xiàn)漏洞。\h\h[50]邊界情況各種各樣,從閏年問題,到如何編寫數(shù)據(jù)庫軟件來處理特殊的人名,比如人名中帶有特殊符號的情況。我們不能說邊界情況是普遍現(xiàn)象,但它們確實(shí)經(jīng)常出現(xiàn),所以我們必須加以識別和管控。但是與此同時,技術(shù)的簡單性也就漸漸消失了。邊界情況使技術(shù)變得復(fù)雜了。這一點(diǎn)在科學(xué)模型中尤為突顯,科學(xué)模型也是一種技術(shù),也會隨著時間的推移而發(fā)生變化。接下來,我們就以社會科學(xué)中的語言學(xué)為例展開討論。原因4:普遍的稀有事物在中學(xué)時期,英文老師教會了我語法,因此我很早就知道,不規(guī)則動詞tobe的兩個單詞是必須連在一起用的;我還記住了很多介詞,并學(xué)會了造句。在那個時候,根據(jù)語法規(guī)則來分解句子,將句子的修飾成分去除,剝離出它的邏輯骨架,是一件很有趣的事情。你可以將語言簡化到原子量級,如名詞、動詞和形容詞,然后再來看它們是如何關(guān)聯(lián)在一起的。盡管語言無法用方程式來表達(dá),但是語法確實(shí)擁有一種獨(dú)特的、有秩序的美感。然而,構(gòu)建一個語言處理系統(tǒng)并不是一件容易的事。任何一種語言都有很多習(xí)慣性表達(dá),而且其內(nèi)涵往往比我們想象的要豐富得多、“狡猾”得多。因?yàn)檎Z言具有非正式性,所以使用者在面對作為規(guī)則集合的語法時,多半只會深表認(rèn)同,而不會嚴(yán)格遵從。所有這些都屬于同一類邊界情況,它使下面這個簡單規(guī)則無法成立:每個句子都必定是“主語-謂語-直接賓語”這種結(jié)構(gòu)的變形。為了更好地理解語言中的邊界情況,我們現(xiàn)在來討論一下所謂的罕用語(hapaxlegomena)。罕用語可謂“普遍的稀有事物”(commonrarities)。請問你以前用過snowcrie這個單詞嗎?我想你應(yīng)該沒有用過。事實(shí)上,snowcrie這個詞是無意義的。據(jù)我所知,它可能是一個錯詞。根據(jù)《牛津英語詞典》的解釋,snowcrie這個詞曾經(jīng)出現(xiàn)在1402年的一首詩中:“NotinGoddisgospel,butinSathanaspistile,wherofsoroweandofsnowcrienoonistoseken.”。有學(xué)者認(rèn)為它應(yīng)該是一個錯詞,\h\h[51]正確的那個詞可能是sorcerie,意為巫師。不管有沒有意義,snowcrie這個詞就是所謂的罕用語,或者說“只用過一次的詞”。這個詞在《牛津英語詞典》的語料庫中只出現(xiàn)過一次。語料庫是大量的、通常是完整文本的合集,例如某種語言的全部文本,或某個時期的所有文本。《牛津英語詞典》的語料庫即是編寫者可以使用的所有英語文本。不過,語料庫的文本體量并不一定非常大。在莎士比亞文集這個語料庫,也就是莎士比亞的全部著作中,經(jīng)常會碰到一些罕用語,比如honorificabilitudinitatibus,含義可能就是“榮譽(yù)”(ofhonor)。當(dāng)一個語料庫擁有某種語言的全部,或近乎全部的文本時,罕用語就會變得讓人頭疼,比如《希伯來圣經(jīng)》中的希伯來語,人們對它們的意義知之甚少。但是,罕用語并不是離奇的統(tǒng)計(jì)錯誤。它們不僅比想象中更加普遍,而且與語言學(xué)中特定的數(shù)學(xué)規(guī)則有關(guān)。語言中不同詞匯的使用頻率可以用冪律(powerlaw)\h\h(4)中的長尾分布來進(jìn)行描述。\h\h[52]長尾分布與用來描述人類身高的鐘形曲線(bellcurve)\h\h(5),即正態(tài)分布,有所不同。在長尾分布中,有一些值會延伸到更加深遠(yuǎn)的區(qū)域,以便容納普通詞匯,比如the,或一些極其罕見的詞匯,比如flother。一般來說,語料庫中有近一半的單詞都只出現(xiàn)過一次,也就是說,有一半的單詞都屬于罕用語。這些詞就是長尾中“長”的部分。\h\h[53]因此,雖然你遇到某個特定罕用語的概率很低,但是你遇到這類詞的概率卻相當(dāng)高。在這里,我們不妨用看電影來做下類比。相信并沒有太多人看過那部大名鼎鼎的經(jīng)典電影《天生愛神》(TheAdventuresofBuckarooBanzaiAcrossthe8thDimension),但是看過至少一部經(jīng)典科幻電影的人卻大有人在。因此,作為一個整體類別,罕用語是非常重要的。它們深深地滲透在我們的語言之中。當(dāng)我們試圖編寫一個計(jì)算機(jī)程序來模擬語言時,可能會將罕用語,或罕見的語法結(jié)構(gòu)抽象為異常值。但是,作為一個類別,而非一個單詞,罕用語在語言中所占的比例其實(shí)是相當(dāng)大的。將它們抽象化會導(dǎo)致模型的嚴(yán)重缺失,從而使程序變得不完整。為了避免“遺漏”,\h\h[54]我們需要建構(gòu)出可以處理例外情況和邊界情況的復(fù)雜模型。在這個問題上,谷歌公司研發(fā)主管彼得·諾維格(PeterNorvig)的話可謂一語中的:“形成一種語言的,并不是那種可以用幾個參數(shù)來代表的永恒的理想模型,而是復(fù)雜過程中的偶然結(jié)果。”\h\h[55]因此,計(jì)算機(jī)語言學(xué)家應(yīng)該考慮邊界情況,并嘗試著針對這個復(fù)雜系統(tǒng)構(gòu)建一個穩(wěn)健的、豐富的技術(shù)模型。在這里,復(fù)雜系統(tǒng)指的就是語言。那么,他們最終會得到什么呢?毫無疑問,他們將會得到一個復(fù)雜的技術(shù)系統(tǒng)。和語言有關(guān)的計(jì)算機(jī)模型必定具有復(fù)雜性。要說明這一點(diǎn),只需舉一個例子就夠了:計(jì)算機(jī)是如何將一種語言翻譯成另一種語言的。關(guān)于計(jì)算機(jī)的翻譯功能,有一個流傳已久但未經(jīng)證實(shí)的故事。\h\h[56]在冷戰(zhàn)期間,科學(xué)家們就已開始研究英俄語互譯的運(yùn)算方法了。在測試計(jì)算機(jī)的翻譯程序時,他們選擇了一個含義相當(dāng)微妙的句子“Thespiritiswilling,butthefleshisweak.”(靈固有所愿,肉卻軟弱不堪)。他們通過計(jì)算機(jī)將這句話翻譯成俄語,然后再次翻譯成英語,最終得到的是“Thewhiskeyisstrong,butthemeatisterrible.”(威士忌很有勁,但是肉卻很難吃)。顯然,通過運(yùn)算來實(shí)現(xiàn)機(jī)器翻譯功能并非易事。谷歌翻譯雖然有趣,但結(jié)果卻可能不夠準(zhǔn)確。不過,專家在這方面已經(jīng)取得了很大的進(jìn)步。那么,機(jī)器翻譯專家使用的是哪些技術(shù)呢?\h\h[57]早期的一種方法是利用語言的結(jié)構(gòu)化語法,進(jìn)行模型搭建。計(jì)算機(jī)語言學(xué)家將每種語言的屬性硬編碼為軟件,然后讓計(jì)算機(jī)根據(jù)語法規(guī)則進(jìn)行翻譯。這種方法可以處理相對簡單的句子,但無法應(yīng)對日常語言的多樣性。例如,一個用來處理“直接不定式”的規(guī)則,不一定能夠處理“分離不定式”,即無法處理“Toboldlygowherenoonehasgonebefore.”(勇敢地進(jìn)入前人未曾涉足之地)這樣的句子。另外,不定式的用法還具有一定的地域性,比如,匹茲堡人很喜歡省略掉tobe,直接說“Thecarneedswashed.”(這車該洗了)。很顯然,面對這種形式靈活的“方言”,語法規(guī)則將束手無策。事實(shí)上,依賴上述語法模型的機(jī)器翻譯程序是不可能給出準(zhǔn)確結(jié)果的。語法規(guī)則看上去既優(yōu)雅又簡潔,但無法應(yīng)對文本翻譯過程中所需處理的,復(fù)雜且古怪的語言現(xiàn)象。簡而言之,邊界情況實(shí)在太多了。為了填補(bǔ)這道鴻溝,機(jī)器翻譯專家引入了機(jī)器學(xué)習(xí)領(lǐng)域的多種統(tǒng)計(jì)方法,他們讓計(jì)算機(jī)先攝取大量已經(jīng)翻譯好的文本,然后基于一組算法翻譯新文本。這樣一來,計(jì)算機(jī)就不用理解句子的含義,也不必解析句子的語法結(jié)構(gòu)了。舉例來說,對于復(fù)數(shù)問題,我們不再需要創(chuàng)建復(fù)數(shù)的語法規(guī)則,規(guī)定將后綴“-s”加在單詞末尾,就能夠使之變成復(fù)數(shù)形式;我們只需讓機(jī)器知道,“-s”這個后綴在99.9%的情況下意味著創(chuàng)建了一個復(fù)數(shù)形式的單詞,而在剩余0.1%的情況下并非如此。\h\h[58]例如sheep和deer,它們的單復(fù)數(shù)形式相同;此外,還有一些單詞的復(fù)數(shù)形式是不規(guī)則的,如men、feet和kine。對于語言系統(tǒng)中的其他例外情況,也都可以采用這種運(yùn)算方法。盡管擺脫混沌就能迎來秩序,但這不可能沒有代價。最終得到的最有效的翻譯程序肯定不是一個簡單的模型,而會是一個擁有大量參數(shù)的龐大的計(jì)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 面對風(fēng)險:成功企業(yè)家的關(guān)鍵風(fēng)險控制策略
- 高中語文老師2025年個人方案
- 汽車使用與維護(hù) 課件 項(xiàng)目一 汽車發(fā)動機(jī)艙蓋與后備箱蓋的使用與維護(hù)
- 2025年玻璃單臂異形磨邊機(jī)項(xiàng)目可行性研究報告
- 2025年環(huán)保型彩色鍍鋁禮品包裝紙項(xiàng)目可行性研究報告
- 2025年特效凈水項(xiàng)目可行性研究報告
- 2025年燃?xì)饪矩i爐項(xiàng)目可行性研究報告
- 山東省臨沂一中2025屆高三2月份生物試題模擬試題含解析
- 吉林省白城地區(qū)大安縣2025年初三期末熱身聯(lián)考物理試題含解析
- 天津醫(yī)科大學(xué)臨床醫(yī)學(xué)院《學(xué)術(shù)英語與科技交流》2023-2024學(xué)年第二學(xué)期期末試卷
- 大建安-大連市建筑工程安全檔案編制指南
- 2025-2030中國律師事務(wù)所行業(yè)深度分析及發(fā)展前景與發(fā)展戰(zhàn)略研究報告
- 代生孩子合同標(biāo)準(zhǔn)文本
- 中職生對口升學(xué)模擬考試醫(yī)學(xué)類專業(yè)課綜合試卷
- 2025年小學(xué)時事知識試題及答案
- (完整版)特殊教育與隨班就讀
- 旋流風(fēng)口RA-N3選型計(jì)算表格
- 2025年河南工業(yè)貿(mào)易職業(yè)學(xué)院單招職業(yè)傾向性測試題庫往年題考
- 《VB程序結(jié)構(gòu)基礎(chǔ)》課件教程
- 個人房屋租賃合同標(biāo)準(zhǔn)版范本
- DBJ50-T-157-2022房屋建筑和市政基礎(chǔ)設(shè)施工程施工現(xiàn)場從業(yè)人員配備標(biāo)準(zhǔn)
評論
0/150
提交評論