愛達的分析機〈譯者評注〉上
巴貝奇為分析機尋求金援時,曾應邀到都靈市,在義大利科學家大會中演講。年輕軍官兼軍事工程師米那比亞(Luigi Menabrea)也在場做筆記,他後來成為義大利首相。在巴貝奇協助下,米那比亞在1842年10月,於法國發表了一篇詳細描述分析機的論文。愛達的朋友建議她替《科學實錄》期刊(Scientific Memoirs)翻譯米那比亞的論文。這是她既能為巴貝奇效勞,又能一展身手的大好機會。論文翻譯完成後,愛達才告知巴貝奇,巴貝奇又驚又喜。
「我問她,既然她對這個題目這麼熟悉,何不自己寫一篇原創論文呢?」巴貝奇說。愛達回答,她從沒有這種念頭。一般而言,當時的女人鮮少發表科學論文。
於是,巴貝奇提議愛達為米那比亞的論文補充一些評注,愛達欣然接受,並熱情展開工作。結果,這篇愛達題為〈譯者評注〉的文章總共有19,136個字,是米那比亞原文的兩倍長。文章署名「A. A. L. 」,代表愛達的全名「Augusta Ada Lovelace」的英文縮寫。
後來這篇〈譯者評注〉變得比米那比亞的論文還有名,愛達注定成為電腦發展史上的指標人物。1843年夏天,愛達在薩里郡鄉間撰寫〈譯者評注〉時,和巴貝奇通了幾十封信,愛達在秋天搬回倫敦後,他們又討論了無數次。
究竟〈譯者評注〉中有多少是愛達自己的觀點,有多少是巴貝奇的想法,曾在某些學術討論和性別相關的辯論中,引發小小的爭議。但巴貝奇在回憶錄中把大部分功勞歸於愛達。
我們一起討論應該附哪些圖表:我提議了幾個,但完全由她自己挑選。她也完成了針對不同問題的代數計算,只有與伯努利數相關的計算除外,我向勒夫雷思夫人提議,這部分由我代勞。但她檢查時發現我在計算過程中犯了一個嚴重錯誤,因此把數字寄回來給我修正。
愛達在〈譯者評注〉中探討了四個觀念,這些觀念在百年後電腦終於誕生時,獲得歷史性迴響。首先是通用機器的觀念。通用機器不但能執行預先設定的工作,還能透過程式化和重新編程,執行可更動的無數工作。換句話說,她已經預見現代電腦的本質。這是她在「譯者評注A」中提出的核心觀念,強調巴貝奇最初的差分機和後來倡議的新分析機之間的差異。
「這部差分機計算的是函數Δ7ux = 0 的積分。」愛達開頭先解釋差分機的功能是計算航海表。「分析機則恰好相反,不是單單為了計算某個特殊函數而設計,而是用來發展和計算任何函數。」愛達接著寫道,分析機之所以具備這樣的功能,是因為巴貝奇「引進雅卡爾設計的新方法—─在織布過程中,透過打孔卡來調節設定複雜的花樣」。愛達甚至比巴貝奇更清楚這件事代表的意義。
換句話說,巴貝奇的機器很可能像我們今天習以為常的電腦一樣:是一部通用機器,而並非只能執行一種特定的計算功能。
愛達解釋:一旦萌生利用卡片的念頭,就跨越了算術的界限。分析機並非只是一般的「計算機」,而是有自己的獨特定位,它的運算機制能結合一連串各式各樣、毫無止境的通用符號,在實體機械操作和抽象心智運作之間,建立起統一的連結。
句子雖然有點累贅,卻值得仔細研讀。因為這些句子勾勒出現代電腦的本質,而愛達以帶詩意的華麗筆觸,生動描繪了其中的核心概念。她寫道:「正如同雅卡爾織布機編織出花與葉,分析機也編織出代數的型態。」巴貝奇讀了「譯者評注A」後,非常高興,不做任何修改。他說:「希望不要改動它。」
愛達第二個值得注意的觀念,來自她對通用機器的描述。愛達充分了解,毋須把通用機器的作業局限於處理數學和數字。沿用從前數學老師笛摩根把代數延伸到邏輯關係的觀念,她指出,像分析機這樣的機器可以儲存、操作、處理任何可用符號代表的事物:包括文字、邏輯、音樂,以及其他任何我們可能透過符號來傳達的事物。
為了解釋這個想法,愛達審慎定義「電腦作業」的意義:
也許可以說,『作業』一詞,是指會改變兩個以上事物間相互關係的流程,無論兩者之間的關係是哪一種。
她指出,電腦作業不只會改變數字之間的關係,也會改變符號之間的關係,只要這些符號有邏輯上的關聯性。「只要事物之間的相互基本關係能以作業的抽象科學來表達,那麼除了數字之外,也能對其他事物產生作用。」理論上,分析機甚至能處理音樂符號:「比方說,假如在和聲學和作曲學中不同音高之間的基本關係,也適用於這樣的表現方式和改編方式,那麼這部機器或許就能以科學方式,精心製作出複雜程度不一的樂曲。」
這樣的洞見後來成為數位時代的核心概念:任何內容、數據或資訊(包括音樂、文字、圖像、數字、符號、聲音、影像)都能透過數位化的表達方式,利用機器來操控。即便巴貝奇自己,都沒能充分洞察箇中涵義,他只專注於處理數字。但愛達領悟到齒輪上的數字不只代表數值,也代表其他東西。因此她在觀念上有了大躍進,從原本只是計算機的機器中,看到今天所謂的「電腦」。
研究巴貝奇機器的電腦史學家史韋德(Doron Swade)宣稱:
這是愛達留給後世的重要遺產,如果我們檢視歷史,研究這段轉變過程,那麼很明顯,轉變是由愛達1843年的論文所帶動的。
愛達的第三個貢獻是,她在最後的「譯者評注G」中一步步詳細說明了我們今天所謂「電腦程式」或「演算法」的運作。她提出的例子是用來計算伯努利數的程式,伯努利數是極複雜的無限數列,以不同的形式在數論中扮演重要角色。
為了說明分析機如何產生伯努利數,愛達先描述作業程序,然後再以圖表說明如何編寫程式碼、輸入機器。她提出「次常式」(執行特定工作〔例如計算餘弦或複利〕的指令序列,需要時可以把它插入更大的程式中)和「遞迴圈」(recursive loop,會自我重複的指令序列)的概念。這些方式都因為採用打孔卡而變得可行。愛達解釋,產生每個數字都需要用到七十五張卡片,接著把產生的數字再輸入機器,產生下一個數字,整個程序反覆進行。
她寫道:「顯然在計算一個接一個數字時,可以反覆使用相同的七十五張變數卡。」她想像以後會有程式庫儲存各種常用的次常式,而愛達在智識上的傳人,包括哈佛大學的霍普(G. Hopper,後來參與馬克一號的設計)、賓州大學的麥克納提(K. McNulty)和詹寧斯(J.Jennings)等人,在一個世紀後的確開發了許多次常式。此外,由於巴貝奇的機器可以根據已計算出來的中間結果,在一連串指令卡片中反覆「跳越」(jump),因此為今天所謂的「條件分支」(在符合特定條件時,改變指令路徑)奠定基礎。
巴貝奇協助愛達計算伯努利數,但往來信函顯示愛達深陷細節裡。「我為了推演伯努利數,一直鍥而不捨,抽絲剝繭。」她在七月寫道,而此時離譯文和評注付梓,只剩幾星期的時間。「我因為這些數字而深陷泥沼,苦惱萬分,眼看今天是不可能完成了,真是令人沮喪……我正處於混亂狀態。」
最後終於推演成功時,愛達加上了自己獨特的貢獻:用圖表說明如何一步步把演算法(包括兩個遞迴圈)輸入電腦。這是一張編了號的編碼指令清單,上面包含目的暫存器、操作和注解──今天任何使用C++ 語言編碼的人對此都很熟悉。
「我整天努力不懈,進行得很順利,」她寫信給巴貝奇,「你會大大讚賞這份圖表,我製作時可是小心翼翼。」從所有的信函中都可看出,表格是由愛達自行繪製的,唯一的助力來自她的丈夫,他雖然不懂數學,但願意把愛達以鉛筆繪製的表格用墨水筆重新描一遍。「L爵士正好心的幫我把它全部描上墨水,」她寫信給巴貝奇,「我起先必須用鉛筆製表。」
由於這份圖表,加上產生伯努利數的複雜流程,愛達受粉絲譽為「全世界第一位電腦程式設計師」。這個說法有一點牽強。因為至少在理論上,關於機器執行工作的可能流程,巴貝奇已經設計了二十多種說明。然而巴貝奇都沒有公開發表,而且也沒有清楚描述如何安排運算程序。因此持平而論,愛達對於產生伯努利數的演算法和程式的詳細描述,可說是公開發表的第一個電腦程式,而且講到底,那幾個英文縮寫終究是代表愛達.勒夫雷思。
愛達在〈譯者評注〉中還提出另一個重要觀念(起源則要回溯到瑪麗.雪萊在與拜倫勛爵共度的週末中創作的科學怪人故事),這個觀念引發了有關電腦和人工智慧最有趣的哲學議題:
機器能思考嗎?
愛達認為不能。
巴貝奇打造的這類機器可以依照指令執行工作,卻無法自行產生想法或意圖,「分析機完全沒有創造任何東西的意圖。」她在〈譯者評注〉中寫道:「只要我們知道如何對它發號施令,它就會一一執行。分析機能夠遵循分析結果,但沒有能力預測任何分析關係或真相。」
一個世紀以後,電腦先驅圖靈(Alan Turing)稱她的主張為「勒夫雷思夫人的反對意見」。
最終回:未盡的偉大理想
〈譯者評注〉是愛達生命中最燦爛的煙火。此作發表後,她的人生就開始走下坡,沒有成為夢想中的偉大科學家。但愛達以領先時代的思維,播下電腦的種子,並在百年後開花結果。
![](https://storystudio.tw/storage/upload/ck_images/%E5%89%B5%E6%96%B0%E8%80%85%E5%80%91(1).jpeg)
艾薩克森在暢銷巨著《賈伯斯傳》之後,繼續以《創新者們》記錄輝煌的數位時代,但是《創新者們》不僅是數位革命的故事,更是創新突破的指南。
艾薩克森從浪漫詩人拜倫之女愛達開始說起,他也一一探索掀起數位革命的秀異之士,具備了什麼樣的特質,其中包括MIT的教授布許、早夭的天才圖靈、大科學家馮諾伊曼、英特爾的諾宜斯、微軟的比爾蓋茲、蘋果電腦的賈伯斯、發明WWW的柏納-李等人。
他揭露了這群天才、怪傑和駭客如何思考、為何如此有創造力,同時也寫出他們尋求合作的智慧,以及如何借助群體合作之力,使創造力更上層樓。
在這個亟需創新、創意與團隊合作的年代,《創新者們》清楚點明促使這一切發生的祕訣。