王垠:圖靈的光環
仿佛全世界的人都知道,圖靈(Alan Turing)是個天才,是他創造了計算機科學,是他破解了德國納粹的 Enigma 密碼。由于他的杰出貢獻,計算機科學的最高榮譽,被叫做“圖靈獎”。然而根據自己一直以來對圖靈機等計算模型的看法,加上一些歷史資料,我發現圖靈本人的 實際成就,相對于他所受到的崇拜,其實相差甚遠。
由于二戰以來各國政府對于當時諜報工作的保密措施造成的事實混淆,再加上圖靈的不幸生世所引來的同情,圖靈這個名字似乎擁有了一種撲朔迷離的光 環。人們把很多本來不是圖靈作出的貢獻歸結在他身上,把本來很平常的貢獻過分地夸大。圖靈的光環,掩蓋了許多對這些領域做出過更加重要貢獻的人。
圖靈傳
2012 年,在圖靈誕辰一百周年的時候,人們風風火火的召開各種大會,紀念這位“計算機之父”,很多媒體也添油加醋地宣傳他的豐功偉績。還有個叫 Andrew Hodges 的人,抓住這個時機推銷自己寫的一本傳記,叫做《Alan Turing: The Enigma》。這本書紅極一時,后來還被改編成了電影。
這本傳記看似客觀,引經據典,字里行間卻可以感受到作者對圖靈個人的膜拜和偏袒,他在傾心打造一個“天才”。作者片面地使用對圖靈有利的證據, 對不利的方面只字不提。仿佛圖靈做的一切都是有理的,他做的不好的地方都是因為別人的問題,或者風水不好。提到別人做的東西,盡是各種缺陷和局限性,不是 缺陷也要說成是缺陷;提到圖靈的工作,總是史無前例,開天辟地的發明。別人先做出來的東西,生拉硬拽,硬要說成是受了圖靈的“啟發”,還怪別人沒有引用圖 靈的論文。這讓你感覺仿佛別人都在抄襲圖靈偉大的研究成果,都在利用他,欺負他似的。如果你不想花錢買書,可以看看同一作者寫的一個圖靈簡要生平,足以從中感受到這種傾向。
我寫這篇文章的很大一部分原因,就是因為這本傳記。作者對圖靈貢獻的片面夸大,對其他一些學者的變相貶低,讓我感到不平。圖靈在計算機界的名 聲,本來就已經被嚴重的夸大和美化,被很多人盲目的崇拜。現在出了這本傳記和電影,又在人們心中加重了這層誤解。所以我覺得有必要澄清一些事實,讓人們不 再被迷惑。
密碼學
很多人提到二戰 Enigma 密碼的故事,就會把功勞一股腦地歸到圖靈頭上,只字不提其他人。其實呢,破解 Enigma 密碼是很多人共同努力的結果,圖靈只是其中的一員。這些人缺少了任何一個,都可能是災難性的后果。其中好些人的想法早于圖靈,啟發過圖靈,貢獻比圖靈的 大,設計的東西比圖靈的先進,卻很少有人聽說過他們的名字。論智力和貢獻,圖靈在其中只是中等水平,最后說起來倒好像是他單槍匹馬拯救了大家,這是不公平 的。
最初破掉 Enigma 密碼的,其實不是英國人,而是波蘭人。波蘭人不但截獲并且仿造了德國人的 Enigma 機器,而且發現了其中微妙的漏洞,發明了一種用于解密的機器叫做 BOMBA,以及一種手工破解的方法叫做 Zygalski sheets。BOMBA 可以在兩個小時之內破解掉 Enigma 密碼。波蘭人一聲不吭地竊聽了德國人的通信長達六年半,最后在二戰爆發前夕把這技術送給了英法盟友。
BOMBA 的工作原理,其實就是模擬好幾個 Enigma 機器,“并發”運轉,這樣可以加速猜出秘鑰。最開頭這樣還行,但后來德國人改進了 Enigma 機器,把可選的齒輪從 3 個增加到了 5 個。5 選3,有 60 種情況,這樣秘鑰的空間增大了 60 倍。理論上 BOMBA 只要運轉 60 倍多的 Enigma 機器,就可以破解這增大的解空間,然而那已經超出了波蘭的物資和人力。再加上德國人就要打過去,所以波蘭只好請英法盟友幫忙。
圖靈最重要的貢獻,就是改進波蘭人的 BOMBA,設計了一個更好的機器叫 BOMBE。BOMBE 比起 BOMBA,其實并沒有質的飛躍,只不過 BOMBE 同時模擬的 Enigma 機器更多,轉的更快。另外它加入了一些“優化”措施,盡早排除不可行的路徑,所以速度快很多。圖靈最初的設計,要求必須能夠事先猜出很長的文本,所以基本不能用。后來 Gordon Welchman 發明了一種電路,叫做 diagonal board,才使 Bombe 能夠投入實用。關于 Gordon Welchman 的故事,你可以參考這個 BBC 紀錄片。
在 Bombe 能夠投入使用之前,有一個叫 John Herivel 的人,發現了一種特殊的技巧,叫做 Herivel tip,這種技術在 Bombe 投入使用之前幾個月就已經投入實用,破解掉很多德軍的消息,立下汗馬功勞。如果 Herivel tip 沒有被發明,盟軍可能在 1940 年 5 月就已經戰敗,BOMBE 也就根本沒機會派上用場。
同時在 Bletchley Park,還誕生了一臺大型可編程電子計算機 Colossus,它是由一個叫 Tommy Flowers 的工程師設計的。Colossus 不是用來破解 Enigma 密碼的,而是用于破解 Lorenz SZ-40。那是一種比 Enigma 還要先進的密碼機器,用于發送希特勒的最高指令。
德國人后來又改進了他們的通信方式,使用了一種具有四個齒輪的 Enigma 機器。這大大的增加了破解的難度,普通的 Bombe 機器也破不了它了。后來是 Harold Keen 設計了一個叫做 Mammoth 的機器,后來加上美國海軍的幫助,制造了更快的 Bombe,才得以破解。
所以你看到了,所有這些人的工作加起來,才改善了二戰的局面。波蘭人的 BOMBA,已經包含了最重要的思想。圖靈的工作其實更多是量的改進,而不是質的飛躍。現在很多人喜歡跟風,片面的夸大圖靈在其中的作用,這是不對的。如 果你對 Enigma 機器的技術細節感興趣,可以參考這兩個視頻:[視頻1][視頻2]。
理論計算機科學
圖靈被稱為“計算機之父”,計算機科學界的最高榮譽,被叫做“圖靈獎”(Turing Award)。然而如果你深入的理解了計算理論和程序語言理論就會發現,圖靈對于理論計算機科學,其實并沒產生長遠而有益的影響。在某種程度上說,他其實 幫了一個倒忙。圖靈的理論復雜不堪,給人們造成很大的誤導,阻礙了計算機科學的發展。而且他對于發表論文,對待研究的態度讓我懷疑,我覺得圖靈本人其實就 是當今計算機學術界的一些不正之風的鼻祖。
圖靈機和 lambda 演算
絕大部分計算機專業的人提到圖靈,就會想起圖靈機(Turing Machine)。稍微有點研究的人,可能知道圖靈機與 lambda 演算在計算能力上的等價性。然而在“計算能力”上等價,并不等于說它們具有同樣的價值,隨便用哪個都無所謂。科學研究有一條通用的原則:如果多個理論可以 解釋同樣的現象,取最簡單的一個。雖然 lambda 演算和圖靈機能表達同樣的理論,卻比圖靈機簡單,優雅,實用很多。
計算理論(Theory of Computation)這個領域,其實是被圖靈機給復雜化了。圖靈機的設計是丑陋,復雜,缺乏原則的。它的讀寫頭,紙帶,狀態,操作,把本來很簡單的語 義搞得異常復雜。圖靈機的讀寫兩種操作同時發生,這恰好是編程上最忌諱的一種錯誤,類似于C語言的i++
。圖靈機是如此的復雜 和混淆,以至于你很難看出它到底要干什么,也很難用它清晰地表達自己的意思。這就是為什么每個人上“計算理論”課程,都會因為圖靈機而頭痛。如果你挖掘一 點歷史,也許會發現圖靈機的原型,其實是圖靈母親使用的打字機。用一臺打字機來建模所有的計算,這當然是可行的,然而卻復雜不堪。
相比之下,lambda 演算更加簡單,優雅,實用。它是一個非常有原則的設計。Lambda 演算不但能清晰地顯示出你想要表達的意思,而且有直接的“物理實現”。你可以自然的把一個 lambda 演算表達式,看成是一個電子線路模塊。對于現實的編程語言設計,系統設計,lambda 演算有著巨大的指導和啟發意義。以至于很多理解 lambda 演算的人都搞不明白,圖靈機除了讓一些理論顯得高深莫測,還有什么存在的意義。
歷史的倒退
圖靈機比起 lambda 演算來說,其實是一個歷史的 倒退。1928 年,Alonzo Church 發明了 lambda 演算(當時他 25 歲)。Lambda 演算被設計為一個通用的計算模型,并不是為了解決某個特定的問題而誕生的。1929 年,Church 成為普林斯頓大學教授。1932 年,Church 在 Annals of Mathematics 發表了一篇論文,糾正邏輯領域里幾個常見的問題,他的論述中用了 lambda 演算。1935 年,Church 發表論文,使用 lambda 演算證明基本數論中存在不可解決的問題。1936 年 4 月,Church 發表了一篇兩頁紙的“note”,指出自己 1935 年那篇論文可以推論得出,著名的 Hilbert“可判定性問題”是不可解決的。
1936 年 5 月,當時還在劍橋讀碩士的圖靈,也寫了一篇論文,使用自己設計的一種“計算機器”(后來被叫做圖靈機)來證明同一個問題。圖靈的論文投稿,比 Church 最早的結論發表,晚了整整一年。編輯從來沒見過圖靈機這樣的東西,而且它紛繁復雜,遠沒有 lambda 演算來得優雅。就像所有人對圖靈機的第一印象一樣,編輯很難相信這打字機一樣的操作方式,能夠容納“所有的計算”。他無法確定圖靈的論述是否正確,只好找 人幫忙。Church 恐怕是當時世界上唯一能夠驗證圖靈的論文正確性的人。所以一番好心之下,編輯寫了封信給 Church,說:“這個叫圖靈的年輕人很聰明,他寫了一篇論文,使用一種機器來證明跟你一樣的結果。他會把論文寄給你。如果你發現他的結果是正確的而且 有用,希望你幫助他拿到獎學金,進入 Princeton 跟你學習。”
圖靈就是這樣成為了 Church 的學生,然而圖靈心高氣傲,恐怕從來沒把 Church 當成過老師,反倒總覺得 Church 搶先一步,破壞了自己名垂青史的機會。跟 Church 的其它學生不一樣,圖靈沒能理解 lambda 演算的精髓,卻認為自己的機器才是最偉大的發明。進入 Princeton 之后,圖靈不虛心請教,只是一心想發表自己的論文,想讓大家對自己的“機器”產生興趣,結果遭到很大的挫折。當然了,一個名不見經傳的人,做了個怪模怪樣 的機器,說它可以囊括宇宙里所有的計算,你不被當成民科才怪呢!
1937 年,在 Church 的幫助下,圖靈的那篇論文(起 名為《Computable Numbers》)終于發表了。Church 還是很器重圖靈的,他把圖靈的機器叫做“圖靈機”。不幸的是,論文發表之后,學術界對此幾乎沒有任何反響,只有兩人向圖靈索取這篇論文。圖靈當然不爽了, 于是后來就到處推銷自己的圖靈機,想讓大家承認那是偉大的發明。有了一個錘子,看什么都是釘子。后來每到一個地方,每做一個項目(見下一節),他都想把問 題往自己那篇論文和圖靈機上靠,東拉西扯的想證明它的價值,甚至稱別人發明的東西全都是受到了圖靈機的啟發…… 經過人們很長的時間的以訛傳訛之后,他終于成功了。
圖靈當年的作法,其實跟當今計算機學術界的普遍現象差不多。我想發表自己的想法A,結果別人已經發表了B,解決了A要解決的問題,而且還比A簡 單和清晰。怎么辦呢?首先,我聲明自己從沒看過B的論文,這樣就可以被稱為“獨立的發現”。然后,我證明A和B在“本質”上是等價的。最后,我東拉西扯, 挖掘一下B的局限性,A相對于B在某些邊沿領域的優勢…… 這樣反復折騰,尋找A的優勢,總有一天會成功發表的。一旦發表成功,就會有人給我唱高調,沒用的東西也要說成是有用的。他們會在A的基礎上發展他們自己的 東西,最后把我推崇為大師。那發表更早,更簡單優美的B,也就無人問津了。勝利!
現在不得不說一下《圖靈傳》對此的歪曲。Church 的論文發表,比圖靈的論文投稿還早一年,而且 Church 使用了比圖靈機更簡單優雅的計算模型。Church 的成果本來天經地義應該受到更多的尊重,到頭來作者卻說:“...and Turing wasrobbed of the full reward for his originality”(見第 3 節“The Turing machine”)。 讓人感覺貌似是 Church 用不正當的手段“搶走”了圖靈的“原創性”一樣。你本來沒有什么原創性,還丑陋復雜,所以何談搶走呢?我怎么覺得恰恰相反,其實是圖靈搶走了 Church 的原創性?現在提起 Hilbert 可判定性問題,可計算性理論,人們都想起圖靈,有誰還想得起 Church,有誰知道他是第一個解決了這問題的人,有誰知道他用了更優美的辦法?
Lambda 演算與計算理論
由于圖靈到處推銷自己的理論,把不好的東西說成是好的,把別人發明的機器硬往自己的理論上面靠,說他們受到了圖靈機的“啟發”,以至于很多人被 蠱惑,以為它比起 lambda 演算確實有優勢。再加上很多人為了自己的利益而以訛傳訛,充當傳教士,這就是為什么圖靈機現在被人們普遍接受作為計算模型。然而這并不能改變它丑陋和混淆 的本質。圖靈機的設計,其實是專門為了證明 Hilbert 的可判定性問題不可解決,它并不是一個用途廣泛的計算模型。圖靈機之所以被人接受,很大部分原因在于人的無知和愚蠢。很多人(包括很多所謂“理論計算機科 學家”)根本沒好好理解過 lambda 演算,他們望文生義,以為圖靈機是“物理的”,實際可用的“機器”,而 lambda 演算只是一個理論模型。
事實恰恰相反:lambda 演算其實非常的實用,它的本質跟電子線路沒什么兩樣。幾乎所有現實可用的程序語言,其中的語義全都可以用 lambda 演算來解釋。而圖靈機卻沒有很多現實的意義,用起來非常蹩腳,所以只能在計算理論中作為模型。另外一個更加鮮為人知的事實是:lambda 演算其實在計算理論方面也可以完全取代圖靈機,它不但可以表達所有圖靈機能表達的理論,而且能夠更加簡潔和精確地表達它們。
很多理論計算機科學家喜歡用圖靈機,仿佛是因為用它作為模型,能讓自己的理論顯得高深莫測,晦澀難懂。普通的計算理論課本,往往用圖靈機作為它 的計算模型,使用苦逼的辦法推導各種可計算性(computability)和復雜性(complexity)理論。特別是像 Michael Sipser 那本經典的計算理論教材,晦澀難懂,混淆不堪,有時候讓我都懷疑作者自己有沒有搞懂那些東西。
后來我發現,其實圖靈機所能表達的理論,全都可以用更加簡單的 lambda 演算(或者任何一種現在流行的程序語言)來表示。圖靈機的每一個狀態,不過對應了 lambda 演算(或者某種程序語言)里面的一個“AST 節點”,然而用 lambda 演算來表示那些計算理論,卻可以比圖靈機清晰和容易很多。在 Indiana 大學做計算理論課程助教的時候,我把這種思維方式悄悄地講述給了上課的學生們,他們普遍表示我的這種思維方式更易理解,而且更加貼近實際的編程。
舉一個很簡單的例子。我可以用一行 lambda 演算表達式,來顯示 Hilbert 的“可判定性問題”是無解的:
Halting (λm.not (Halting (m,m)), λm.not (Halting (m,m)))
完整的證明不到一頁紙,請看我的另外一篇文章(英文)。這也就是圖靈在他的論文里,折騰了十多頁紙證明的東西。
我曾經以為自己是唯一知道這個秘密的人,直到有一天我把這個秘密告訴了我的博士導師,Amr Sabry。他對我說:“哈哈!其實我早就知道這個,你可以參考一下 Neil Jones 寫的一本書,叫做《Computability and Complexity: From a Programming Perspective》。這本書現在已經可以免費下載。
此書作者用一種很簡單的程序語言,闡述了一般人用圖靈機來描述的那些理論(可計算性理論,復雜性理論)。他發現用程序語言來描述計算理論,不但 簡單直接,清晰明了,而且在某些方面可以更加精確地描述圖靈機無法描述的定理。得到這本書,讓我覺得如獲至寶,原來世界上有跟我看法如此相似,對事物洞察 力如此之高的人!
在一次會議上,我有幸地遇到了 Neil Jones,跟他切磋思想。當提到這本書的模型與圖靈理論的關系,老教授謙虛地說:“圖靈的模型還是有它的價值的……” 然而到最后,他其實也沒能說清楚這價值何在。我心里很清楚,他只是為了避免引起宗教沖突,或者避免顯得狂妄自大,而委婉其詞。眼前的這位教授,雖然從來沒 有得過圖靈獎,很少有人聽說過他的名字,然而他對于計算本質的理解,卻比圖靈本人還要高出很多。
總的說來,圖靈機也許不是一文不值,然而由于 lambda 演算可以更加清晰地解釋圖靈機能表示的所有理論,圖靈機的價值相對來說幾乎為零。Church 在 1937 年給圖靈論文寫的 Review 指出,圖靈機的優勢,在于它可以讓不懂很多數學,不理解 lambda 演算之類理論的人也可以看得懂。我怎么覺得圖靈機對于不懂很多數學的人,理解起來其實更加痛苦呢?而且就算它真的對“外行”或者“笨人”的理解有好處,這價值貌似也不大吧?:P
電子計算機
很多“理論計算機科學家”喜歡說,大家現在用的計算機,只不過是一個“Universal Turing Machine”。就算你根本不知道圖靈是誰,自己辛苦設計出一個機器或者語言,他們總喜歡說:“是圖靈啟發了你,因為你那東西是跟圖靈機等價的,是圖靈 完備的……”
那么現在讓我們來看看,圖靈本人和他的理論,真正對電子計算機的發展起過多大的作用吧。如果一個人對一個行業起過重大的作用,那我們可以說“沒 有他不行”。然而事實卻是,即使沒有圖靈,計算機技術會照樣像今天一樣發展,絲毫不會受到影響。看一看歷史,你也許會驚訝的發現,圖靈的理論不但沒能啟發 任何計算機的設計,而且圖靈親自設計的唯一一個計算機(ACE),最后也以悲慘的失敗告終。
什么是 Universal Turing Machine(UTM)
ACE 失敗的一個重要原因,是因為圖靈過度的看重他自己發明的 Universal Turing Machine(UTM)。所以我想首先來解密一下,這個被很多人吹得神乎其神的,似乎什么都可以往上面扯的 UTM,到底是什么東西。
說白了,UTM 就是一個解釋器,就像 Python 或者 JavaScript 的解釋器一樣。計算機的處理器(CPU)也是一個解釋器,它是用來解釋機器指令的。那這樣說來,任何可編程,具有指令集的機器都是 UTM 了,所以圖靈的理論啟發了所有這些機器?你盡管跟我扯吧 :)
你應該知道,在圖靈的 UTM 出現以前,Church 的 lambda 演算里面早就有解釋器的概念了,所以 UTM 根本不是什么新東西,而且它比起 lambda 演算的解釋器,真是丑陋又復雜。而 Church 其實也不是第一個提出解釋器這概念的人,像這類通用的概念,已經很難追溯是誰“發明”的了。也許并不是某一個人發明了它,而是歷史上的很多人。
解釋器這個概念的涵義實在是包羅萬象,幾乎無處不在。只要是“可編程”的機器,它本質上必然包含一個解釋器。一個工程師在不知道解釋器這概念的 情況下,照樣很有可能“不小心”設計出一個可編程的機器,所以如果你把這些全都歸結成圖靈或者 Church 的功勞,就太牽強了。
圖靈與 ACE 的故事
事實上,最早的電子計算機,并不是圖靈設計的,而是電子工程師跟其他一些數學家合作的結果。根據老一輩工程師的敘述,圖靈的工作和理論,對于現實的電子計算機設計,幾乎沒有任何的正面作用。很多工程師其實根本不知道圖靈是誰,圖靈機是什么。他們只是根據實際的需求,設計和制造了那些電路。這就是為什么我們今天看到的電子計算機,跟圖靈機或者圖靈的其他理論幾乎完全不搭邊。
世界上最早的兩臺電子計算機,ENIAC 和 EDVAC,都是美國人設計制造的。其中 EDVAC 的設計報告,是馮諾依曼(von Neumann)參與并簽署的。提到 EDVAC 的設計,《圖靈傳》有一段有趣的介紹,它基本是這樣說的:“馮諾依曼在 Princeton 的時候,很了解圖靈開天辟地的發明—UTM。UTM 只有一根紙帶,而 EDVAC 把指令和數據放在同一個存儲空間,所以 EDVAC 的設計肯定是受了 UTM 的啟發。然而 EDVAC 的設計報告,卻只字不提圖靈和 UTM 的名字,更沒有引用圖靈劃時代的論文《Computable Numbers》……”
這其實是在含沙射影的說,馮諾依曼和 EDVAC 團隊抄襲了圖靈的研究成果。照這種歪理,我洗衣服的時候,襪子和內褲放在同一個桶里洗,也是受了圖靈的啟發了,就因為 UTM 只有一條紙帶?這世界上的事物,還有啥不是受了 UTM 啟發的?這讓我想起某些全靠打專利官司賺錢的公司(patent troll)…… 馮諾依曼作為一代數學大師,比 UTM 重大的研究成果多得是了,他會在乎抄襲圖靈的東西嗎?其實人家恐怕是根本沒把圖靈和他的論文當回事。而且其他人(比如 Church)早就有跟 UTM 等價的想法,而且還更好,更簡單。之前搶了 Church 的風頭,現在居然欺到馮諾依曼頭上來了。哎,真受不了這種一輩子只想出過一個點子的人……
所以聽說美國人造出了 EDVAC,圖靈開始各種羨慕嫉妒恨,感嘆自己英才無用武之地。終于有一天,他的機會來了。在 EDVAC 誕生幾個月之后,英國國家物理實驗室(NPL)聯系了圖靈。他們想趕上美國的計算機技術發展,所以想招募圖靈,讓他幫忙山寨一個 EDVAC 的“英國特色版本”。圖靈設計的機器叫做 ACE(Automatic Computing Engine)。最初,圖靈給 NPL 一個很宏偉的藍圖:ACE 可以如此的強大,以至于整個英國只需要這樣一臺計算機就夠了,我們可以把它叫做“英國國家計算機”…… 然而再大的口號,也難逃脫現實的檢驗,ACE 項目最終以失敗告終。
《圖靈傳》把 ACE 失敗的責任,推托到 NPL 和其它人的“近視”和“官僚”,然而 ACE 失敗的主要責任,其實在于圖靈自己:他完全沒有設計一臺現實的計算機的基本技能,卻總是自以為是,設立高大空的目標。圖靈的設計跟當時(包括現在的)所有 實用的計算機都有巨大的差別。不出你所料,他最初的設計思路,是根據自己之前的論文《Computable Numbers》里提到的“Universal Turing Machine”,不過從中去掉了一些不實際的設計,比如用一根紙帶來存儲數據。這一點改進貌似做對了,可是呢,他又加入了一些讓工程師們無語的設計,美 其名曰“極簡設計”(minimalism)。比如,ACE 的硬件只提供 AND, OR, NOT 之類的邏輯運算作為“基本操作”,其它的算數操作,包括加減乘除,全部用代碼來實現。圖靈大師啊,你知不知道有一種重要的指標,叫做“效率”?
這還不算…… 后來他更加異想天開,終于扯上了“思考機器”(thinking machines)—他想讓 ACE 成為可以像人一樣思考的機器,還想讓這機器能夠自己寫自己的代碼。按照圖靈的原話:“在 ACE 的工作中,我對人腦建模的興趣,比實際的計算應用更感興趣。” 他顯然已經把 ACE 當成了自己一個人的玩具,而不再是解決人們實際需求的工具。只要有人反對這想法,他就會嘲笑說,你是怕我的機器太聰明了,搶了你的飯碗吧?其實圖靈對于實 際的人腦工作原理所知甚少,基本處于初中生理衛生課本水平,然而他總喜歡對人說,人腦不過就是一個 UTM。看吧,它有輸入,輸出,狀態轉換,就跟 UTM 一樣…… 所謂“圖靈測試”(Turing Test),就是那時候提出來的。當然了,因為他扯到了“thinking machine”,就有后人把他稱為人工智能(AI)的鼻祖。其實呢,圖靈測試根本就不能說明一個機器具有了人的智能,它只是在測試一些膚淺的表象。后 來,“thinking machines”成為了一種通用的幌子,用于籌集大筆科研經費,最后全都血本無歸。
圖靈設計了這機器,NPL 當時卻沒有能力制造它。于是他們求助于另外兩位實現過計算機的工程師:F. C. Williams 和 Maurice Wilkes(后 來 EDSAC 計算機的設計者),請他們幫忙實現圖靈的設計。可想而知,Williams 和 Wilkes 都表示不喜歡 ACE 的設計,而且指出圖靈的性格與自己的研究風格不匹配,不愿跟他合作,所以雙雙拒絕了 NPL 的邀請。最后,NPL 新成立了一個電子部門,ACE 的工程終于可以開始。然而,根據資深工程師們的討論,覺得圖靈提出的制造一個“電子人腦”和“智能機器”,并不是實際可行,或者在短期之內能派上用場的項 目,所以決定做一些實際點的事情。圖靈對此非常惱火,各種抱怨,說別人官僚啊,近視啊,沒想象力啊之類的,然后開始公開的抵制 NPL 的決定。
最后工程師們和管理層都受不了他了,鑒于他名聲在外,又不好意思開掉他,只好提出一個破天荒的提議:由 NPL 資助,讓圖靈回到劍橋大學去度年假(sabbatical),做一些純數學的研究。于是 ACE 在圖靈不在的情況下,終于開工了??1950 年,ACE 運行了它的第一個程序。然而工程師們實現的 ACE,完全偏離了圖靈的設計,以至于實際的機器和圖靈的設計之間,幾乎沒有任何相似性。一年之后,圖靈還想回到 NPL,繼續影響 ACE 的設計,然而 NPL 的領導們卻建議他繼續留在大學里做純理論的研究,并且讓曼徹斯特大學給他一個職位。最后圖靈接受了這個建議,這下大家伙兒都松了一口氣…… :P
圖靈設計的唯一一個計算機 ACE,終究以圖靈完全退出整個項目而告終。今天回頭看來,如果當時圖靈留下來了,NPL 真的按照圖靈的意思來做,ACE 恐怕直到今天都造不出來。由于圖靈不切實際的設計和高傲的性格,NPL 失去了最優秀的人的幫助。1949 年,Maurice Wilkes 按照 EDVAC 的思路,成功制造了 EDSAC, 速度是 ACE 的兩倍以上,而且更加實用。所以你看到了,圖靈并不是一個實干家,他的雙腳飄在半空中。他的理論,他設計的機器,他的代碼,全都停留在紙上。他并沒有幫助 造出任何一臺實際可用的計算機,他對計算機的工程實現幾乎沒有任何有益的影響。可惜的是,有些人喜歡把實干家們千辛萬苦造出來,真正可以用的東西,牽強附 會地歸功于某些高談闊論的理論家,仿佛那是理論家的功勞似的。這也許就是為什么圖靈被他們稱為“計算機之父”吧。
如果對 ACE 和其它早期計算機感興趣,你可以參考一下更詳細的資料。你也可以看一看《圖靈傳》,雖然它觀點荒唐,對圖靈各種偏袒,然而圖靈和其他人的通信,基本的史實,他應該不好意思篡改。
總結
我說這些是為了什么呢?我當然不是想否認圖靈所做出的貢獻。像許多的計算機工作者一樣,他的某些工作當然是有意義的。然而那種意義并不像很多人所吹噓的那么偉大,它們甚至不包含很多的創新。
我覺得很多后人給圖靈帶上的光環,掩蓋了太多其它值得我們學習和尊敬的人,給人們對于計算機科學的概念造成了誤導。計算機科學不是圖靈一個人造出來的,圖靈并不是計算機科學的鼻祖,他甚至不是在破解 Enigma 密碼和電子計算機誕生過程中起最重要作用的人。
許許多多的計算機科學家和電子工程師們,是他們造就了今天的計算科學。他們的聰明才智和貢獻,不應該被圖靈的光環所掩蓋,他們應該受到像跟圖靈一樣的尊敬。希望大家不要再神化圖靈,不要再神化任何人。不要因為膜拜某些人,而失去向另一些人學習的機會。