洛夫萊斯夫人的註解

在為分析機尋求支持的過程中,查爾斯·巴貝奇受邀前往都靈在意大利科學家大會上發表演說。當時有一位年輕的軍事工程師記下了巴貝奇的演說內容,他就是路易吉·梅納佈雷亞(Luigi Menabrea)上尉,後來更成為意大利的首相。在巴貝奇的幫助之下,梅納佈雷亞在1842年10月發表了一篇詳細描述分析機的法語論文。

一位友人建議埃達將梅納佈雷亞的論文翻譯出來,然後將譯文發表在《科學報告》(Scientific Memoirs )上,這是一本專門刊登科學論文的期刊。對埃達來說,這是她為巴貝奇效力和展示自己才能的機會。在完成翻譯之後,她將自己的成果告知了巴貝奇,後者在高興之餘還感到了幾分意外。「我曾經問過她,既然她對這個論題如此精通,為什麼不自己寫一篇原創的論文。」巴貝奇如是說。34 她對此的回應是她從來沒有想過這麼做。當時的女性通常都不會發表科學論文。

巴貝奇建議埃達為梅納佈雷亞的論文增加一些註解,她欣然地接受了這項提議。於是她開始為這篇論文撰寫一個叫作「譯者註解」(Notes by the Translator)的章節,註解內容最終達到了19 136字,相當於原論文長度的兩倍多。她為這份註解署上了「A.A.L.」的名字,這是「奧古斯塔·埃達·洛夫萊斯」(Augusta Ada Lovelace)的縮寫。這份「註解」比論文本身還要出名,而且它注定要將埃達變成計算機歷史上的一位標誌性人物。35

1843年夏,埃達在薩裡郡的鄉間別墅進行這份註解的編寫,在此期間,她與巴貝奇交換了大量信件。她在同年秋天搬回了倫敦的家中,隨後與巴貝奇進行了多次會面。這篇「註解」的學術專業性和作者女性的身份也引起了少量的爭議,有人認為註解的內容主要是巴貝奇的想法。巴貝奇在自己的回憶錄中將大部分的功勞都歸於埃達:「我們一起討論了各種可以採用的實例:我提出了其中一部分,但最終的實例都是她自己選定的。此外,不同問題的代數計算部分也是由她完成的,除了一項關於伯努利數的計算之外,因為我當時主動提出要幫助洛夫萊斯夫人解決這個難題。後來她發現我在計算過程中出現了一個重大的錯誤,於是她將這部分的內容寄回給我進行訂正。」36

埃達在這份「註解」當中探究了四個概念,它們在一個世紀之後誕生的計算機身上得到了重現。埃達提出的第一個概念是關於通用型計算機器的,這種機器不僅可以進行預設的任務,還可以根據編寫和重編的程序完成無限數量的可變任務。換句話說,她構想了現代的計算機。這個概念是「註解A」的核心,埃達在這個部分強調了巴貝奇原來的差分機和他最新提出的分析機之間的區別。「差分機的設計目的是專門為函數∆7 ux = 0的積分製表,」她在註解的開篇中解釋了差分機的用途是計算航海表,「然而,分析機不僅可以用於製作單個函數的表格,而且可以對任意函數進行求值和製表。」

埃達在註解中表示這種功能的實現方式是「為它引入雅卡爾發明的提花原理,就是利用打孔卡片控制紡織物上的複雜圖案的編織方式」。埃達比巴貝奇更能理解這種機器的意義所在。這個概念表明分析機就像是我們現在所熟悉的計算機:這不僅是一台可以完成特定任務的機器,還是一台通用型的機器。她解釋道:

當使用卡片的概念出現時,算法的限制就被打破了。分析機的基礎跟所謂的「計算機器」是不一樣的,它定義了一個完全屬於自己的類型。通過建立一種組合通用符號的機制,加上無限的變化和擴展,它在實物的操作和抽像的思維過程之間建立了一個統一的聯繫。37

雖然這些句子不太容易理解,但它們還是值得仔細研讀的。它們描述了現代計算機的本質。埃達還使用了一些詩意的辭藻來點綴這個概念。「正如雅卡爾織布機可以織成花瓣和樹葉,分析機也可以編出代數的圖案。」她寫道。巴貝奇在讀到「註解A」的時候已經感到興奮不已,他沒有對註解的內容做出任何修改。「千萬不要改動它。」他說道。38

埃達提出的第二個重要概念來自她對通用型機器的描述。她意識到它的運算不必限制於數學和數字。在參考了德摩根將代數擴展為一種形式邏輯的思想之後,她表示像分析機這樣的機器能夠儲存、計算和操作任何可以使用符號表示的對象,包括文學、邏輯和音樂。

為了解釋這個想法,她謹慎地定義了什麼是計算機操作:「也許這是一個恰當的解釋,我們所說的『操作』指的是任何改變兩個或兩個以上事物之間的相互關係的處理,這種關係可以是任何類型的。」她提到計算機操作不僅可以改變數字之間的關係,還可以改變任何邏輯相關符號之間的關係。「它可以處理除了數字以外的對象,這些對象的相互基本關係可以使用抽像的操作原理來表達。」從理論上來說,分析機甚至可以進行關於樂譜的操作。「假如和聲學與樂曲當中的音調之間的基本關係可以進行這種表達和改編,那麼這台機器或許可以做出精妙、嚴謹和複雜的樂曲。」她寫道。這正是埃達式「詩意科學」的終極概念:一首由機器做出的精妙而嚴謹的樂曲!她父親要是聽到這個想法肯定會嚇得不輕。

這種遠見將成為數字時代的核心概念:任何內容、數據或者信息(音樂、文本、圖像、數量、符號、聲音、視頻)都可以採用數字形式來表達,並由機器進行處理。即便是巴貝奇也無法完整看到這些,因為他關注的只是數字。但是埃達認識到這些齒輪上的數字可以用來表示數學數量以外的東西。因此她完成了一次概念上的飛躍——從簡單的計算器上升到我們現代的計算機。多倫·斯韋德(Doron Swade)是一位專門研究巴貝奇的機器的計算機歷史學家,他明確表示這個概念是埃達留下的其中一項歷史遺產。「如果仔細研究這段過渡時期的歷史,我們會發現埃達1843年的論文是一個明顯的轉折點。」他說道。39

埃達的第三個貢獻出現在最後一條「註解G」當中,她在這部分想出了分析機的詳細工作步驟,這相當於我們現在所說的計算機程序或者算法。她當時採用的例子是一個用於計算伯努利數[3] 的程序,伯努利數是一種極為複雜的無窮級數,擁有多種表現形式,它在數論當中佔有相當重要的地位。

為了展示分析機如何生成伯努利數,埃達先描述了一系列的運算,然後製作出一個圖表,上面顯示了每個運算會如何編碼到機器當中。她在這個過程中想出了子程序(用於執行一項特定任務的一系列指令,例如餘弦函數或者復利的計算,子程序在必要時還可以成為一個大型程序的一部分)和遞歸循環(一系列重複執行的指令)的概念。[4] 這些功能是通過打孔卡片的原理實現的。她表示生成每個數字需要使用75張卡片,然後這個過程就可以反覆進行,因為求出的數字可以反饋回計算流程,用於生成下一個數字。「顯然這75張各不相同的卡片可以重複用於計算每一個後續的數字。」她寫道。她想出了一個常用的子程序庫,這是她後來的繼承者們——包括哈佛大學的格雷斯·霍珀,以及賓夕法尼亞大學的凱·麥克納爾蒂(Kay McNulty)和瓊·詹寧斯(Jean Jennings)等女性程序員,在一個世紀之後才做出來的東西。此外,由於巴貝奇的機器可以根據臨時的計算結果調整指令卡片的順序,所以它為我們現在所稱的條件分支奠定了基礎。條件分支指的是在滿足特定條件之後改變指令執行的路徑。

雖然埃達在計算伯努利數時得到了巴貝奇的幫助,不過我們可以從他們交換的信件中看出她對細節的執著。「我在演繹伯努利數的過程中一直堅持計算和鑽研到最後一行數字。」她在7月份寄出的一封信中寫道,再過幾個星期,她的譯稿和註解就要截稿付印了。「我現在正處於非常惶恐的狀態,這些數字讓我陷入了極大的困境和麻煩,我不可能在今天之內做好這件事情……我現在的頭腦一片混亂。」40

在解決了這個難題之後,她在註解中加入了一個主要屬於自己的貢獻:她在一份圖表中明確展示了將算法輸入計算機的詳細步驟,包括兩個遞歸循環。這是一個帶有編號的代碼指令列表,其中含有目標寄存器、運算和註釋——這些是現在任何一位C++(計算機程序設計語言)程序員都耳熟能詳的概念。「我連續不斷地工作了一整天,這也是我工作成果最大的一天,」她在給巴貝奇的信中寫道,「您將會非常欣賞這份圖表。它是我嘔心瀝血的作品。」他們來往的書信明確證明了這份圖表是由她自己獨立完成的;她在這個過程中唯一得到的幫助來自她的丈夫,雖然他不懂這些算法,但他還是願意一筆一畫地為妻子的鉛筆筆跡描上墨水。「洛夫萊斯伯爵這時體貼地為我所寫的全部內容上墨,」她在信中寫道,「我之前不得不使用鉛筆來書寫。」41

根據這份圖表及其生成伯努利數的複雜過程,埃達的仰慕者們把她尊稱為「世界首位計算機程序員」。這種說法其實有點站不住腳,因為巴貝奇至少在理論上已經設計出超過20個可以在分析機運行的操作。但是這些成果都沒有得到發表,而且他也沒有清楚描述這些操作的執行順序。因此,我們還是可以說伯努利數生成算法的詳細編程描述是第一個正式發表的計算機程序,而且這份成果的最終署名是A.A.L.——奧古斯塔·埃達·洛夫萊斯的縮寫。

她在這份「註解」當中還引入了另外一個重要概念,這個概念可以一直追溯到瑪麗·雪萊在拜倫勳爵的提議下所創作的《科學怪人》的故事。它提出了一個關於人工智能的問題,而且直到現在,這仍然是計算機領域中最發人深思的一個哲學問題:機器能夠思考嗎?

埃達認為不能。她斷言,雖然巴貝奇的機器可以根據指令執行操作,但是它不能產生自己的想法和意圖。「分析機不會主動創造任何東西,」她在「註解」中寫道,「它可以根據我們能夠給出的任何指令完成任務。它可以遵循分析,但它沒有能力預見任何的分析關係和事實。」一個世紀之後,計算機先驅艾倫·圖靈(Alan Turing)將這個主張稱為「洛夫萊斯夫人的異議」(詳見第三章)。

埃達希望自己的作品可以被人們看成是一份嚴肅的科學論文,而不是一篇向公眾尋求支持的文章,所以在著手編寫這份「註解」的時候,她就表明自己不會就政府拒絕繼續資助巴貝奇建造分析機一事發表任何意見。巴貝奇對這種做法感到不滿,於是他自己寫了一份批評政府的長篇大論。他希望埃達可以將這部分內容匿名地加入她的「註解」之中,將其當作是她自己的觀點。她拒絕了這個請求,因為她不想自己的作品做出妥協。

在沒有告知埃達的情況下,巴貝奇將自己準備添加的內容直接發給了《科學報告》。這本期刊的編輯認為這篇文章應該單獨刊出,而且建議他「勇敢地」署上自己的名字。雖然巴貝奇有著待人和善的一面,但他有時候也是暴躁、固執和無禮的,這是大多數創新者都具有的性格特點。對方提出的解決方式把他徹底激怒了,他一氣之下在信中要求埃達撤回這篇論文。這下就輪到埃達不高興了。「我親愛的巴貝奇,」她在回信中用上了通常只在男性朋友之間使用的稱呼,「撤回這份譯文和註解會是一件不光彩和不正當的事情。」她在回信的結尾寫道:「請確信我是你最好的朋友,但我永遠也不可能,也不會支持你提出的做法,因為這不僅是大錯特錯的,而且是在自取滅亡。」42

巴貝奇最終做出了讓步,並同意在另外一本期刊上單獨發表自己的文章。埃達在當天向母親抱怨道:

一直以來,巴貝奇先生的處事方式都為我帶來了極大的困擾和壓力……我非常遺憾地斷定,他是在可以忍受的範圍內最為不切實際、自私自利和性情乖張的人……我立刻向巴貝奇聲明,他不可能強迫我捲入他的任何紛爭之中,我也不可能成為他的喉舌……他當時大發雷霆。但我卻不為所動。43

埃達對此次爭執的回應是一封長達16頁的信,她在信中毫無保留地表達了自己的想法,並且生動地展現了自己的善變、得意、幻想和激情。前一句還在對巴貝奇阿諛奉承,後一句就變成了嚴厲斥責,或者在讚揚過後又對他加以詆毀。她在其中一部分對比了他們的動機。「我的一個不可動搖的原則是對真理和上帝的熱愛要先於名聲和榮譽,」她斷言道,「雖然你也愛真理和上帝,但你更愛名聲和榮譽。」慣於自鳴得意的她相信自己肯定會出名:「我希望將自己的能力用於闡釋全能的上帝和他的律法……如果我能夠成為他最著名的先知之一,這將會是我無上的榮耀。」44

在經過一番鋪墊之後,埃達向巴貝奇提出了一項交易:他們應該建立商業上和政治上的合作關係。她可以利用自己的人脈關係和公關文稿幫助巴貝奇建造他的分析機,前提是巴貝奇允許她干預他的商業決策。「我所提供的服務和才智是你最佳的選擇,」她寫道,「請不要輕率地拒絕。」這封信有些部分讀起來就像是一份風險投資的條款清單或者是婚前協議,其中還考慮到了可能需要仲裁人的情況。「你在日常事務當中必須完全遵循我的判斷(或者你現在也可以提出一位仲裁人,在我們出現分歧的時候就由他來做出判斷)。」作為回報,她承諾會「在一到兩年之內向你交出多份明確而可行的方案來幫助你完成你的機器建造」。45

她之前其實也寫過許多類似的信,不然巴貝奇在看到這封信之後應該會大吃一驚。這是她有時候會被自己狂妄自大的野心所主宰的一個例子。儘管如此,她仍然是一個值得尊敬的人,她突破了自己的背景和性別所能夠達到的成就,抵禦了由父親遺傳的惡習帶來的困擾。她堅持不懈地投身於艱深的數學研究事業當中,並取得了我們大多數人都無法企及的成就(僅僅是伯努利數求解這一項就已經勝過很多人了)。在取得驚人的數學成就和充滿創造力的見解的過程中,她不僅經歷了梅朵拉·李的鬧劇,而且遭受了多種疾病的折磨,以至於她產生了對鴉片藥物的依賴,這點使她的情緒變得更加不穩定。她在信的結尾向巴貝奇解釋道:「我親愛的朋友,如果你知道我經歷過怎樣難過和可怕的事情,你自然會明白,我在信中流露的一部分壓抑情緒其實是來自我的感受。」在簡短地提到使用有限差分方法來計算伯努利數的話題之後,她表達了自己的歉意:「抱歉這封信有多處塗改的地方,」然後可憐地問道,「不知道你會不會讓這位『小仙女』繼續為你效勞呢?」46

埃達確信巴貝奇會接受她的提議,讓她成為他的創業合夥人。「他非常想要我的文字為他服務,所以他有可能會屈服,儘管我要求他做出很大的讓步,」她向母親寫道,「如果他真的同意我的提議,我應該可以幫助他脫離困境並建成他的機器。」47 然而,巴貝奇認為更明智的做法是拒絕這個提議。他親自前往拜訪埃達,並「拒絕了全部的條件」。48 儘管他們之後沒有再進行過與科學相關的合作,但是他們之間的關係得到了保持。「我認為自己與巴貝奇之間的友誼比以往更加深厚了。」她在一周後的另一封信中向母親寫道。49 巴貝奇在一封用語親切的信中答應她在下個月前往參觀她的鄉間別墅,並把她稱為「數字魔女」和「我親愛的和欣賞的代言人」。

1843年9月,埃達的譯文和「註解」終於刊登在了《科學報告》上。在此後的一段時間內,她享受著來自朋友們的讚美,更憧憬著能夠成為像自己的導師瑪麗·薩默維爾一樣的人物,在科學界和文學界都佔有一席之地。作品發表一事最終讓她感到自己像是「一個真正的專業人士」。她向一位律師寫信道:「我在專業領域中已經達到了跟你一樣的成就。」50

但事實並非如此。巴貝奇沒有為自己的機器籌到更多的資金,機器始終沒有被建造出來,他最後在貧困潦倒之中鬱鬱而終。至於洛夫萊斯夫人,她再也沒有發表過其他的科學論文,她終日沉迷於賭博和鴉片藥物之中,生活每況愈下。她和一位賭博搭檔私通,後來還遭到這位情夫的勒索,被迫變賣自己的家傳珠寶。在生命的最後一年裡,她與子宮癌進行了一場極其痛苦的抗爭,其間還進行了多次放血治療。她在1852年病逝,終年36歲。按照她的臨終遺願,她被埋葬在一個鄉間墳墓中,長眠於自己素未謀面的父親旁邊,她的父親也是在同樣的年紀逝世。

工業革命的基礎是兩個簡單而重要的概念。創新者們想出了一些可以簡化工作的方法,他們將工作細分成可以通過流水線完成的更為簡單和瑣碎的任務。然後,發明家們開始從紡織業中找到使用機器完成工作步驟的方法,其中有很多工作都由蒸汽機提供動力。以帕斯卡和萊布尼茨的想法為基礎,巴貝奇嘗試在生產計算結果的過程中同時應用這兩個概念,製作出一台機械計算機器,這是現代計算機的前身。他最重大的概念飛躍是這種機器不一定只能執行一種操作,而是可以使用打孔卡片進行編程和重新編程。埃達看到了這個誘人的概念帶來的好處和意義,並從中得出了一個更為令人興奮的想法:這種機器不僅可以處理數字,還可以處理任何能用符號表示的事項。

一直以來,埃達·洛夫萊斯都被人們稱頌為女性主義的代表人物和計算機先驅。例如,美國國防部將其高級面向對像編程語言命名為「埃達」(Ada)。然而,她的狂妄自大和反覆無常也一直遭人詬病,還有人認為她為那份署上她名字的「註解」只做出了少量的貢獻。她在這份「註解」中寫了一段關於差分機的描述,而這番話同樣可以用來解釋她毀譽參半的名聲:「我們在思考一個新的問題時總會出現這樣的趨勢:首先,高估我們已有的特別或重要發現;然後,自然而然地低估這個問題的真實情況。」

事實上,埃達做出的貢獻不但意義深遠,而且鼓舞人心。她窺見未來的能力已經超過了巴貝奇,以及任何一個與她處於同一時代的人。她眼中的未來是機器會成為人類想像力的夥伴,這兩者的結合可以編織出如雅卡爾提花一樣精美的圖案。她對詩意科學的理解讓她能夠欣賞一種想像中的計算機器,雖然當時的科學水平無法實現這種設備的建造,但是埃達認識到了它的處理能力可以用於任意形式的信息。因此,埃達·洛夫萊斯伯爵夫人確實幫助播下了數字時代的種子,它們將在100年之後開花結果。

萬尼瓦爾·布什(1890——1974)和他在麻省理工學院設計的微分分析機

艾倫·圖靈(1912——1954)在捨伯恩學校,照片攝於1928年

克勞德·香農(1916——2001),照片攝於1951年

[1] 巴貝奇的好友威廉·惠威爾(William Whewell)就是在這本書的評論中創造了「科學家」(scientist)一詞,用以表示這些學科之間的聯繫。

[2] 具體來說,他是想用除法差分(pided difference)的方法來得出近似的對數函數和三角函數。

[3] 伯努利數的名字來自17世紀瑞士數學家雅各布·伯努利(Jacob Bernoulli),他曾經研究了連續整數的乘方結果之和的問題。伯努利數在數論、數學分析和微分拓撲學當中都有特別的作用。

[4] 埃達採用的例子包括使用差分技巧製作多項式函數的表格,其中有一個子函數需要用到一個嵌套循環結構,它的內循環有一定的變化範圍。

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