德普羅尼編製的十七冊數值表深藏於法國科學院,十多年後被英國數學家巴貝奇無意發現。德普羅尼所用的差分法啟發巴貝奇著手打造差分機,可自動算出對數表與三角函數表,並直接印出來。但差分機所費不貲,花了英國政府兩艘軍艦的錢,經過十年仍未完成,它的最終命運會是如何?
本文為系列文章,上一篇請見:度量衡革命,計算方法也跟著革命!│《電腦簡史》 齒輪時代(十七)
對數表問世已兩百年,仍無完全正確的版本
「我真希望這些計算當初是用蒸汽機做的。」還是大學生的巴貝奇望著眼前的對數表大嘆。
根據巴貝奇的回憶,那應該是 1812 年或 1813 年在劍橋大學的時候。他與同學赫歇爾 (John Herschel )、皮考克(George Peacock)三人都不滿意學校採用牛頓的「流數」,而不是萊布尼茲的記法來教授微積分,於是創立名為「分析學會」的社團,大力宣揚萊布尼茲的版本。某一天,赫歇爾進來社團看見巴貝奇坐在桌前發呆,問他在想什麼,這句話便從他嘴中脫口而出。
巴貝奇這句話反映出對數表令人又愛又恨的無奈。如上上一篇所說,儘管萊布尼茲等人發明了各種計算器,卻因為造價太高,成為少數權貴才能擁有的收藏品。而對數尺雖然便宜實用,卻只能計算到三位數,所以若要做更精確的計算,對數表還是不可或缺的輔助工具。
問題是,對數表並不是那麼可靠,因為其中有不少數字是錯的。
錯誤來自於各個環節的人為疏失。首先在計算一個一個數值時,就難保偶有計算錯誤;就算計算結果沒錯,在謄寫到表格上時也可能不小心抄錯。等到書稿完成付梓時,排版工人或許又會誤植數字。因此最後印製成書的對數表總是會有些許錯誤,無一例外。事實上,巴貝奇就曾買了不同版本的對數表來比較,發現許多數字並不一致,也難怪巴貝奇要如此感嘆,希望能用蒸汽機自動產生對數表,就不會有人為疏失。
什麼都改用蒸汽機了,難道不能拿來算對數表?
巴貝奇這個念頭並不算荒誕,畢竟當時工業革命已經進行了半世紀,蒸汽機大量用於礦場、鋼鐵廠、紡織廠等場域,不僅節省大量人力,而且許多製造程序改由機器自動規律運作後,也減少許多人為疏失,大幅提高良率。既然已有現成的機械式計算器,那麼用蒸汽機推動計算器,自動算出對數表,甚至同時列印出來,也不是不可能。
事實上,巴貝奇對機械並不陌生,他孩提時期倫敦不時有各種自動機器的展覽會,展出機械鐘表、音樂盒、機械人偶等新奇科技,母親看他深受吸引,便常常帶他去參觀。有一次他還受邀到一個工作室參觀製作中的機械玩偶,其中一具芭蕾舞孃會隨著音樂翩翩起舞,姿態生動優美,更令他深深著迷。
雖然巴貝奇喜愛機械,還曾於 1813 年小試身手,發明一款新的機械鎖,但他可沒打算投身製造計算機。畢竟他的本業是數學,而他只想盡快謀得教職,證明自己是個自力更生的紳士,而不是坐享家產的紈绔子弟。然而儘管巴貝奇的數學才能頗受肯定,還於 1816 年獲選為英國皇家學會院士,他仍然好幾年都找不到工作。
巴貝奇人生轉捩點:法國的十七冊數值表
直到 1819 年,巴貝奇的生涯出現了轉捩點。這一年,他偕同好友赫歇爾前往巴黎造訪法國科學院,結識了拉普拉斯、傅立葉(Joseph Fourier)等數學巨擘,順便參觀院內的收藏。德普羅尼十七冊的對數表與三角函數表立刻引起巴貝奇的注意,在得知它們的製作方式後,更讓他銘記在心。
返國第二年,巴貝奇與赫歇爾等人發起成立天文學會,宗旨之一就是改善天文計算。這裡要稍微介紹赫歇爾這個人。其實他的父親威廉·赫歇爾(William Herschel)在天文學的地位更加崇高,不但發現天王星與土衛一、土衛二,還發現上千個星雲,進而推測出太陽並非宇宙的中心,而是繞著銀河系中心移動。約翰·赫歇爾子承父志,轉換跑道成為天文學家,也做出許多貢獻,劍橋大學一畢業就獲選為英國皇家學會院士,比巴貝奇還早三年。巴貝奇一路上始終有這位好友的支持與協助。
剛成立的天文學會隨即決定修訂《航海天文年鑑》(The Nautical Almanac),由赫歇爾與巴貝奇兩人負責監製。沒多久巴貝奇就屢屢發現計算結果有誤,「真希望這些計算當初是用蒸汽機做的」,大學時的感嘆再次襲上心頭,不過這一次他真的要著手打造這麼一部機器了。
讓巴貝奇起心動念的正是他 1819 年造訪法國科學院的收穫。
德普羅尼的成果證明大部分的計算工作可以化為不斷重覆的加法,交由一群不懂數學的美髮師計算。而他在法國科學院也看過巴斯卡加法器,了解齒輪如何相加進位的原理,所以他只要同樣用差分法拆解函數,找出初始值與差值後,交由加法器不斷累加就可以了。當然,他得設法讓幾十具加法器一起運作,才能像幾十個計算員那樣迅速算出函數值。這會很難嗎?巧得很,巴貝奇也在 1819 這一年與「土耳其人」下了一盤棋,雖然他也不相信機器會思考,認為真正下棋的是躲在櫃子裡的真人,但這次對弈似乎勾起他幼時的回憶,當年那個熱愛自動機器的小男孩,又在他心中甦醒了。
差分機是護國神器或只是個大錢坑?
巴貝奇於 1820 年開始設計,經過不斷嘗試,終於在 1822 年完成一個三個立軸的小型樣品。三個立軸相當於三個加法器,可以在兩分半鐘內算出函數 f(x) = x2 + x + 41 的前三十個函數值,相當於每分鐘計算 33 個數字。巴貝奇將這部機器取名為「差分機」(Difference Engine),除了在天文學會演示,他也同時寫信給相關人士,尋求政府挹注研發資金。
巴貝奇在信中再三強調正確的對數表與三角函數表有多重要,關係到英國在海權時代與工業時代是否能不落人後;他設計的差分機不但能迅速正確地算出數值,還會將計算結果直接印製成表,避免排版印刷時出現錯誤,一勞永逸。巴貝奇的訴求打動英國內閣,而且天文學會與英國皇家學會也都大表贊同,於是英國政府於 1823 年先撥款一千五百英鎊給巴貝奇開始開發。
然而事情沒有巴貝奇想像那麼簡單。首先巴貝奇在市面上找不到可用的現成零件,也沒有工廠願意為他特別訂製,他只好雇用工匠自己打造所有機件。而差分機的零件都需要極高的精密度,數量又多,因此還得先打造製造零件的工具與模具。零件組合後,運作情況有時又不如預期,巴貝奇就得變更設計,於是開發時程與經費都遠遠超乎原先計畫。
到了 1832 年,巴貝奇好不容易組裝出六個立軸的模組,可以做到二階差分,計算到六位數。雖然看似不多,但重點是奇數軸與偶數軸可以交替同時運作,有了這個突破性的設計,差分機完成後將能做到六階差分,快速完成 20 位數的計算。巴貝奇希望這足以說服內閣繼續撥款支持。但差分機預計使用兩萬五千個零件,將會是高二米六、寬兩米三,重達兩噸的龐然大物,而巴貝奇展示的模組卻只是整體的七分之一。
英國政府前後已經挹注了一萬七千英鎊,足以打造兩艘軍艦。遠遠超出原先預期,因此內閣官員決定暫時擱置,多方徵詢意見再決定是否繼續此計畫。沒想到最後將差分機推上斷頭台的,卻是巴貝奇自己。
巴貝奇於 1834 年底回覆首相的信中,竟坦承已無意繼續完成差分機。倒不是做不出來,而是他已構想出更厲害的「分析機」 (Analytical Engine) 。分析機不但具有差分機的功能,還能計算其它所有數學問題,所以與其繼續原有計畫,不如轉而投入開發功能更強的分析機。
是的,差分機說穿了就是一部大型加法器,而巴貝奇設想的分析機則加減乘除都可以計算。但是讓分析機在計算機歷史上佔有特別地位的,並非它的計算功能,而在於它是第一部可編程的計算機。可編程這個點子來自一個看似毫無關聯的機器——織布機,而這還得從巴貝奇的上個世紀談起。