四十一歲的巴貝奇與十七歲的愛達相遇,會蹦出怎樣的火花?不,他們共同譜出的不是忘年戀曲,而是——電腦程式。愛達為了替巴貝奇的分析機宣傳,寫出了第一個白紙黑字的演算法,後人才知道巴貝奇設計出史上第一部可編程的通用計算機。然而他們兩人固然是相見恨晚,卻都生得太早;分析機在齒輪時代註定無用武之地,只能成為兩位時代先驅的見證。
本文為系列文章,上一篇請見:分析機——史上第一部通用型計算機終將誕生?│《電腦簡史》 齒輪時代(二十)
繼承父親詩人特質與母親數學天分的愛達·拜倫
愛達·勒芙雷斯結婚前本姓拜倫 (Byron),是的,她的父親就是著名的浪漫詩人拜倫。拜倫婚後仍到處拈花惹草,甚至與同父異母的妹妹發展出不倫戀。 1816 年,拜倫夫人終於無法忍受,帶著剛滿月的愛達離家出走,躲回娘家。幾個月後兩人正式離婚,結束僅一年多的婚姻,拜倫遠走他鄉,躲避閒言閒語,卻從此沒返回英國,再也未見到女兒。
拜倫夫人沒有再婚,獨自扶養愛達長大。她對愛達的教養特別著重於數學,一方面是因為拜倫夫人個人對數學的熱愛,一方面則是擔心愛達遺傳到父親的濫情衝動,希望能藉此抑制她這方面的特質。
1833 年 6 月,拜倫夫人帶著才十七歲的愛達參加巴貝奇的社交沙龍。此時的巴貝奇位居劍橋大學的盧卡斯數學席位(Lucasian Chair of Mathematics),這個榮譽席位向來都是給予當世最負盛名的數理學者,例如牛頓和霍金也都曾擔任盧卡斯教授。因此這個於巴貝奇家中定期舉辦的沙龍,總是聚集許多名流、學者,或有才藝演出,或有新奇事物與發明的展示;巴貝奇也大方展出因經費中止而暫停開發的差分機。
愛達乍見差分機就眼睛一亮,在了解它的功能與原理後更讚嘆不已。愛達的數學天賦讓她體會到其中以簡馭繁之美,也看到計算機的未來性。她毫不掩飾對巴貝奇的崇拜之心,四十一歲的巴貝奇也對這個少數懂他的聰慧女子極為賞識,兩人此後時常交換心得,即使愛達十九歲結婚成為勒芙雷斯夫人後,仍是如此。
愛達之前隨著母親參觀機械展時,就曾看過雅卡爾織布機,相當了解打孔卡片的作用。因此當她於 1836 年聽聞巴貝奇要用於分析機時,馬上領略箇中之妙,熱烈希望也能參與其中,助一臂之力。幾年後,愛達果然如願以償,也因此讓她在歷史上留名。
不只是程式設計師,更有超越巴貝奇的洞見
分析機在 1839 年底前就已大致設計完成(往後幾年巴貝奇做的只是進一步優化,包括精簡零件與提高運算速度),可以按圖施工,然而英國政府仍然興趣缺缺,讓巴貝奇對政府的短視忿忿不平。所以當他 1840 年受邀前往義大利演講,不但欣然前往,更毫不保留地詳細介紹分析機的構造與原理。
當地一位年輕數學家梅拉布瑞亞 (Luigi Menabrea,後來成為義大利首相) 有意撰寫專文介紹分析機,巴貝奇當然樂見其成,不厭其煩地予以解說指導。最後這篇報導於 1842 年發表於法國學術期刊,是第一篇關於分析機的介紹。
愛達見到這篇文章即主動翻譯成英文,希望也能讓英國同胞了解分析機的偉大。巴貝奇讀了譯稿後大表讚許,鼓勵她多做一些補充。結果愛達寫了多達一萬九千字,篇幅是梅拉布瑞亞本文的兩倍半。
正是在這篇〈譯者評注〉中,愛達為了說明分析機如何算出白努利數 (Bernoulli numbers) 註,一步一步地寫出完整程序。這道程序即相當於今日的演算法,而且已經具有「迴圈」 (Loop,一種迭代計算,每次的計算結果都是下次迭代的初始值) ,以及「次常式」 (Subroutine,一段執行特定運算的小程式,由主程式呼叫執行),這兩個現代電腦程式中常用的技巧。愛達因此才被譽為史上第一位程式設計師。
不過也有人不以為然,畢竟巴貝奇在設計分析機時,就曾模擬過多種運算,也就是說他實際已經完成了許多程式,只不過沒有公諸於世。因此嚴格來說,巴貝奇比愛達更有資格稱得上第一位程式設計師。縱使如此,愛達在〈譯者評注〉中仍展現了無與倫比的洞見,這是巴貝奇自己都未能察覺的。
在巴貝奇心中,分析機就是處理數字的機器,但愛達卻看出分析機能做的不僅如此。她如此寫道:
分析機也能處理數字以外的事物,只要它們之間的基本關係可以用抽象的科學符號表達,應該就能輕易轉換為符合分析機機制與運作概念的實際動作。
此外,或許是得自拜倫的遺傳,愛達還以頗具詩意的手法形容分析機的能耐:
就像雅卡爾織布機編織出花與葉,分析機能編織出代數的模式。
處理抽象符號與底層模式在當時可能無人理解,但如今已是現代電腦的日常。愛達的目光如此之遠,可惜她的生命太過短暫。她後來罹患子宮癌,卻因為醫生用放血療法治療,導致失血過多身故,年僅 36 歲。
分析機仍不受青睞,是價格太高、需求太少的老問題?
愛達的翻譯與評注並未發揮作用。眼見分析機得不到支持,巴貝奇於 1847 年又回頭去改進差分機。他費時兩年完成「差分機二號」的設計,可以計算 31 位數,零件卻只需原始差分機的三分之一,希望這能讓英國政府回心轉意。但英國政府對他早已死心,巴貝奇始終無法獲得資金實現構想。
反倒一位瑞典發明家舒茲(Per Georg Scheutz)於 1834 年讀了巴貝奇發表第一代差分機的文章後,按圖索驥著手打造分析機,後來獲得瑞典政府資助,成功完成完整的全尺寸差分機,並於 1855 年的巴黎萬國博覽會公開展示。巴貝奇也去現場看了,當他觸摸這台機器時,心情應該是欣慰與苦澀參半吧。
除了舒茲的差分機,十九世紀下半葉陸續還有許多不同的差分機問世,都不脫巴貝奇的設計,但最後都以失敗收場。並非巴貝奇的原始設計有問題,倫敦科學博物館就於 2002 年打造出差分機二號,一如巴貝奇的構想運作,吐出正確無誤的答案。當時那些山寨差分機的確也都能算出對數表等各種數值表,問題在於投資效益不敷成本,還不如採取德普羅尼的老方法,用差分法交給一群計算員用手工計算。
表面看起來,這似乎再度反映出自巴斯卡以降,計算機始終面臨的老問題:產品價格太高、市場需求太少。
但事實上,巴貝奇所處的十九世紀中葉,已經不只是編製數值表或天文學家才需要大量計算。當時倫敦的銀行清算中心就有數百名計算員,每天要結算銀行之間的往來。而隨著鐵路的大幅擴建,載送的乘客與貨物快速增長(英國的載客人次從 1855 年的一億一千萬增加到 1900 年的十一億一千萬),鐵道清算中心也有近千名計算員,處理不同鐵道公司彼此之間的結算。那麼,為什麼差分機仍不受他們青睞?
機械計算機的宿命,齒輪時代終要結束
追根究柢,所謂不符投資效益,背後隱藏的技術問題才是真正原因。差分機的運轉是靠齒輪、轉軸、彈簧、鉤環等機械零件,運轉速度有其極限,計算速度也因此受限,再怎麼快也比不過數百名計算員同時計算;而以當時的工資,還是用人工划算多了。必須等到進入二十世紀,各式電磁零件發明後,電子計算機才能提供人力遠遠不及的運算能力。
用齒輪打造的機械計算機受限於物理原理,註定不合時宜,無法生存。
巴貝奇這位超越時代的天才不幸生得太早,儘管他已預見計算機的重要性,甚至設計出已具現代電腦雛型的分析機,無奈技術面與市場面都還未就緒,他的傑作只能成為空中樓閣,徒留三百張設計圖與數千頁的筆記做為見證。另一個殘酷的事實是,他的畢生心血宛如浪花泡沫,除了打孔卡片,什麼也未能傳承給後世。
新一代計算機所用的是截然不同的機電零件,巴貝奇設計的齒輪架構毫無幫助。計算機的齒輪時代終究要畫上句點,讓位給全新的數位時代。
- 註:白努利數是從 1 開始,連續正整數的冪次和。可以寫成 Sm(n)=1m + 2m + 3m +……+ nm