查爾斯·巴貝奇和他的機器

查爾斯·巴貝奇從小就對可以完成人類工作的機器很感興趣。當他還是個孩子的時候,他母親就帶他參觀了很多展覽廳和博物館。當時正值19世紀初期,各種各樣的展覽場地如雨後春筍般地出現在倫敦各處。在一座位於漢諾威廣場的博物館中,一位叫梅林的館長邀請他參觀博物館閣樓的工作室,他在那裡看到了很多不同種類的機械玩偶,它們也被稱為「自動玩具」(automata)。其中有一個大概一英尺高的銀色女性舞者玩偶,她的手臂可以優雅地擺動,而且她手上還有一隻小鳥,這隻小鳥的尾巴、翅膀和嘴部的關節都是可動的。這位「銀色女士」可以表達出自己的情感和個性,這種能力讓這個小男孩眼前一亮。「她的眼睛充滿了想像力。」他回憶道。多年以後,他在一場破產拍賣會上發現了「銀色女士」,於是就把它買下來了。這個玩偶後來成為他的晚間技術博覽沙龍上的一個娛樂節目。

巴貝奇在劍橋大學求學期間認識了幾位好友,其中包括約翰·赫歇爾(John Herschel)和喬治·皮科克(George Peacock),他們當時都對劍橋大學的數學課程感到不滿。他們成立了一個叫作「分析學會」(Analytical Society)的社團,主要是說服學校放棄使用帶點的微積分符號(這是由他們的校友牛頓提出的一種微積分表示法),並轉用由萊布尼茨發明的符號,其採用dx和dy來表示無窮小的增量,因此這也被稱為「d」表示法。巴貝奇為他們的社團宣言寫下了這個題目:《完美「D」主義的原則與大學「點時代」的對抗》。27 他雖然為人挑剔,但這毫不妨礙他擁有良好的幽默感。

有一天,巴貝奇正在分析學會的辦公室中埋頭計算一份錯漏百出的對數表。赫歇爾問他在想什麼。「我真希望上帝能賜我一台由蒸汽驅動的機器來執行這些運算啊!」巴貝奇回答道。對於這種使用機械完成對數表製作的方法,赫歇爾的回應是:「這是很有可能實現的。」28 1821年,巴貝奇開始將他的注意力轉向這種機器的建造工作上。

歷史上有很多人都嘗試過製作用於計算的裝置。17世紀40年代,法國數學家和哲學家布萊茲·帕斯卡(Blaise Pascal)為了減輕父親在稅務計算工作上的繁重負擔,發明了一台機械式的計算器。它的表面裝有幾個金屬齒輪,這些齒輪的邊緣被刻上了從0到9的數字。如果要進行加法或者減法計算,操作員會使用一根撥針在齒輪上接連撥出對應的數字,就像是使用轉盤電話一樣。在需要進位或者借位時,齒輪之間的傳動結構會帶動前一位的齒輪轉過一個數字。它是世界上第一台獲得專利並進行商業銷售的計算器。

30年之後,德國數學家和哲學家戈特弗裡德·萊布尼茨(Gottfried Leibniz)嘗試使用一個叫作「步進輪」(stepped reckoner)的裝置來改進帕斯卡的計算器,這個裝置可以進行乘法和除法的運算。步進輪是一個帶有把手的圓柱體,它上面的齒輪可以跟計算齒輪互相嚙合。但是萊布尼茨遇到了一個後來在數字時代反覆出現的問題。帕斯卡是一位熟練的工程師,他可以將科學理論結合到自己的機械天賦當中。跟帕斯卡不一樣的是,萊布尼茨缺乏工程方面的技術,而且他身邊也沒有擅長工程技術的人才。所以正如許多缺乏實踐合作者的偉大理論家一樣,萊布尼茨無法製作出一台運作可靠的計算器。儘管如此,他的核心概念「萊布尼茨輪」後來也被應用到了巴貝奇時代的計算器設計當中。

巴貝奇曾經瞭解過帕斯卡和萊布尼茨的計算器,但他想要做一些更加複雜的東西。他希望構想出一種機械方法來製作對數、正弦、餘弦和正切的表格。[2] 為了做到這點,他借用了法國機械師加斯帕德·德普羅尼(Gaspard de Prony)在18世紀90年代提出的理念。在製作對數表和三角函數表的時候,德普羅尼將所需的運算分解為只含有加法和減法的簡單步驟。然後他將一些簡單的指令傳達給一組擁有一定數學知識的工人,在按照指令完成這些簡單的運算之後,他們會將計算結果交給下一組工人。換句話說,德普羅尼創造了一條流水線。這是工業時代的一項偉大發明,亞當·斯密在描述圖釘廠的勞動分工時曾經對流水線進行過明確的分析。巴貝奇在一次前往巴黎旅行的途中瞭解到了德普羅尼的方法,他後來寫道:「我的腦海中突然浮現了一個想法,同樣的方法可以應用在一直困擾我的繁重計算工作當中,對數也可以像圖釘一樣被製造出來。」29

差分機的複製品

分析機的複製品

雅卡爾紡織機

約瑟夫–瑪麗·雅卡爾(Joseph-Marie Jacquard,1752——1834)的絲織肖像畫,由雅卡爾紡織機織成

巴貝奇意識到,即使是複雜的數學運算也可以分解為多個步驟完成,這些步驟可以歸結為使用簡單的加減法計算的「有限差分」。舉個例子,如果要製作一個平方數表(12 ,22 ,32 ,42 ,等等),你可以將初始數按照以下順序列出:1,4,9,16……將這些數字放在A列。然後在旁邊的B列計算出前面每個相鄰數字之間的差值,也就是3,5,7,9……接下來在C列寫出B列相鄰數字之間的差值,也就是2,2,2,2……當運算被簡化至這種程度之後,它就可以進行逆向運算,將各個運算步驟分配至教育程度不高的工人完成。一位工人負責給B列的最後一個數字加2,然後將計算得出的結果交給另外一位工人,後者會將得到的數字與A列的最後一個數字相加,這樣就可以得出平方數列的下一個數字。

巴貝奇構思了一種使用機械完成這個計算過程的方式,並將其命名為差分機。它可以製作任何多項式函數的表格,也可以使用一種數字化的方式來求出微分方程近似解。

它的工作原理是怎樣的呢?差分機的構造是在多個豎直的轉軸上安裝一層又一層的圓盤,每個圓盤都可以表示從0到9的任意數字。不同轉軸之間的運作通過齒輪來傳動。搖動裝置上的曲柄可以將前一組圓盤表示的數字與下一組圓盤相加(或相減)。這個裝置甚至可以將臨時的計算結果「儲存」在另外一個轉軸上。它的運作過程中最複雜的地方是需要「進位」和「借位」的時候,比如我們用筆計算「36 + 19」或者「42–17」時出現的情況。在參考了帕斯卡計算器的原理之後,巴貝奇想出了一些可以使用齒輪和轉軸處理計算的精巧設計。

從概念上來看,這台機器確實是一項奇跡。巴貝奇甚至想出了一個製作質數表的方法,這種方法可以計算出1 000萬以內的質數。英國政府被這個計劃深深打動了,至少在一開始的時候是這樣的。英國政府在1823年為巴貝奇提供了1 700英鎊的種子基金,並在巴貝奇建造這台機器的10年期間陸續投資了超過17 000英鎊。這個造價相當於一艘戰艦的兩倍。然而這個計劃遇到了兩個問題。首先,巴貝奇和他聘請的工程師都沒有足夠的技術製造出一台完整而可行的機器;其次,他開始構思另外一件更加偉大的作品。

巴貝奇在1834年想出了一個通用型計算機器的概念,這種機器可以根據預先設計好的指令進行各種不同的運算。它在執行一項任務的過程中可以被切換到另外一項任務,它甚至可以根據臨時的計算結果自動切換任務(按照巴貝奇的說法是改變「工作模式」)。巴貝奇將這台構想中的機器命名為分析機(Analytical Engine)。他的理念足足領先了他所處的時代一百年的時間。

這台分析機正是埃達·洛夫萊斯所說的「組合能力」(Combining Faculty)的產物,這是她在那篇討論想像力的隨筆中提到的概念。巴貝奇在設計這台機器的時候結合了在其他領域出現的創新,這是許多偉大發明家都會採用的一種技巧。他原來是使用打上尖釘的金屬鼓輪來控制轉軸的運作,不過他後來也跟埃達一樣詳細地研究了自動紡織機的工作原理。這種紡織機是由法國人約瑟夫–瑪麗·雅卡爾在1801年發明的,它的出現改變了整個絲織產業。紡織機在提花時會使用針鉤提起特定的經線,然後橫桿會向前推動經線下方的緯線。雅卡爾發明了一種使用打孔卡片來控制上述流程的方法。卡片上的孔可以決定針鉤和橫桿在每一輪編織的動作,從而實現複雜圖案的自動提花。梭子每織出一層緯線都需要使用一張新的打孔卡片。

1836年6月30日,巴貝奇在自己的「草稿本」上寫下了一句話:「建議使用雅卡爾紡織機替代鼓輪。」30 這句話是開啟計算機歷史的里程碑。將金屬鼓輪換成打孔卡片意味著可以輸入無限數量的指令,而且還可以更改任務執行的順序,從而降低了設計可重複編程的通用型計算機器的難度。

巴貝奇購買了一幅雅卡爾的肖像畫,作為自己沙龍上的一件展品。這幅肖像畫的背景是一台紡織機,雅卡爾坐在扶手椅子上,手裡拿著一把圓規,旁邊堆放著許多長方形的打孔卡片。作為沙龍上的一個娛樂環節,巴貝奇會讓賓客們猜這幅畫像的材質。大多數人都認為它是一幅精美的版畫。隨後他會向賓客們揭曉這其實是一幅精細的織錦,由24 000行絲線織成,每一行絲線的編織都使用了不同的打孔卡片來控制。維多利亞女王的丈夫阿爾伯特親王有一次參加了巴貝奇的沙龍,他好奇為什麼巴貝奇會對這幅織錦如此感興趣。巴貝奇回答道:「它可以很好地幫助解釋我的計算機器——分析機的本質。」31

然而,幾乎沒有人能夠理解這台新機器的好處,而且英國政府也沒有資助建造它的意向。儘管巴貝奇已經盡力對外宣傳這台機器,但無論是大眾報刊還是科學期刊都沒有對它產生多少關注。

然而,巴貝奇還是找到了一位追隨者。埃達·洛夫萊斯能夠完全理解通用型計算機器的概念。更重要的是,她為它想出了一個令人振奮的用途:除了數字之外,它還可以處理任意的符號體系,例如樂譜和藝術符號。她從這個概念中看到了詩意,同時也打算鼓勵其他人看到這種詩意。

埃達接連向巴貝奇發出了許多封信,儘管她面對的是一位比自己年長24歲的長輩,但她有幾封信的用語已經近乎無禮。在其中一封信中,她描述了一種使用26顆彈珠的單人跳棋遊戲,這個遊戲的目標是通過「跳吃」移除棋盤上的彈珠,直到剩下最後一顆彈珠為止。雖然她已經精通這個遊戲,但她還是想要推導出一個「可以用於求出棋盤解法的數學公式,而且這個公式還可以轉換成符號化的語言」。然後她還問道:「在您看來,我的想像力是不是過於豐富了?不過我自己並不這樣認為。」32

埃達的目標是成為巴貝奇的公關人員和合作夥伴,跟他一起為建造分析機尋求支持。「我非常渴望可以當面跟您談談。」她在1841年年初的一封信中寫道,「我會將自己的所有見解都告訴您。我想像未來有這麼一天……我的頭腦可以對您的行動和計劃有所幫助。要是您認為我有為您效勞的價值和能力,我願肝腦塗地。」33

一年之後,一個為埃達量身定做的機會出現了。

《創新者:一群技術狂人和鬼才程序員如何改變世界》