昨天我和你談到了算盤,它讓古代中國人在記賬上非常先進。但是使用算盤時,人類會遇到一個不方便的地方,就是要求打算盤的人牢記珠算口訣,并且練習,熟練到成為一種本能的反應。這時候的人其實不過是一個有動力的機器而已,但是做到這一點又談何容易。
算盤的另一個缺陷是,萬一不小心撥錯了一個珠子,差錯可是很麻煩的,因此打算盤的人通常至少要打兩遍。即便如此,出錯也是經常的。上一代會計都有這樣的體會,有時因為兩分錢對不上號,要來回來去打一晚上算盤。
為了解決自動計算的難題,人們就想要設計一種能夠通過機械傳動完成計算的機器。人類的這種努力其實在古代就有,但是都不太成功。第一個成功實現用機器實現簡單計算功能的,是我所欽佩的?法國數學家帕斯卡(Blaise Pascal ),他發明了一種被稱為機械計算機的裝置。
帕斯卡的這個機械裝置其實原理很簡單,它由上下兩組齒輪構成,每一組齒輪可以代表一個十進制的數字,在齒輪組外面有對應的一排小窗口,每個窗口里又刻了0~9十個數字的轉輪,用來顯示第一個操作數和計算結果。
該計算機的動力來自于一個手工的搖柄?? ,要計算時,將上下兩組齒輪撥到相應的位置,比如要做加法運算15+29,就把第一組的兩個齒輪分別撥到1和5的位置,第二組齒輪上相應的齒輪撥到2和9的位置。然后轉動手柄直到轉不動為止,在這個過程中,齒輪帶動有數字的小轉輪運轉,最后停到應該停的位置,這時計算結果就出現在計算機上方的小窗口里。
帕斯卡計算機操作很簡單,但顯然不可能算得很快,甚至比算盤慢很多。不過即便如此,帕斯卡計算機也是一個巨大的進步,因為計算是自動的,只要輸入的數字不錯,答案就錯不了。這也就是說,計算機的控制,由人變成了機械。
在所有控制機械計算器的部件中,最復雜的是一個逢十進一的機械裝置。這種進位裝置在機械鐘表中經常用到,帕斯卡用到的就是類似的裝置。但是,這個裝置對復雜的機械計算機并不是很方便。
后來大數學家萊布尼茨為了改進帕斯卡的計算機,花了足足40年的時間。他先后制作了兩個機械計算機,它們可以做乘法,這些機械今天經過修復后,居然可以工作。但是和帕斯卡的計算機一樣,它們并不好用。
不過,后人要感謝萊布尼茨在研制計算機的過程中發明了一種轉輪,它可以很好地解決進位的問題,在隨后的三個世紀里,各種機械計算機都要用到這種轉輪。
除了改進機械計算機,萊布尼茨還發明了二進制,它成為了今天計算機的基礎,關于這一點我以后還會仔細講。
不過我今天要說的一點是,萊布尼茨所設計的計算器還是十進制的,和二進制無關,而他發明二進制,從某種程度上是為了證實上帝的偉大。關于這一點,他還給康熙皇帝寫了封信,希望后者皈依基督教。
講回到早期的計算機,無論是算盤還是歐洲人發明的機械計算器,其實都只能做加、減、乘、除運算,從這個角度講,它們是專用的。當然,從能夠做各種不同的四則運算來講,它們也是通用的平臺。
接下來的問題就是,它們能否做更多的事情,或者比加、減、乘、除更復雜的事情。在萊布尼茨之后的近兩百年里,大家一直在考慮這個問題。直到十九世紀中期,英國數學家巴貝奇才有了本質的突破。
如果說世界上有天才的話,巴貝奇(Charles Babbage,1791—1871)必定能入選。他24歲時成為了英國皇家學會會員(院士),后來擔任了劍橋盧卡斯數學教授,這個講席教授可是以前牛頓擔任的。巴貝奇參與創建了英國天文學會和統計學會,還是科學管理的先驅。
在研究科學管理時,他整天琢磨怎么能把腦力計算的工作讓機械來做,并且從法國人杰卡德發明的提花織布機上得到了靈感,馬上靈光一動地想到了,?既然人們能夠按照設計的旨意控制織布機的運動,編織出各種圖案,為什么不能夠用一種相應的控制流程來控制齒輪的運動,從而自動計算不同函數的數值呢?
巴貝奇對當時齒輪機械控制的原理非常了解,他開始設計運算所對應的齒輪控制流程,這個流程一旦啟動,它就控制齒輪的轉動,并且在流程結束時,讓機械停止下來,停下來的位置就是答案。
為了證實他的這種想法是可行的,他決定用機械來解決微積分計算的問題。在20歲的時候,巴貝奇便設計制造了一個簡單的差分機,讓它完成微積分中一些簡單的運算。
在巴貝奇那個時代,機械加工水平極差,整個計算機從設計繪圖到零件加工,都得他自己親自動手。好在他從小就酷愛機械加工,車、鉗、刨、銑、磨,樣樣拿手,而他那位銀行家的父親讓他不必為生計發愁。
在孤軍奮戰了10年后,巴貝奇終于造出來了一臺差分計算機,運算精度達到了6位小數,當即就為大家算出好幾種函數表。后來證明,這種機器非常適合于編制航海和天文方面的數學用表。
接下來巴貝奇就致力于研制一臺有20位精度的差分計算機。由于有第一臺的成功經驗,他幸運地拿到了英國政府1.7萬英鎊的資助,這在當時是一筆巨款,因為制造一臺蒸汽機車的費用還不到800英磅。
但是巴貝奇顯然高估了當時的機械加工的水平,第二臺差分機大約有25000個零件,每個零件的誤差不得超過千分之一英寸,即使用21世紀的加工設備和技術,要想造出這種高精度的機械也絕非易事。
在隨后的10年間,巴貝奇不僅花光了政府的資助,自己還倒貼了1.3萬英鎊。人們都說他是騙子,包括皇家學會里的一些同事。但就在這時,著名詩人拜倫爵士的女兒阿達(Ada),也就是洛甫雷斯伯爵夫人,成為了他的支持者和研究伙伴。
阿達當時只有27歲,有著極高的數學造詣和研究熱情。在她的幫助下(包括財力的資助),巴貝奇的工作取得了很大的進展,但不幸的是,她在36歲時英年早逝了。
阿達去世后,巴貝奇又獨自堅持了20年,最終只完成了這臺計算機的一小部分。因此他是帶著遺憾離開人世的。所幸的是,巴貝奇和阿達留下了30種不同的設計方案,近2100張組裝圖和50000張零件圖,清晰地告訴了后人他們的設計思想,而今天的人根據他們的設計圖制造出了能工作的差分計算機。
這臺差分機在制造完成之后重達4噸,它的一個副品保留在今天硅谷的計算機博物館里。這里順便說一下,美國國防部主導設計了一種程序語言,就是以阿達的名字Ada命名的。
今天的故事是講完了,我幫助大家梳理一下思維的脈絡:
1. 從算盤,到帕斯卡、萊布尼茨、最后到巴貝奇,?你可以看出發明的一個軌跡,就是為了讓一種設備完成更多、更復雜的功能,發明變得越來越復雜了。這是發明的常態。?為什么我們講專業知識重要,因為沒有精深的專業知識,就無法應對越來越復雜的工作。
2. 在上述過程中,?我們再次看到“控制”對于計算機的重要性,或者說它是計算機的本質之一。?控制從人,到簡單機械,到復雜機械,這是一個漸進的過程,但是設計這些控制過程的永遠是人。
3. 巴貝奇的悲劇在于他的想法太超前,以至于當時的工業基礎無法滿足他的設計要求。?從這個意義上講,巴貝奇更多地是科學家,而不是工程師。我在《見識》一書中介紹了前蘇聯設計和制造“米格25”戰斗機的成功經驗,從那個案例中可以看出好的工程師是如何在邊界之內做事情的。
4. 顯然,我們不能為了做越來越復雜的事情,就把設備越做越復雜,?事實上,當什么東西變得太復雜后,就要有人換一個思路進行發明,將它重新變得簡單,這也是發明的大趨勢。?關于這一點,我和你明天再聊。