[英]喬治·扎卡達基斯
和人類演化一樣,現(xiàn)代計算機來自一系列繁復(fù)雜亂的歷史進程。用生物學(xué)打比方,現(xiàn)代計算機的DNA共生于兩種完全獨立的思想,在過去200年中,隨著經(jīng)濟和社會環(huán)境的變化最終摻雜在一起。
其中,第一個思想來自我們一直以來本能的渴望,渴望創(chuàng)造能像生命體一樣行為的人造物;另一個思想來自對于邏輯學(xué)的研究,我們驚奇地發(fā)現(xiàn),邏輯學(xué)和數(shù)學(xué)是一對雙生子。
兩種思想,最終融為一體。
機械造物者
許多發(fā)明家和工程師以制造娛樂性的自動機械為時尚。
18世紀末法國發(fā)明家雅克.德.沃康松設(shè)計制造了一個能消化的機器,“消化鴨子”:給這只機械鴨子喂食谷物,它看起來會消化并且排泄。
19世紀初,瑞士機械師亨利.梅拉德特制造了一臺自動機械,會畫四幅畫,寫三首詩。
在這個階段,自動機械是在模仿自然,它們是一批人工控制論系統(tǒng)。與此同時,古希臘著名思想家亞里士多德關(guān)于邏輯作為運算的思想引發(fā)了一個問題:如何將這樣的過程自動化?
德國的哲學(xué)家、數(shù)學(xué)家萊布尼茨創(chuàng)造了微積分、二進制數(shù)字系統(tǒng)等發(fā)明。1679年,他夢見了一臺機器,這臺機器用彈珠表達二進制數(shù)字,這些彈珠按打孔卡片來移動,操作卡片和彈珠,就可以完成自動化的機械計算。萊布尼茨假設(shè)任何計算機器都應(yīng)該有可操作的移動部件,可以排序和計數(shù)。
現(xiàn)代計算機和萊布尼茨想象的非常接近。
電子脈沖就像彈珠,以來回移動表示不同電壓,現(xiàn)代的移位寄存器控制著輸入和輸出以便移動數(shù)據(jù),就像是萊布尼茨的打孔卡片。
與此同時在法國,數(shù)學(xué)家布萊士.帕斯卡和德國天文學(xué)家威廉.施卡德一起,制造了第一臺可以使用的機械計算器。經(jīng)過諸多試驗后,帕斯卡機得以問世,1645年由帕斯卡本人向公眾演示。這是一臺機械計算器,可以加減任意兩個數(shù)字,通過5個輪子,各可以輸入0到9的數(shù)字。
以今天的標準,這個機器用起來費勁兒,但是在17世紀中葉,當人們需要快速加總很大的數(shù)字時它就非常合理了。
萊布尼茨為帕斯卡機加上了乘法和除法運算。1685年,他設(shè)計了齒輪計算器,以及“萊布尼茨輪”,這個機器通過特定的設(shè)置可以完成計算。這些設(shè)置都是靠著齒輪的設(shè)計,以及計數(shù)輪的齒之間遞增的距離完成的。
萊布尼茨的輪子和帕斯卡的齒輪組之后都變成了“四則運算計算器”的關(guān)鍵零件,這是1851年第一臺可以進行多步計算的機械計算器。
這臺機器賣出了數(shù)百萬臺,并且在全世界的辦公室里廣泛使用。實際上,直到20世紀70年代中期電子計算器發(fā)明之前,萊布尼茨式的發(fā)明還在用于自動計算。
過去數(shù)個世紀,用來制造自動機械的技術(shù)和關(guān)鍵的機械零件如今用來制造機械計算器了,這種轉(zhuǎn)型預(yù)告了20世紀末機器人的發(fā)明,而機器人變成了仿人形或仿動物形自動機械的下一階段。
而且,這種轉(zhuǎn)型有著文化因素,那就是計算機的擬人化:希望計算機器可以有“大腦”一樣的能力,像人一樣的行為,這種觀念之后會在人工智能研究中再一次出現(xiàn)。
巴貝奇的差分機和帕斯卡、萊布尼茨的計算機器一道,都是另一類自動機器的前身,后者將會與符號邏輯相遇、融合。這是技術(shù)和傳統(tǒng)的偉大會合,一個技術(shù)史上真正的“奇點”,它從古代亞歷山大里亞的自動機械出發(fā),轉(zhuǎn)變成了18世紀末的計算機器。
曾經(jīng)用來模擬和模仿生命的機器,現(xiàn)在用來“咀嚼”數(shù)字,在一個快速變化并將要開始工業(yè)化的世界,這些計算機器是必不可少的,它們滿足了高效、零錯誤算數(shù)計算的需求。
在這一歷史的交匯時刻,符號邏輯已經(jīng)因為布爾和弗雷格而得到充分的發(fā)展了。符號邏輯和這一類計算機器相遇,假以時日,一類新的技術(shù)將會涌現(xiàn):數(shù)字的、電子的、通用的計算機。
兩類技術(shù)歷史性的融合,機械和物理的技術(shù)、邏輯數(shù)學(xué)的符號,決定了現(xiàn)代計算機的雙重本性,于是它分離成了硬件和軟件。無論如何,在18世紀末,絕對無法預(yù)知計算機的演化會最終走向分離,而當分離發(fā)生了,通用計算機不得不被發(fā)明了兩次。
巴貝奇的妙想
查爾斯.巴貝奇的工程設(shè)計區(qū)分了程序和可以執(zhí)行程序的機器,他是這樣做的第一人。為此,他被推崇為“現(xiàn)代計算機之父”。
但他并不是一次就完成了這個創(chuàng)新的設(shè)計,而是花費數(shù)年忙于各種工作,直到他從紡織業(yè)找到了技術(shù)解決方案,并且將之應(yīng)用于自動解決一般數(shù)學(xué)問題。
巴貝奇于1791年出生在倫敦,此時大不列顛的漢諾威王室已經(jīng)建立了歐洲最為自由民主的制度。民主、產(chǎn)權(quán)和法律成了創(chuàng)造空前財富的引擎,在一個新的世界秩序下,在工業(yè)革命的開端,它們逐漸成形。
在19世紀初,歷史上第一次,海運、鐵路、國際銀行和貿(mào)易已經(jīng)連接了我們星球上每一塊適宜居住的大陸。根據(jù)人類學(xué)家伊恩.莫里斯的分析,工業(yè)革命是人類歷史上最重要的事件。
整個世界為之改變,包括我們社會組織的復(fù)雜程度、我們建造城市的方法、發(fā)動戰(zhàn)爭的手段、我們?nèi)绾畏窒砗吞幚硇畔?,以及我們可以獲取和使用的能量,引發(fā)工業(yè)革命的關(guān)鍵技術(shù)是蒸汽機。
詹姆斯.瓦特精巧地改進提升了蒸汽機的效率,這一改進于1775年問世,以機械的力量改變了全球經(jīng)濟。許多歷史學(xué)家稱這一時期為“第一次機器革命”,此時機械成了人類社會不可分割的一部分,并永遠改變了社會。
這是巴貝奇生活的時代,他的出生地大英帝國是第一個工業(yè)化的國家,也是在經(jīng)濟上和海軍實力上無可匹敵的帝國,而大英帝國財富的核心是制造業(yè),核心的核心又是紡織業(yè)。
巴貝奇對制造一點兒也不陌生。endprint
1832年他出版了一本描述工業(yè)生產(chǎn)組織的著作,由此成了名人。書中,他探索了如何最優(yōu)地組織工業(yè)生產(chǎn),討論了勞動分工、利潤分配和工廠的合理設(shè)計等前衛(wèi)思想。
這是多年來造訪工廠和研究制造過程的結(jié)晶,正是這些知識和洞察啟發(fā)了巴貝奇設(shè)計他的第一臺機械算數(shù)機器:差分機一號。
在算數(shù)計算和制造過程之間存在著明顯的共同點。兩者都可以拆分成小的、自給自足的單元,以便單獨處理或批處理。這種“批處理”簡化了整個過程的復(fù)雜度,讓過程變得可控。
同時,一個單元處理的輸出是下一個單元的輸入。制造的過程和數(shù)學(xué)的、邏輯的過程類似,都是一系列的步驟,即算法。而且,制造過程是遞歸的:它們不斷重復(fù)自身,于是一個產(chǎn)品的許多備份就全部制造出來了。
質(zhì)量是制造過程中另一個必不可少的要素,有必要檢查每一個制造的單元都有著最好的產(chǎn)出,因為它們又是下一個生產(chǎn)環(huán)節(jié)的輸入。
基于以上觀察,巴貝奇推測數(shù)字可以用和制造相近的過程來處理,通過算法產(chǎn)出新的數(shù)字。每一步計算都應(yīng)該是算法的一個步驟,并且產(chǎn)出一個特定的數(shù)字作為輸出,以便檢查對錯。這樣,計算錯誤作為計算過程的質(zhì)量的反映就可以最小化了。
巴貝奇還注意到,用于在工廠中推動機器的蒸汽機,也可以用于驅(qū)動計算機器。他關(guān)于未來的設(shè)計是打造一臺自動機器,可以計算數(shù)字并且總能提供正確答案,不會出錯。
就像“商品制造”,“計算制造”也應(yīng)該是機械的,以蒸汽機推動,不受人類錯誤的影響,有能力無限地產(chǎn)出同樣完美的結(jié)果。
倫敦天文學(xué)會資助了巴貝奇,讓他得以將受到制造業(yè)啟發(fā)的計算機器制造出來。巴貝奇作為天文學(xué)會的成員,熟知帕斯卡和萊布尼茨的計算器,于是開始設(shè)計和制造英國的計算機器。
在當時,能夠計算對數(shù)和三角函數(shù)的機器設(shè)計的關(guān)鍵問題是除法和乘法,帕斯卡機和它的仿制品都做不到這兩點。為了解決這一問題,巴貝奇利用了微分方程的特性。
這些方程定義了兩個變量之間的關(guān)系。讓一個計算的輸出當作下一個計算的輸入,再通過簡單的加法或減法,微分方程就可以實現(xiàn)乘法和除法。使用微分方程和建造差分機一樣偉大。
顯然,遞歸函數(shù)以及反復(fù)執(zhí)行一個運算這一概念(或稱“循環(huán)”),與用機械計算有著不可分割的聯(lián)系。控制論和復(fù)雜的數(shù)學(xué)此時融入了計算機器的演化,新的計算機和帕斯卡與萊布尼茨發(fā)明的那種簡單、線性的計算機器分道揚鑣了。
據(jù)說巴貝奇是個很難合作的人,1831年,他和工程師約瑟夫.克萊蒙特因為制造差分機的成本爭吵鬧翻。此時只制造了一個原型,就是現(xiàn)在展出在倫敦科學(xué)博物館的那一個。
巴貝奇堅持改進最初的設(shè)計,稱之為差分機二號。這第二臺機器最終在百余年后的1991年才制造出來,并且真的成功進行了它最初的設(shè)計者展望的演算。不過,巴貝奇在計算機萬神殿中的地位并沒有因差分機的失敗而動搖。
1837年,他已經(jīng)著手設(shè)計另一臺革命性的機器,可以進行任何演算。他叫這臺機器為“分析機”,像差分機一樣,分析機也受到了制造業(yè)的啟發(fā)。
邏輯的嵌入
在研究英格蘭的制造業(yè)時,巴貝奇注意到了紡織業(yè)的偉大發(fā)明。
1801年,法國發(fā)明家雅卡爾的提花機使用打孔卡來讓機器自動編制非常復(fù)雜的紋樣。機器的機械零件和織物的紋樣一分為二,提花機預(yù)示了計算機硬件與軟件的二分法。
一邊是用于執(zhí)行操作的物理媒介,一邊是作為信息的紋樣,兩者之間是操作的指令集,或者操作的客體。打孔卡可以連在一起,形成更長的紋樣的帶子,作為提花機的輸入來執(zhí)行。
巴貝奇第一次將打孔卡和紙帶引入了計算領(lǐng)域。
打孔卡在一個世紀后會被計算機先驅(qū)重新發(fā)明,而附有符號的紙帶則被圖靈利用,定義了現(xiàn)代計算機的數(shù)學(xué)概念。
有趣的是,巴貝奇設(shè)計的分析機如同一臺差分機傾斜著放在另一臺上面。這個樣子就是兩臺差分機互為鏡像放置,一臺的輸出是另一臺的輸入。
這種對應(yīng)的設(shè)計讓它能夠加入邏輯分支表達式,例如“如果A則B”,以及加入循環(huán)。運算可以反復(fù)多次,結(jié)果可以有邏輯分支,這樣就可以用連接在內(nèi)部的差分機做進一步處理。
這是一個控制論式的設(shè)計,這一創(chuàng)新的、自我指涉的特點,讓分析機做到了“圖靈完備”,也就是說這是一臺可以模擬任何機器的機器。
不幸的是,巴貝奇從來沒有完成這臺他夢想的機器,盡管直到1871年去世之前他還在修補最初的設(shè)計。
巴貝奇還沒來得及完成一本手冊以記錄分析機的功能。幸好,1842年意大利數(shù)學(xué)家、軍事工程師路易吉.梅納布雷亞用法語寫了一篇機器的說明。
一年后,著名英國詩人拜倫男爵的女兒阿達.洛夫萊斯(數(shù)學(xué)家,計算機程序創(chuàng)始人)把這篇說明翻譯成了英語。在她的翻譯中,還有第一則計算機程序,這讓阿達.洛夫萊斯成了軟件的發(fā)明人。
阿達.洛夫萊斯是拜倫男爵唯一的合法子女。她出生后一個月她的父親就遺棄了她和她母親去意大利旅行,在那個夏天的日內(nèi)瓦湖畔遇見了珀西.雪萊和瑪麗.雪萊,阿達再也沒見過她父親,8年后,拜倫參加希臘獨立戰(zhàn)爭時死于希臘。endprint
盡管是一個缺乏雙親之愛的多病小孩,阿達卻表現(xiàn)出高超的學(xué)習(xí)才能,并且對技術(shù)有著強烈的好奇心。12歲時,她迷上了飛行,于是開始試驗各種人造翅膀,研究鳥類的解剖,還寫了一本名為《飛行學(xué)》的書,在書中她畫下了自己的想法和發(fā)現(xiàn)。
1833年,她第一次遇見巴貝奇,一下就迷上了差分機。巴貝奇對她的數(shù)學(xué)才能印象深刻,稱呼她為“數(shù)學(xué)女巫”,在她翻譯的麥納波利分析機說明的注釋里,阿達留下了計算機歷史上最重要的文獻之一。
欽佩于朋友設(shè)計的機器的潛能,她寫道:“巴貝奇先生相信通過他的機器,能夠在三分鐘內(nèi)產(chǎn)出任意兩個20位數(shù)的計算結(jié)果?!彼盅菔玖巳绾卫梅治鰴C,通過編寫一個可執(zhí)行的算法,自動計算一系列的伯努利數(shù)。這一算法被認為是人類寫出的第一個軟件程序。
分析機和阿達.洛夫萊斯的第一個程序讓歷史學(xué)家和玄幻小說作家著迷不已。如果英國財政沒有停止資助巴貝奇的夢想和設(shè)計,如今的社會將會是什么樣子的?分析機是否會把計算時代的到來提前百年?
這當然是架空歷史類作者愛問的問題,他們也確實為此創(chuàng)作了許多部小說、短篇故事和漫畫。不過關(guān)于這個我們棲身于分析機之間的宇宙,我們所知有限,現(xiàn)代計算機架構(gòu)的主要功能要等到近一個世紀后才發(fā)明,在這個架構(gòu)中,軟件和硬件是分離的。
這么看來,分析機如同一次技術(shù)奇點,在一個還沒準備好如何使用它的世界誕生了。如同希臘化時代的一些發(fā)明,比如希羅的蒸汽機、依巴谷的安提基特拉機械,巴貝奇的偉大發(fā)明超越了他的時代。
需要論證的是,我們是否還未完全理解這種分離的重要性,極有可能還需要數(shù)十年才能真正理解,就像是瓦特的蒸汽機,在18世紀末工業(yè)革命中開啟了“第一次機器革命”,現(xiàn)代計算機正在通過經(jīng)濟和社會的數(shù)字化轉(zhuǎn)型進入“第二次機器革命”。
在巴貝奇從差分機到分析機的高明一躍之時,第二次機器革命的種子已經(jīng)孕育。
伴隨著打孔卡的使用,這種計算機程序的物質(zhì)實體還將延續(xù)到20世紀初。但是隨著計算機工程學(xué)的進展,打孔卡過時了,程序明顯變成了“信息的模式”。
隨著符號邏輯變成了計算機語言,“程序”和“數(shù)據(jù)”都變得完全非物質(zhì)化了。物質(zhì)的單元“原子”,變成了信息的單元“比特”。程序與數(shù)據(jù)從機械讀卡器和卡片變成了純粹非物質(zhì)的形式,軟件如同笛卡兒的精神實體,超越了硬件,變成了機械的靈魂。
在巴貝奇去世10年后,喬治.布爾發(fā)現(xiàn)思維可以通過符號邏輯自動化。他的發(fā)現(xiàn)以及弗雷格通過謂詞邏輯所做的擴展,建立了現(xiàn)代計算機語言的基礎(chǔ)。
最終,圖靈將邏輯和計算機器永遠地結(jié)合在了一起。
圖靈機實際上是一臺分析機,處理寫在紙帶上的邏輯符號,處理過程就是執(zhí)行一系列的規(guī)則,執(zhí)行“程序”。
圖靈機和巴貝奇與洛夫萊斯想象中的機器唯一的不同就在于圖靈機可以不在意它處理的符號形式,這些符號可以是數(shù)字、定理或者其他邏輯表達式。這就是計算機軟件。
另一方面,計算機硬件也處于童年、青春期和成年期的變化之中。獨立于巴貝奇,美國發(fā)明家赫爾曼.何樂禮在19世紀80年代末也發(fā)明了用打孔卡存儲數(shù)據(jù)的方法。
從19世紀末到20世紀30年代末,許多看似無關(guān)的發(fā)明創(chuàng)造都參與了定義現(xiàn)代計算機的過程。
這些技術(shù),不論是電動機械還是模擬,在不遠的未來都被很快取代了,更快的、全電子的、數(shù)字的計算機使用真空管和復(fù)雜的電路設(shè)計。巴貝奇設(shè)計分析機時不具備的社會經(jīng)濟條件如今齊備了。
到了20世紀30年代,所有即將誕生的計算機革命需要的基礎(chǔ)技術(shù)都已經(jīng)發(fā)明出來了,等待著機會在一次大爆炸中融合。
唯一欠缺的只有一個奇點時間,一個火花,欠缺一個事件:富裕社會大量投資金錢和智力來攻堅這些“咀嚼”數(shù)字的機器。endprint