余風(fēng)
如果把1946年世界上第一臺(tái)電子計(jì)算機(jī)的出現(xiàn),視為“計(jì)算機(jī)元年”的話,那么,此前的2000余年,可以稱為計(jì)算機(jī)的“史前時(shí)代”。在這漫長(zhǎng)的時(shí)光中,算籌、算盤、加法機(jī)、差分機(jī)等的出現(xiàn),見(jiàn)證著人類追求精確快速計(jì)算的一次又一次嘗試。
石頭和繩子
美國(guó)小說(shuō)家西德尼·謝爾頓的暢銷小說(shuō)《假如明天來(lái)臨》中,巧舌如簧的騙子杰夫向人們兜售一種“袖珍計(jì)算機(jī)”,說(shuō)它價(jià)格低廉、絕無(wú)故障、節(jié)約能源且10年內(nèi)無(wú)需任何保養(yǎng)。當(dāng)購(gòu)買者打開(kāi)包裝盒后,卻發(fā)現(xiàn)它其實(shí)就是中國(guó)的算盤。
實(shí)際上,算盤雖然不是計(jì)算機(jī),卻算得上是計(jì)算機(jī)的“祖先”--它是世界上最古老的計(jì)算工具之一。
比算盤更古老的計(jì)算工具,是石頭和繩子。遠(yuǎn)古時(shí)期遺留下來(lái)的一些壁畫顯示,在文字尚未出現(xiàn)以前,人們常常用石頭或繩子來(lái)計(jì)算捕獲的獵物?!兑捉?jīng)》中也說(shuō):“上古結(jié)繩而治,后世圣人易之以書契。”
據(jù)說(shuō),公元前514年,波斯王大流士在遠(yuǎn)征塞西亞時(shí),給了他的指揮官們一根打了60個(gè)結(jié)的繩子,并夸口說(shuō),從出征的那天起,讓他們每天解開(kāi)繩子上的一個(gè)結(jié),到解完最后一個(gè)結(jié)的那天,就能夠凱旋而歸。結(jié)果,這場(chǎng)戰(zhàn)爭(zhēng)打了兩年也沒(méi)能取勝。
從算籌到算盤
繼石頭和繩子之后,人們發(fā)明出一種更先進(jìn)的計(jì)算工具--算籌。
算籌又稱算子,起源于中國(guó)的商代,是一種十進(jìn)制計(jì)算工具,通過(guò)移動(dòng)一根根長(zhǎng)短粗細(xì)相同的竹制、木制或骨制小棍子來(lái)進(jìn)行計(jì)算。它不僅可以計(jì)數(shù),而且能做加、減、乘、除等運(yùn)算。南北朝時(shí)期的數(shù)學(xué)家祖沖之正是利用算籌,算出了圓周率小數(shù)點(diǎn)后的第6位,比法國(guó)數(shù)學(xué)家韋達(dá)的相同成就早了1100多年。
中國(guó)的十進(jìn)位制算籌記數(shù)法是一個(gè)偉大且領(lǐng)先世界的創(chuàng)造--同一時(shí)期,古羅馬只有數(shù)字系統(tǒng)(7個(gè)基本數(shù)字符號(hào))卻沒(méi)有位值制;古瑪雅人的位值制是20進(jìn)位;古巴比倫人用的則是60進(jìn)位。
繼算籌之后,中國(guó)古代在計(jì)算工具領(lǐng)域的另一項(xiàng)重大發(fā)明是珠算盤。相傳其雛形最早可追溯到公元前600年的春秋時(shí)期,據(jù)說(shuō)當(dāng)時(shí)已出現(xiàn)了“算板”:將10個(gè)算珠串成一組,一組組排列好放入框內(nèi),然后撥動(dòng)算珠進(jìn)行計(jì)算。
但珠算盤的最早文字記載,直到漢代才出現(xiàn)在徐岳的《數(shù)術(shù)記遺》一書中。明代時(shí),珠算盤已經(jīng)與現(xiàn)代算盤基本相同--有13根豎軸,每根上部有2顆珠子,下部有5顆珠子,中間以橫梁隔開(kāi),通過(guò)“口訣”進(jìn)行運(yùn)算。由于珠算盤具有“隨手撥珠便成答數(shù)”的優(yōu)點(diǎn),運(yùn)算起來(lái)要比算籌快得多,因此很快就流行起來(lái)并傳入日本、朝鮮、越南、泰國(guó)以及歐洲的一些國(guó)家,受到世界各地人們的喜愛(ài)。
格子算法與納皮爾算籌
15世紀(jì)中葉,意大利數(shù)學(xué)家帕喬利在《算術(shù)、幾何及比例性質(zhì)摘要》一書中介紹的一種計(jì)算乘法的方式--格子算法。相傳,這種方法最早記載在1150年成書的印度數(shù)學(xué)家婆什迦羅的《麗羅娃提》一書中,12世紀(jì)后廣泛流傳于阿拉伯地區(qū),后傳入歐洲并廣為流行。
格子算法的原理,是通過(guò)加法操作來(lái)完成乘法計(jì)算。例如計(jì)算357×46時(shí),先畫一個(gè)矩形,把它分成3×2的小格,在小格邊上依次寫下乘數(shù)、被乘數(shù)的各位數(shù)字,再用對(duì)角線把小格一分為二,分別記錄上述各位數(shù)字相應(yīng)乘積的十位數(shù)與個(gè)位數(shù),把這些乘積由右到左,沿斜線方向相加,相加滿十時(shí)向前進(jìn)一。這樣,最后得到的結(jié)果便是:357×46=16422。
1612年,英國(guó)數(shù)學(xué)家納皮爾根據(jù)格子算法的原理,將格子和數(shù)字刻在“籌”(長(zhǎng)條竹片或木片)上,發(fā)明出納皮爾算籌。兩年后,他進(jìn)一步提出對(duì)數(shù)的概念。此后,牛津大學(xué)的埃德蒙·甘特發(fā)明出一種使用單個(gè)對(duì)數(shù)刻度的計(jì)算尺。
“機(jī)械化”對(duì)數(shù)計(jì)算尺問(wèn)世
1630年,英國(guó)牧師、數(shù)學(xué)家、乘法符號(hào)“×”的發(fā)明者奧特雷德發(fā)明出圓算尺,1632年,他組合兩把甘特式計(jì)算尺,制造出世界上第一把“機(jī)械化”對(duì)數(shù)計(jì)算尺。
到了18世紀(jì),這種計(jì)算尺逐漸被改良成圓柱型對(duì)數(shù)計(jì)算尺并成為工程師們的至愛(ài)。18世紀(jì)末,蒸汽機(jī)的發(fā)明者瓦特在對(duì)數(shù)計(jì)算尺的尺座上添置了一個(gè)滑標(biāo),用來(lái)貯存計(jì)算的中間結(jié)果。
對(duì)數(shù)計(jì)算尺不僅能做加、減、乘、除、乘方、開(kāi)方運(yùn)算,還能計(jì)算三角函數(shù)、指數(shù)函數(shù)和對(duì)數(shù)函數(shù),因此一直被使用到20世紀(jì)70年代袖珍電子計(jì)算器問(wèn)世為止。著名物理學(xué)家費(fèi)米就曾經(jīng)為他的學(xué)生李政道制作過(guò)一把兩米長(zhǎng)的計(jì)算尺,用來(lái)計(jì)算太陽(yáng)中心溫度,這大概是史上最長(zhǎng)的計(jì)算尺了。
被歷史埋沒(méi)的契克卡德
17世紀(jì),隨著航海、天文學(xué)等的蓬勃發(fā)展,人們迫切需要新的計(jì)算工具和計(jì)算方式。據(jù)說(shuō),1623年,德國(guó)圖賓根大學(xué)教授契克卡德曾為著名天文學(xué)家開(kāi)普勒制作了兩臺(tái)機(jī)械計(jì)算機(jī)。這種計(jì)算機(jī)能做6位數(shù)的加減法,機(jī)器上部附加了一套圓柱型“納皮爾算籌”,因此也能進(jìn)行乘除運(yùn)算。此外,它或許還設(shè)置了某種“溢出”響鈴裝置。
可惜,這兩臺(tái)計(jì)算機(jī)后來(lái)不知下落。直到300多年后的1960年,契克卡德家鄉(xiāng)的人根據(jù)他當(dāng)年手書的示意圖仿制出這種計(jì)算機(jī)后,這位被歷史埋沒(méi)的計(jì)算機(jī)先驅(qū)才得以聞名于世。endprint
第一臺(tái)機(jī)械計(jì)算機(jī)誕生
現(xiàn)在普遍認(rèn)為,歷史上第一臺(tái)機(jī)械計(jì)算機(jī)是法國(guó)著名科學(xué)家布萊斯·帕斯卡發(fā)明的。
1639年,帕斯卡的父親受命出任諾曼底省監(jiān)察官,負(fù)責(zé)征收稅款。年僅16歲的帕斯卡看著父親費(fèi)力地計(jì)算稅率、稅款,就萌發(fā)了要為父親制作一臺(tái)計(jì)算機(jī)的想法。此后,他先后做出2個(gè)不同的模型。
1642年,帕斯卡的第3個(gè)模型--加法器終于制作成功,這一年,他剛滿19歲。
帕斯卡加法器是利用齒輪傳動(dòng)原理,通過(guò)手工操作來(lái)實(shí)現(xiàn)加、減運(yùn)算的。其外殼用黃銅制作,機(jī)器內(nèi)部裝有一組輪子,每個(gè)輪子上刻著從0到9的10個(gè)數(shù)字。當(dāng)兩數(shù)相加時(shí),先在輪子上撥出一個(gè)數(shù),再在相應(yīng)的輪子上轉(zhuǎn)動(dòng)出第二個(gè)數(shù),最后就能自動(dòng)得出兩數(shù)之和。如果某一位上兩個(gè)數(shù)字之和超過(guò)了10,加法機(jī)就會(huì)自動(dòng)通過(guò)齒輪進(jìn)位。
加法器的問(wèn)世意義重大--它意味著人們可以利用機(jī)械工具來(lái)模擬人的思維活動(dòng)。
受到加法器的啟發(fā),1673年,德國(guó)數(shù)學(xué)家萊布尼茨發(fā)明出一種更先進(jìn)的乘法器。他在加法器的基礎(chǔ)上增設(shè)了步進(jìn)輪,可以連續(xù)重復(fù)地做加減法,然后通過(guò)轉(zhuǎn)動(dòng)手柄,將這種重復(fù)加減轉(zhuǎn)變?yōu)槌顺\(yùn)算。
萊布尼茨還從中國(guó)“易圖”(八卦)中得到啟發(fā),提出二進(jìn)制也許更適合機(jī)械進(jìn)行數(shù)學(xué)運(yùn)算,從此奠定了現(xiàn)代計(jì)算機(jī)科學(xué)的理論基礎(chǔ)。
可編程織布機(jī)和制表機(jī)問(wèn)世
萊布尼茨乘法器問(wèn)世半個(gè)世紀(jì)后,1725年,法國(guó)紡織機(jī)械師布喬提出“穿孔紙卡”的概念。1805年,法國(guó)紡織機(jī)械師杰卡德發(fā)明出可編程織布機(jī),通過(guò)讀取穿孔紙卡上的編碼信息來(lái)自動(dòng)控制織布機(jī)的編織圖案。
受可編程織布機(jī)的啟發(fā),1888年,美國(guó)人口普查局的統(tǒng)計(jì)學(xué)家霍列瑞斯博士使用穿孔卡片成功制成一臺(tái)機(jī)電式自動(dòng)制表機(jī)。這種制表機(jī)在此后的歷次美國(guó)人口普查中均獲得巨大成功。值得一提的是,霍列瑞斯制表機(jī)第一次把數(shù)據(jù)轉(zhuǎn)變成二進(jìn)制信息。在此后的計(jì)算機(jī)系統(tǒng)里,用穿孔卡片輸入數(shù)據(jù)的方法一直沿用到20世紀(jì)70年代。
杰卡德和霍列瑞斯分別開(kāi)創(chuàng)了程序設(shè)計(jì)和數(shù)據(jù)處理的先河,這二者構(gòu)成了后來(lái)計(jì)算機(jī)“軟件”的雛形。
超越時(shí)代的巴貝奇差分機(jī)
杰卡德之后,英國(guó)數(shù)學(xué)家、天才發(fā)明家查爾斯·巴貝奇利用可編程織布機(jī)的原理,耗費(fèi)10年潛心研究,終于在1822年發(fā)明出歷史上第一臺(tái)可編程計(jì)算機(jī)--差分機(jī)。
這臺(tái)差分機(jī)由堆棧、控制器和運(yùn)算器三部分組成,幾乎是現(xiàn)代計(jì)算機(jī)的簡(jiǎn)化版本,它擁有1000個(gè)50位數(shù)的堆棧、以二進(jìn)制碼為基礎(chǔ)的控制器和復(fù)雜的計(jì)算條件跳轉(zhuǎn)結(jié)構(gòu)??商幚?個(gè)不同的5位數(shù),計(jì)算精度達(dá)到6位小數(shù)。
差分機(jī)的程序,是由數(shù)學(xué)家愛(ài)達(dá)·奧古斯塔(英國(guó)著名詩(shī)人拜倫的女兒)設(shè)計(jì)完成的。她先后編寫了三角函數(shù)程序、級(jí)數(shù)相乘程序、伯努利函數(shù)程序等一大批沿用至今的數(shù)學(xué)算法代碼。1981年,美國(guó)國(guó)防部將一種計(jì)算機(jī)語(yǔ)言命名為愛(ài)達(dá)語(yǔ)言,以紀(jì)念“世界上第一位軟件工程師”。
后來(lái),巴貝奇和愛(ài)達(dá)提出改良差分機(jī)的設(shè)想,希望使它能自動(dòng)解算有100個(gè)變量的復(fù)雜算題,每個(gè)數(shù)可達(dá)25位,速度達(dá)到每秒鐘運(yùn)算1次。為此,巴貝奇提出了20種不同的設(shè)計(jì)方案,繪制了近2000張組裝圖和50000張零件圖。
但是,巴貝奇和愛(ài)達(dá)的想法太過(guò)超前,由于制造工藝的限制,加之經(jīng)費(fèi)上的困難,他們付出一生的努力也沒(méi)能實(shí)現(xiàn)這一設(shè)想。100多年后,倫敦科學(xué)博物館按照巴貝奇的圖紙,花了整整17年,終于在2002年成功仿制出這種改良版差分機(jī)。
馬克1號(hào)問(wèn)世
美國(guó)哈佛大學(xué)數(shù)學(xué)教授霍華得·艾肯在讀過(guò)巴貝奇和愛(ài)達(dá)的筆記后,被他們的遠(yuǎn)見(jiàn)卓識(shí)所震驚,進(jìn)而提出用機(jī)電而不是純機(jī)械的方法來(lái)實(shí)現(xiàn)差分機(jī)。
1944年2月,在IBM公司的贊助下,艾肯成功研制出一臺(tái)全自動(dòng)化程序控制計(jì)算機(jī)--馬克1號(hào)。
馬克1號(hào)由開(kāi)關(guān)、繼電器、轉(zhuǎn)軸以及離合器構(gòu)成,借助電流進(jìn)行運(yùn)算。它裝備了15萬(wàn)個(gè)元件和長(zhǎng)達(dá)800公里的電線,重達(dá)31.5噸。其關(guān)鍵部件為3000個(gè)繼電器,每個(gè)繼電器上都有用彈簧支撐的小鐵棒,通過(guò)電磁鐵的吸引上下運(yùn)動(dòng)。吸合則接通電路,代表“1”;釋放則斷開(kāi)電路,代表“0”。
馬克1號(hào)可儲(chǔ)存72組數(shù)據(jù),每組數(shù)據(jù)有23位十進(jìn)制數(shù)字,每分鐘可進(jìn)行200次以上的運(yùn)算,每秒可運(yùn)算3次加法或減法。計(jì)算一個(gè)乘法則需6秒,除法需15.3秒。此外,它甚至可以求解微分方程。
馬克1號(hào)代表了機(jī)械計(jì)算機(jī)或電動(dòng)計(jì)算機(jī)的頂尖水平,一經(jīng)問(wèn)世便被用來(lái)計(jì)算原子核裂變過(guò)程。之后,它又運(yùn)行了15年,編出的數(shù)學(xué)用表人們至今還在使用。但它從投入運(yùn)行的那一刻起,其實(shí)就已經(jīng)過(guò)時(shí)了,因?yàn)榇藭r(shí),人類社會(huì)已經(jīng)大踏步跨進(jìn)了電子計(jì)算機(jī)時(shí)代。(責(zé)任編輯/清揚(yáng))endprint