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