現(xiàn)今但凡對計(jì)算機(jī)歷史有所了解的朋友,總能在第一時(shí)間想起一臺(tái)叫ENIAC的電子計(jì)算機(jī),總多少聽聞過圖靈、馮·諾依曼這樣響當(dāng)當(dāng)?shù)拿郑瑓s鮮有人知早在他們一個(gè)世紀(jì)之前,就獨(dú)自開辟了現(xiàn)代計(jì)算機(jī)之路的傳奇人物——巴貝奇。
巴貝奇出生于英國一個(gè)富裕的家庭,父親是銀行家,所以他不愁吃不愁穿,一門心思鉆研各種感興趣的事物。他興趣廣泛,幾乎無所不能,他首先是位卓越的數(shù)學(xué)家,擔(dān)任過11年的劍橋大學(xué)盧卡斯數(shù)學(xué)教授席位(這是一項(xiàng)極高的榮譽(yù),前后都是由牛頓、霍金這樣的大神擔(dān)任),是皇家天文學(xué)會(huì)的領(lǐng)導(dǎo)成員、皇家統(tǒng)計(jì)學(xué)會(huì)的創(chuàng)始人,在光學(xué)、大氣觀測、電學(xué)、磁學(xué)、密碼學(xué)、地質(zhì)學(xué)、運(yùn)籌學(xué)等諸多領(lǐng)域都有建樹,他甚至編寫過世界語辭典、研究過哺乳動(dòng)物的呼吸和脈搏、提高過蒸汽火車的速度、還在家里安裝了世界上第一臺(tái)空調(diào)系統(tǒng)……他仿佛已經(jīng)干完了別人好幾輩子才能干完的事,然而在其為計(jì)算機(jī)發(fā)展做出的貢獻(xiàn)面前,這些五花八門的成就甚至還顯得不值一提。
18世紀(jì)末,法國政府在開創(chuàng)米制之后,決定在數(shù)學(xué)中統(tǒng)一采用十進(jìn)制,竟奇葩地想把原本90度的直角劃分成100度、把原本60秒的1分鐘劃分成100秒,盡管從現(xiàn)在看來這樣的想法絕逼是一種倒退,但他們在當(dāng)時(shí)真就實(shí)施了。這一改制帶來的不光是人們在使用時(shí)直觀上的別扭,原本制作好的數(shù)學(xué)用表(如三角函數(shù)表)都需要全部重制。在上篇文章中,我們知道那個(gè)年代數(shù)學(xué)用表的計(jì)算全靠人力完成,所能用到的計(jì)算設(shè)備也相當(dāng)簡陋,只能做四則運(yùn)算。法國政府將這項(xiàng)喪心病狂的工程交給了數(shù)學(xué)家普羅尼(Gaspard de Prony),普羅尼正頭疼著要如何才能完成這項(xiàng)艱巨的任務(wù),突然想起著名經(jīng)濟(jì)學(xué)家亞當(dāng)·斯密(Adam Smith)的那本《富國論》,他決定采用書中提出的勞動(dòng)分工的做法,將制表的工作人員分成三組:第一組由五六名牛逼的數(shù)學(xué)家組成,他們負(fù)責(zé)制定運(yùn)算中所需的公式;第二組由九到十個(gè)擅長數(shù)學(xué)的人組成,他們負(fù)責(zé)計(jì)算出一些關(guān)鍵數(shù)據(jù),并把第一組制定好的公式進(jìn)行簡化;第三組由約一百名計(jì)算人員組成,他們利用第二組提供的關(guān)鍵數(shù)據(jù)和公式,做最簡單的加減操作就能得出最終結(jié)果。第三組的工作簡單到什么程度,就是他們甚至都不知道自己正在算什么玩意兒,事實(shí)上他們的文化程度大部分都不高,里頭好多都是理發(fā)師、失業(yè)人員什么的。可見即便文盲都能完成的計(jì)算,在那個(gè)時(shí)代還是得依靠人力去做。
而為了保證用表的正確性,普羅尼要求每個(gè)數(shù)至少算兩遍,并且要在法國的不同地點(diǎn)用不同的方法計(jì)算。這項(xiàng)勞民傷財(cái)?shù)墓こ陶M(jìn)行了十年才完成,然而不幸的是,最終的表里仍然有錯(cuò)。說到這一點(diǎn),可以說,那個(gè)時(shí)代基本沒有一版數(shù)學(xué)用表是完全正確的,有些版本甚至錯(cuò)誤百出,要知道數(shù)學(xué)用表出錯(cuò)有時(shí)后果會(huì)很嚴(yán)重,比如航海表一出錯(cuò)就可能直接導(dǎo)致船毀人亡。
巴貝奇在了解到普羅尼的事跡后淚流滿面,決心要做一套完全正確的數(shù)學(xué)用表,為達(dá)目的,他嘗試了各種減少錯(cuò)誤的手段,比如調(diào)整紙張和墨水的顏色以提高數(shù)字的識(shí)別度,直接拿現(xiàn)有的多個(gè)版本的表進(jìn)行謄抄、比對、讓不同人員反復(fù)校對,在1827年出版了一個(gè)版本,結(jié)果里頭還是有錯(cuò)。只要是人為的就沒有完美的,巴貝奇徹底跪了,他發(fā)誓要造一臺(tái)機(jī)器,讓機(jī)器去生產(chǎn)數(shù)學(xué)表。
那就是史上著名的差分機(jī)。
差分機(jī)(Difference Engine)
其實(shí)早在巴貝奇出生前,有個(gè)叫米勒(Johann Helfrich von Müller)的德國工程師就提出了差分機(jī)的思想,但僅僅是提了一下,并沒有進(jìn)行具體設(shè)計(jì)和制造,他最終還是把研制差分機(jī)的歷史重任讓給了巴貝奇。
之所以叫差分機(jī)這個(gè)名字,是因?yàn)樗?jì)算所使用的是帕斯卡在1654年提出的差分思想:n次多項(xiàng)式的n次數(shù)值差分為同一常數(shù)。舉個(gè)簡單的例子(以筆者撰寫該部分時(shí)的日期——12月12日——為例),對于函數(shù)F(x) = 12x+12,x取自然數(shù):
對于一次多項(xiàng)式,每個(gè)相鄰的x所對應(yīng)的F(x)之差都是一個(gè)常數(shù),這個(gè)常數(shù)很明顯就是x的系數(shù)。那么二次多項(xiàng)式呢?依然以今天的日期(15年12月12日為例),對于函數(shù)F(X) = 15x^2+12x+12,x取自然數(shù):
對于二次多項(xiàng)式,每個(gè)相鄰的x所對應(yīng)的一次差分之差都是常數(shù),我們可以導(dǎo)出這一常數(shù)的通用公式:
在上述的例子中,a=15,確實(shí)二次差分常數(shù)為2a。三次、四次、乃至任意多次的多項(xiàng)式都遵守這樣的差分規(guī)律。
差分規(guī)律是一項(xiàng)偉大的發(fā)現(xiàn),有了差分,在計(jì)算多項(xiàng)式時(shí)就可以用加法代替乘法,我們只需要算出幾個(gè)初始值,后頭任意x所對應(yīng)的F(x)值均可通過加法得出。仍以上面的二次多項(xiàng)式為例,根據(jù)x=0所對應(yīng)的第一列中的數(shù)據(jù),第二列(x=1時(shí))的函數(shù)值可由第一列的函數(shù)值和一次差相加所得、一次差可由第一列的一次差和二次差相加所得,第三列(x=2)的函數(shù)值和一次差又可由第二列的相應(yīng)數(shù)據(jù)相加所得,以此類推,我們能得到x任意取值時(shí)的F(x)。
學(xué)過高數(shù)的朋友應(yīng)該知道,一個(gè)函數(shù)在滿足一定條件的情況下可以用多項(xiàng)式逼近(冪級(jí)數(shù)展開),于是常用的三角函數(shù)、對數(shù)函數(shù)都可以通過多項(xiàng)式來計(jì)算的,而機(jī)械時(shí)期的計(jì)算設(shè)備最擅長的就是做加法,有了差分思想,巴貝奇看到差分機(jī)的前途一片光明。
從1812年到1822年,巴貝奇克服重重困難完成了一臺(tái)可以計(jì)算六位數(shù)二次多項(xiàng)式的模型機(jī),他給皇家學(xué)會(huì)的主席寫信,希望政府可以出資,贊助他建造真正可用的大型差分機(jī)。政府也覺得這事兒很有意義,尤其對海軍很有價(jià)值,于是在1823年撥款1500英鎊,巴貝奇如魚得水,號(hào)稱只要兩三年時(shí)間就能完工。誰知實(shí)行起來要比想象中困難得多,那個(gè)時(shí)代的機(jī)械制造水平實(shí)在落后,差分機(jī)是十分精密的儀器,巴貝奇跑遍了歐洲都沒找到多少能用的零件,于是在制造差分機(jī)之前,他還要先想著怎么制造各類零件。在英國當(dāng)時(shí)一個(gè)牛逼的機(jī)械師克萊門特(Joseph Clement)的幫助下,他們真的在提高機(jī)械制造方面下足了功夫,不但做出了差分機(jī)能用的零件,還培養(yǎng)出大批優(yōu)秀的技師。本來這兩人強(qiáng)強(qiáng)聯(lián)合勢必能把差分機(jī)做好,但是巴貝奇是個(gè)精益求精的人,經(jīng)常改動(dòng)設(shè)計(jì)方案,導(dǎo)致工程時(shí)常要返工,工作量大大增加,外加親人的相繼去世,后來又和克萊門特鬧掰,到了1833年,十年都過去了,巴貝奇只做出了機(jī)器的一小部分,卻已經(jīng)花費(fèi)了3萬英鎊(遠(yuǎn)超最初預(yù)算)。政府對巴貝奇大失所望,終于在1842年正式宣布不再出資,到頭來巴貝奇給后世留下的就只有一個(gè)半成品,以及在1839年修訂好的一大堆設(shè)計(jì)圖紙,現(xiàn)存于倫敦科學(xué)博物館。
值得一提的是,巴貝奇做不出差分機(jī)實(shí)在不是客觀原因所致,與他同時(shí)代的瑞典人喬治·舒茨(Per Georg Scheutz)就根據(jù)他的設(shè)計(jì)在1843年做出了切實(shí)能用的差分機(jī),巴貝奇倒是提供了不少指導(dǎo)和幫助,也算是了卻了自己一樁心愿吧。
150年后,為了紀(jì)念巴貝奇200年誕辰,從1989到1991年人們根據(jù)巴貝奇的設(shè)計(jì)圖紙建造了第一臺(tái)真正的巴貝奇差分機(jī),機(jī)器完美運(yùn)行,工程師們驚奇地發(fā)現(xiàn),巴貝奇的圖紙里只有極少的錯(cuò)誤,而且這些錯(cuò)誤八成是當(dāng)時(shí)為防止圖紙被盜用而刻意為之的。這臺(tái)差分機(jī)被保護(hù)在倫敦科學(xué)博物館的玻璃柜里,后來又造了一臺(tái),放在美國硅谷的計(jì)算機(jī)歷史博物館,每天由導(dǎo)游給參觀者講解和演示,人們得以近距離膜拜。
實(shí)景地圖展示平臺(tái)xRez為計(jì)算機(jī)歷史博物館的差分機(jī)做了超高清攝像,機(jī)器的各個(gè)部位都能看得非常清楚。
我們接著來了解一下差分機(jī)最簡單的工作原理。在巴貝奇1839年的設(shè)計(jì)中,差分機(jī)可以支持七次多項(xiàng)式的計(jì)算。以F(x) = x^7+x為例,其7次差分值為常數(shù)5040。
由前文可知,表中任意一列的數(shù)據(jù)均可根據(jù)其前一列的數(shù)據(jù)計(jì)算得到,為此需要的初始數(shù)據(jù)就是第一列,計(jì)算下一列函數(shù)值的過程分7步:
F(x)+?F1(x) = F(x+1) 下一列的函數(shù)值
F1(x)+?F2(x) = ?F1(x+1) 下一列的一次差分值
……
F6(x)+?F7(x) = ?F6(x+1) 下一列的六次差分值
巴貝奇優(yōu)化了算法過程,讓每列數(shù)據(jù)成對成對地并行相加,把7步壓縮成兩步,可以更快地得到結(jié)果,但為此付出的代價(jià)是,需要事先計(jì)算更多初始數(shù)據(jù):
背景色相同的四對數(shù)據(jù)分別相加,所得結(jié)果分別為下一列對應(yīng)的值:
而后是另外組合的三對數(shù)據(jù)分別相加:
以此類推,無窮盡也:
由于每次參與計(jì)算的都是函數(shù)值和1~7次差分值的最新值,于是僅需相應(yīng)的8個(gè)計(jì)數(shù)器。巴貝奇設(shè)計(jì)的計(jì)數(shù)器由31個(gè)計(jì)數(shù)輪垂直疊加而成,即支持31位十進(jìn)制數(shù):
加上傳動(dòng)裝置和進(jìn)位裝置,就成了這樣一副喪病的模樣:
巴貝奇使用梯形的傳動(dòng)輪實(shí)現(xiàn)兩個(gè)計(jì)數(shù)輪之間的相加,由于有梯形齒,傳動(dòng)輪可以同時(shí)帶動(dòng)兩個(gè)計(jì)數(shù)輪,也可以只帶動(dòng)一個(gè)。于是在進(jìn)行兩數(shù)相加時(shí),傳動(dòng)輪先順時(shí)針旋轉(zhuǎn),將右側(cè)計(jì)數(shù)輪上的數(shù)字加到左側(cè)輪上,而后上升一段距離,逆時(shí)針旋轉(zhuǎn)相同度數(shù),將右側(cè)計(jì)數(shù)輪的示數(shù)還原到原來的位置。
仔細(xì)觀察可以發(fā)現(xiàn),這兩個(gè)輪子上的數(shù)字排列順序是相反的。在兩輪相加的過程中,左側(cè)輪作為累加輪朝數(shù)值增大的方向旋轉(zhuǎn),而右側(cè)輪作為加數(shù)輪則朝數(shù)值減少方向旋轉(zhuǎn)。在巴貝奇改進(jìn)的并行差分算法中,兩個(gè)步驟交替進(jìn)行,同一個(gè)計(jì)數(shù)輪需要交替充當(dāng)累加輪和加數(shù)輪的角色,于是當(dāng)機(jī)器運(yùn)行起來,這些齒輪需要正反方向交替旋轉(zhuǎn)。
差分機(jī)的進(jìn)位機(jī)構(gòu)比較復(fù)雜,簡單地說,每個(gè)計(jì)數(shù)輪都有一個(gè)針對高位的“進(jìn)位提示器”,當(dāng)計(jì)數(shù)輪從9轉(zhuǎn)到0,其對應(yīng)的“進(jìn)位提示器”就被撥到“需要進(jìn)位”的狀態(tài),每次計(jì)算,計(jì)數(shù)輪都要轉(zhuǎn)動(dòng)兩次,第一次是每位數(shù)相加,第二次是按照“進(jìn)位提示器”進(jìn)行進(jìn)位。我們直觀地感受一下連續(xù)進(jìn)位是什么樣子:
最后讓我們來欣賞一下差分機(jī)整個(gè)運(yùn)行起來的樣子:
分析機(jī)(Analytical Engine)
盡管沒能親手實(shí)現(xiàn)差分機(jī),但巴貝奇并不會(huì)氣餒,或者說他本來就是根本停不下來的那種人。明知實(shí)現(xiàn)不了,巴貝奇仍在一刻不停地改進(jìn)著自己的設(shè)計(jì),直到有一天,他構(gòu)思出了一種空前的機(jī)器——分析機(jī),正式成為現(xiàn)代計(jì)算機(jī)史上的第一位偉大先驅(qū)。
1834年,分析機(jī)概念誕生之際,巴貝奇自己都為之感到無比震驚。在此之前,任何一臺(tái)計(jì)算機(jī)器都只能完成其被預(yù)定賦予的計(jì)算任務(wù),要么是簡單的加減乘除,要么像差分機(jī)那樣只能做差分運(yùn)算,它們都屬于calculator,而分析機(jī)才是真正的computer,它不局限于特定功能,而竟然是可編程的,可以用來計(jì)算任意函數(shù)——現(xiàn)代人無論如何也無法想象在一坨齒輪上寫程序是怎樣一種體驗(yàn)吧!
巴貝奇設(shè)計(jì)的分析機(jī)主要包括三大部分:
1、用于存儲(chǔ)數(shù)據(jù)的計(jì)數(shù)裝置,巴貝奇稱之為“倉庫”(store),相當(dāng)于現(xiàn)在CPU中的存儲(chǔ)器,這部分是從差分機(jī)上的計(jì)數(shù)裝置改進(jìn)而來的,我們很容易想象它的模樣;
2、專門負(fù)責(zé)四則運(yùn)算的裝置,巴貝奇稱之為“工廠”(mill),相當(dāng)于現(xiàn)在CPU中的運(yùn)算器,這部分的結(jié)構(gòu)相對復(fù)雜,巴貝奇針對乘除法還做了一些優(yōu)化;
3、控制操作順序、選擇所需處理的數(shù)據(jù)和輸出結(jié)果的裝置,巴貝奇沒有起名字,由于其呈桶狀,我們可以叫它“控制桶”,控制桶顯然相當(dāng)于現(xiàn)在CPU中的控制器。
以上三部分,加上巴貝奇并沒有疏漏的輸入輸出設(shè)備,我們驚訝地發(fā)現(xiàn),分析機(jī)的組成部分和現(xiàn)在馮·諾依曼架構(gòu)所要求的五大部件一模一樣!
巴貝奇另一大了不起的創(chuàng)舉就是將穿孔卡片(punched card)引入了計(jì)算機(jī)器領(lǐng)域,用于控制數(shù)據(jù)輸入和計(jì)算,從那時(shí)起,到第一臺(tái)電子計(jì)算機(jī)誕生為止,期間幾乎所有的數(shù)字計(jì)算機(jī)都使用了穿孔卡片。穿孔卡片本身并不是巴貝奇的發(fā)明,而是來自提花機(jī)。
提花機(jī)是我國古代用以制造絲錦的一種織機(jī),最遲在殷商時(shí)期就已出現(xiàn),后經(jīng)絲綢之路傳入阿拉伯國家,再傳到意大利和法國。以其中功能最強(qiáng)的大花樓提花機(jī)為例,長約一丈六尺,高約一丈五尺,高起的部分就叫花樓,織錦過程需要上下兩人配合完成。
織錦的原理其實(shí)十分簡單,就是通過一排排、一列列縱橫的絲線相互交織而成,縱向的叫經(jīng)線,橫向的叫緯線,要織出花紋,就需要將部分經(jīng)線提起,讓緯線通過梭口,沒有被經(jīng)線壓住的緯線部分就可以形成花紋。坐在花樓上的提花工就專門負(fù)責(zé)提起這些經(jīng)線,花樓下的織花工則負(fù)責(zé)拋梭引線。
由于每織一行花紋,所要提起的經(jīng)線都不盡相同,那么問題就來了,經(jīng)線那么多,織完一片錦前后要提那么多次,提花工怎么記得住每次提哪些經(jīng)線呢?傳統(tǒng)的方式是根據(jù)想要織出的花紋預(yù)先編織花本,就是把“每次需要提哪些經(jīng)線”這一信息編織到到一塊松松的網(wǎng)兜里,提花工根據(jù)花本提花。
提花機(jī)傳到西方后,十九世紀(jì)初,一個(gè)叫賈卡(Joseph Marie Jacquard)的法國人開始使用穿孔卡片來保存花本,將卡片置于經(jīng)線上方,其上方密密麻麻的針嘗試穿過卡片,卡片上沒有孔的地方針就被擋住,卡片上有孔的地方針就可以下探勾起經(jīng)線,原本提花工的任務(wù)就可以完全交給機(jī)器自動(dòng)完成,從此提花機(jī)就只需要一個(gè)工人操作了。
巴貝奇在一次巴黎展覽會(huì)上看到了賈卡的提花機(jī),對其印象十分深刻,由于一直在研究計(jì)算機(jī)器,自然想到可以把穿孔卡片也應(yīng)用到分析機(jī)上。于是分析機(jī)中的輸入數(shù)據(jù)、存儲(chǔ)地址、運(yùn)算類型都使用穿孔卡片來表示。在機(jī)器運(yùn)行時(shí),卡片上有孔和無孔的地方會(huì)導(dǎo)致對應(yīng)的金屬桿執(zhí)行不同操作,可編程性由此體現(xiàn)。下圖可以直觀地展現(xiàn)這一原理:
整個(gè)分析機(jī)就是在類似這樣的齒輪和拉桿作用下實(shí)現(xiàn)可編程運(yùn)算的:先從數(shù)據(jù)卡片讀入數(shù)據(jù)到存儲(chǔ)器,再將存儲(chǔ)器中的數(shù)據(jù)傳輸?shù)竭\(yùn)算器,運(yùn)算器算完后又將數(shù)據(jù)傳回存儲(chǔ)器。過程有點(diǎn)復(fù)雜,感興趣的朋友可以欣賞一下Youtube上Sydney Padua的視頻。
可惜的是,巴貝奇窮其一生也沒能真正把分析機(jī)做出來,留給后世的又是一臺(tái)模型機(jī)和兩千多張圖紙,以及這樣一段遺言:
如果一個(gè)人不因我一生的借鑒而卻步,仍然一往直前制成一臺(tái)本身具有全部數(shù)學(xué)分析能力的機(jī)器……那么我愿將我的聲譽(yù)毫不吝嗇地讓給他,因?yàn)橹挥兴軌蛲耆斫馕业姆N種努力以及這些努力所得成果的真正價(jià)值。
和差分機(jī)不同的是,分析機(jī)現(xiàn)存的圖紙并不完整,因此至今也沒能建造出來。不過好消息是,有兩個(gè)英國專家在前幾年發(fā)起了建造分析機(jī)的計(jì)劃——Plan 28(名稱來源于巴貝奇的第28套設(shè)計(jì)方案),宣稱要在2020年前做出來,讓人們看看CPU究竟是怎樣工作的,就讓我們拭目以待。
可以說,巴貝奇一生的奮斗都是孤獨(dú)的,在那個(gè)年代,人們看不到分析機(jī)的巨大價(jià)值和意義,有了先前差分機(jī)的失敗,政府也不再愿理會(huì)分析機(jī)的想法。巴貝奇的思想超前了整整一個(gè)世紀(jì),但慶幸的是在有生之年,依然有著三位難能可貴的支持者:
首先是他的兒子亨利·巴貝奇(Henry Prevost Babbage),直到巴貝奇過世后,亨利也繼續(xù)著分析機(jī)的建造工作,但終究也力不從心未能完成;
而后是后來成為了意大利總理的數(shù)學(xué)家閔那布利(Luigi Federico Menabrea),他在巴貝奇1840年演講時(shí)詳細(xì)記錄下了分析機(jī)的思想;
最后就是著名詩人拜倫的女兒,史上大名鼎鼎的女程序員艾達(dá)(Ada Lovelace),她將閔那布利記錄分析機(jī)的文章翻譯成英文,巴貝奇建議她在翻譯時(shí)增添一些自己的理解,結(jié)果艾達(dá)注解的長度是原文的兩倍,其中針對計(jì)算伯努利數(shù)的算法被視為史上第一個(gè)計(jì)算機(jī)程序,這篇名為《關(guān)于巴貝奇先生發(fā)明的分析機(jī)簡訊》的譯文被視為程序設(shè)計(jì)方面的第一篇著作,而艾達(dá)本人則成了世界上第一位程序員。
艾達(dá)幾乎是那個(gè)時(shí)候唯一一個(gè)真正理解分析機(jī)的人,她不僅編寫了許多可以在分析機(jī)上運(yùn)行的程序,甚至還看到了巴貝奇自己都沒有看到的事情——她說:分析機(jī)不光能用來計(jì)算,它應(yīng)該還能用來表示其他東西,比如音樂。這是多么遠(yuǎn)大的目光啊!后來美國國防部將一種編程語言命名為Ada,就是為了紀(jì)念這位與巴貝奇同樣具有超前思想的偉大女性。
更多詳細(xì)內(nèi)容,見新版連載:《計(jì)算機(jī)發(fā)展史趣談》
參考文獻(xiàn)
胡守仁. 計(jì)算機(jī)技術(shù)發(fā)展史(一)[M]. 長沙: 國防科技大學(xué)出版社, 2004.
N.A.阿波京, JI.E.梅斯特洛夫. 計(jì)算機(jī)發(fā)展史[M]. 上海: 上海科學(xué)技術(shù)出版社, 1984.
吳為平, 嚴(yán)萬宗. 從算盤到電腦[M]. 長沙: 湖南教育出版社, 1986.
陳厚云, 王行剛. 計(jì)算機(jī)發(fā)展簡史[M]. 北京: 科學(xué)出版社, 1985.
Wikipedia. Charles Babbage[EB/OL]. https://en.wikipedia.org/wiki/Charles_Babbage, 2015-12-10.
Wikipedia. Per Georg Scheutz[EB/OL]. https://en.wikipedia.org/wiki/Per_Georg_Scheutz, 2015-05-14.
Wikipedia. Difference engine[EB/OL]. https://en.wikipedia.org/wiki/Difference_engine, 2015-12-10.
xRez Studio. Babbage Difference Engine in Gigapixel[EB/OL]. http://www.xrez.com/case-studies/exhibition/babbage-gigapixel-difference-engine, 2010-11-27.
MechanicalComputing. Babbage's Difference Engine No. 2, Part 1: The method of finite differences[EB/OL]. https://www.youtube.com/watch?v=PFMBU17eo_4, 2015-04-10.
MechanicalComputing. Babbage's Difference Engine No. 2, Part 2: The Calculation Section[EB/OL]. https://www.youtube.com/watch?v=vdra5Ms__9s, 2015-04-10.
eriklanigan. Babbage Difference Engine in Motion[EB/OL]. https://www.youtube.com/watch?v=jiRgdaknJCg, 2011-07-06.
Andrew Carol. Babbage Difference Engine made with LEGO[EB/OL]. https://www.youtube.com/watch?v=i_u3hpYMySk, 2010-07-08.
夏鼐. 我國古代蠶、桑、絲、綢的歷史[J]. 考古, 1972, (02):12-27.
探索·發(fā)現(xiàn). 年輪·霞蔚天成(上)[EB/OL]. http://tv.cntv.cn/video/C14092/880134fb98fe4c55d1cb728d0e4556df, 2009-05-21.
趙豐. 中國絲綢通史[M]. 蘇州大學(xué)出版社, 2005.
Sydney Padua. Punchcard and rod controller[EB/OL]. https://www.youtube.com/watch?v=-FSJ7YnARwE, 2013-11-01.
Sydney Padua. Babbage's Analytical Engine: Overview[EB/OL]. https://www.youtube.com/watch?v=_fyUtU6LVNY, 2015-05-30.
John Graham-Cumming. The greatest machine that never was[EB/OL]. http://www.ted.com/talks/john_graham_cumming_the_greatest_machine_that_never_was, 2012-03.
Wikipedia. Ada Lovelace[EB/OL]. https://en.wikipedia.org/wiki/Ada_Lovelace, 2015-12-13.
相關(guān)閱讀
01改變世界:沒有計(jì)算器的日子怎么過——手動(dòng)時(shí)期的計(jì)算工具
01改變世界:機(jī)械之美——機(jī)械時(shí)期的計(jì)算設(shè)備