巴貝奇已經耗費了十年光陰打造差分機,卻寧可中途放棄,重新打造分析機。分析機有何特別,令巴貝奇如此執意投入?他能如願完成夢想嗎?
本文為系列文章,上一篇請見:織布機的進化戰爭,計算機的關鍵突破│《電腦簡史》 齒輪時代(十九)
第一個突破:記憶元件與計算元件分離
當巴貝奇於 1834 年 9 月畫下第一張分析機草圖時,其實對打孔卡片還一無所悉。他之所以放棄已經耗費十年光陰的差分機,決定另起爐灶,並非有什麼外來的啟發,而是他在打造差分機的過程中,自己得出的醒悟。
差分機雖然已是計算機的一大躍進,但有一點仍與以往的加法器無異,那就是計算的結果停留在加法器上。這對單一加法器不是問題,但差分機涉及很多階的差分,每個立軸計算出的差分還要傳往上一階的立軸,在銜接上免不了出現互相等待的情況,不是很有效率。如果中間算出的數值可先暫存在一個地方,加法器就可以馬上進行下一個計算,減少閒置等待的時間。
拿當時最發達的紡織業來比喻,紗線從倉庫搬到工廠織成半成品後,會先運回倉庫,下個工廠再自倉庫取出半成品加工。因此巴貝奇認為計算機也應該有個專用的記憶元件,與計算元件各自獨立。他將記憶元件稱為「倉庫」(store),用來存放初始值或各階差分的數值;計算元件稱為「工廠」(mill),存放在倉庫的數值送過來計算後,所得結果再存回倉庫。如此一來運作效率更好,也更有彈性。
記憶元件還可以用來暫存長乘法與長除法過程中的數字,乘除計算便不再是問題,也就是說記憶元件與計算元件分離後,分析機除了可以更快地算出對數表,還能處理各種函數,什麼計算都能做。
不過還有個技術上的難題橫在巴貝奇面前,難以克服,那就是如何讓分析機切換到不同的運算模式?
第二個突破:利用打孔卡片
巴貝奇原本打算利用差分機裡面一個現成的設計。差分機不是最後還能印出計算結果嗎?其中的控制裝置是一個圓筒狀的鼓輪,表面伸出許多軸桿(你可以想像成葉問練詠春拳的木人樁),這些軸桿與其它機件連動,隨著鼓輪轉動而列印不同數字。它的控制原理與滾筒風琴類似,如果可以用在分析機上,那麼只要更換不同鼓輪,就能讓機器做不同運算。
只不過分析機實在太過複雜,更換鼓輪會牽一髮而動全身,實際上不大可行。巴貝奇苦思兩年仍無良策,最後才終於從雅卡爾織布機獲得靈感。
1836 年 6 月 30 日,巴貝奇在筆記本上寫下:
「假設用雅卡爾的織布機取代鼓輪。」
這是打孔卡片首度用於計算機,分析機終於取得關鍵突破。一如雅卡爾用打孔卡片取代沃康松所設計的大圓筒,才成功打造出全自動織布機,如今巴貝奇決定用打孔卡片取代鼓輪,便無須更動內部機件,可輕易改變分析機的運作方式,使得分析機成為史上第一部可編程的通用型計算機。
這不僅是計算機歷史上一個重要里程碑,所造成的影響也極為深遠。自此之後,各式計算機開始用打孔卡片來輸入程式或資料,即使到了已經改用電晶體的大型電腦也是如此,直到 1980 年代鍵盤普及後,打孔卡片才功成身退。
But,通用型計算機有什麼用?
不過通用型計算機要用來幹嘛?巴貝奇身處的時代還沒有這樣的需求,當然也就看不出分析機的重要性。因此英國政府對於他 1834 年底提出的建議毫無興趣。對英國政府而言,撥款給巴貝奇打造差分機,是著眼於他所許諾的:編製出正確無誤的對數表、三角函數表,乃至天文、航海等數值表。如今這些數值表仍未見蹤影,他卻夸夸而談什麼通用型計算機,豈非捨本逐末。更何況,差分機已經耗費鉅資,重新打造更為複雜的分析機,豈不是又成了一個大錢坑?
(前情提要:兩艘軍艦換不到兩噸重的計算機?巴貝奇與差分機│《電腦簡史》 齒輪時代(十八))
英國政府當然不會同意分析機的提案,而且眼見巴貝奇偏離初衷,乾脆中止差分機的經費,認賠止血。但巴貝奇並未死心,他仍繼續埋頭設計分析機,縱然經費尚無著落,即使沒人了解,他也要完成理想中的計算機。
巴貝奇並不孤獨,至少還有個知音完全認同分析機的價值,而成為巴貝奇的追隨者。她就是有「史上第一位程式設計師」之稱的愛達·勒芙雷斯 (Ada Lovelace)。