FROM CALCULATOR TO COMPUTER: PART I

(原載於果殼網 http://www.guokr.com/question/561520/

(果殼問答: 电脑是怎样从最简单的计算器发展起来的?电脑是怎样从最简单的计算器发展起来的,比如最先有打孔的片,比如原先cpu是怎样的,原理是什么,比如加法机的原理 )


我在回答中加了一個限定:從計算器到計算機,或者收緊一點兒說是:FROM MECHANICAL CALCULATOR TO ELETRICAL COMPUTER(從機械計算器到電子計算機)。

可能我的切入點跟林同學最開始發問的初衷有些距離,我是想從「簡單的計算器」這個字眼入手,來扒一扒⋯⋯

人類會算加減法,簡直是一項奇蹟,一項注定我們能跟宇宙交換信息的奇蹟。能夠抽象理解數字的含意,目前只有人類可以做到。在簡單地掰著手指跟腳趾數數之後,我們就對加和減有了直觀的認識,所以在理解加減法這件事上,人類幾乎是與生俱來的。如果一個人生來沒有智力的永久性缺陷,那麼他一定可以學會加減法。

那麼比20大的數呢?我們沒有再多的肢體末梢來記數了,頂多是男人額外加個五體,女人額外加個四體。在原始社會除了叫你家的兄弟姐妹排排坐數手腳以外,還可以結繩記數,但這依舊是數數,而非真正意義上的計算。當然,如果你記性好的話,可以來回掰著十根手指,數足夠大的數(有一點要特別清楚:計算這件事還跟記憶或者存儲有關,這是後話)。

真正意義上的計算,是算數(ARITHMETIC)法則出現以後的事。讓我們暫時離開關於算數的討論,先來看看這樣幾件史實: 
07003629_J1Ya.jpg

這張圖上藍色的記號,是瑪雅人的記數系統,他們相當老實,因為每個人都隨身帶著20根手指腳趾,所以就採取了二十進制的記數系統。如果我只告訴你這麼多,用不了多久你就能自己發現,6對應著一道橫線上加一個點。

我們再來看看地球另一端的美索不達米亞文明,他們採用了六十進制。 
07003629_qiLh.png

這兩種不同文明的不同記數系統,卻有一個相似之處,那就是非常容易辨認出數字的大小來——對於人類來說象形文字非常好識別。

距離美索不達米亞地區尚沒有超出半個地球遠的羅馬地區,算數也一定不會是「算數不好的人」能學會的。這幫光著屁股參加祭神運動會的傢伙們用拉丁字母當作數字,回憶下牆上老式的鐘錶,V表示5,V右邊出現的數字表示在5的基礎上加上,而左邊的數字表示減去(一般也就是IV,而沒有IIV,因為3有III,但是7有VII)。同理,C表示100,D表示500,CD就表示400,而DCCCLXXIII這麼長的字符表示的僅僅是873。跟前面兩個文明一樣,這種記數系統在做算數的時候,依然可以數數。但是請注意,這種類型的記數系統本身就涵蓋了加減法的計算。因為直觀,我們添上一個記號或者拿掉一個記號就能完成加減的過程。

那麼問題就來了。我要是讓你計算VII+IV,你要怎麼做?儘管數數能完成任務,但花去的時間太多——人類在計算問題上一直在追求越快越好,對「算法」的精益求精推動了數學乃至科學的發展。有一種算法,滿十加減,將IV拆成III+I,VII遇到III變成X(注意我的描述),然後再加上I得到XI。這裏邊還包含了進位和退位的思想,一個字符佔一個位,同位加減在同一個位上完成,而這也是天經地義的(儘管對於羅馬人的記數系統來說不存在直觀的位)。

一個行之有效的教授算數的辦法,是編制加減法表,就是像下邊幾張圖: 
07003629_090m.png
07003629_Bjfs.png
07003629_FKET.png
07003629_cBlR.png

這個過程如此簡單,我想你現在肯定忘記了自己小時候也學過,至少每一個加減法都抄寫過很多遍,遍數就看你「算數好不好」。不要單獨覺得自己小時候很苦,從南美洲的馬丘比丘到歐羅巴的羅馬,幾千年來大家都背過加減法表。

編制計算表這項工作,很容易被我們忽略了其深刻意義,因為如今我們有了新型的計算工具,省去翻書查表的工夫,我們的父輩應該還保有在工廠從事生產工作時查表的經驗。但是越是嚴謹的數學手冊類圖書,就越是應該收錄這些計算表,因為計算表——是我們最古老的第一代計算器。

可能有人會說,古代中國發明的算盤應當是最早(或者較早)的計算器(這才能叫計算器啊,前面說了那麼多難道跑題了?)如果是這樣,那麼我說古代中國的算籌、或者算珠,都應當是咯。 
07003631_g2hi.jpg
07003631_ryVH.jpg
07003631_EemE.jpg

真正使得工具成為計算器的不是工具本身,而是我們的目的——計算表的出現,是為了加快計算的速度,減少所用的步數,而這實際上就是計算器背負的使命,在這個意義上計算表正是我們最古老的第一代計算器。

想想看,給你一個算盤,上面撥上了兩顆珠子,我現在讓你加上三,你是怎麼做的——在心裏默念著「三下五除二」,然後把原來的兩顆珠子撥下來,再撥下來一個代表5的珠子。為了記憶計算表,中國人編寫了很多口訣,「三下五除二」就是其中一句,而我們也總愛拿我們因為有「九九乘法口訣」所以中國孩子比美國孩子學乘法快這件事炫耀。

回過頭來看看上面的描述,你應當讀之而後驚,這正是我要指出的另外一件容易被我們忽略的事實:在動用算盤計算的時候,你充當了計算器的一部分,你在大腦中回憶起口訣,活動手指撥算盤,最後看著算盤上得到的數字;你既是人肉計算器,又是計算器的使用者。

機械計算器的出現,不過就是將人從計算器內部解放出來而已。

從機械計算器到電子計算機,始終都不是什麼驚天動地的大事,充其量是我們在給計算器做升級(Internet的出現才算是驚天動地的大事,圍繞著它,電子計算機徹底改變了世界)。

林同學問「電腦是怎樣從最簡單的計算器發展起來的」,現在我回答完了1/3,但這1/3卻歷經了幾個千年,直到17世紀才誕生了現代形制的機械計算器(加法機),才解放了人類在計算中扮演的角色,用萊布尼茨的話說「將優秀的人才從繁重的計算中解脫出來」。最後讓我們再看看這「最簡單的計算器」——計算表,接下來又是如何改變世界的吧。

在加減法之後就誕生了乘法,乘法的出現更加明顯地應徵了計算表是為了加快計算時間、減少計算步數,不言自明。因為除法是乘法的逆運算,所以享用了同一張口訣表;在數學史上我們不提除法表,而是倒數表,因為倒數和分數的運算其實就是除法。

平方表是九九乘法表的2.0.1升級版,立方表是2.0.2版,四次方表是2.0.3版⋯⋯然而開方表從一出現就彷彿是數學家(其實是古希臘的幾何學家,或者「有理數算數學家」)的惡夢一樣,2的開平方甚至染上了血跡⋯⋯最終開方表的編制,將無理數引入了數學,人類對數的認知又向前跨越了一大步。

計算表,是我們根據發現的算數法則,帶入一系列特徵數而得到的結果列表。寫出一個算數法則通常只佔去一步,但是計算其中的數值卻要花很多步。比如三位數乘三位數,我們是分開三步乘法和一步加法得到的;而電腦也是這麼做的,我們和電腦的區別是,我們查表最快最快掃一眼,也比電腦壓根兒楞算慢得多(我想避免去比較心算和電腦的速度)。 
07003631_1u7B.jpg

對於常用的數學運算,我們會編制計算表,比如上圖是著名的「普林頓322號」泥板,經過分析我們發現,這竟是一塊兒勾股定理計算表。

從勾股定理計算表發展下去是平面三角函數表和球面三角函數表,人們發現了三角函數的乘法可以轉化為加減法——加減法始終比乘法要簡便。在天文、農曆、航海、建築等領域,積化和差的方法又向前推進了數學的應用性。

相比最早的加減法計算表沒有引起太多人的重視,對數表的誕生卻被認為是數學史上的大事,伽利略說:「給我空間、時間和對數,我就能創造一個宇宙!」恩格斯把對數的發明、解析幾何的誕生和微積分的建立並稱為17世紀數學的三大成就。對數也是一種積化和差方法。我們現在知道,log(ab)=loga+logb,對於能夠分解成兩個數乘積的大數,只要知道兩個小一點的數的對數,就能求得大數,那麼按照從小到大的序列將loga跟logb逐一算出編成表就可以了(我們今天用的對數表,是從另一個數學家布吉斯(Briggs)的對數表演化過來的,但「對數」(logarithm)這個詞的確是納皮爾發明的)——為了得到這張對數表,約翰•納皮爾花了20年時間進行了數百萬次乘法運算——而你在高中學會查對數表以後所花去的計算時間就前所未有地縮短了。

這同樣可以作為計算表是一種計算器的證明,但它跟我們司空見慣的理解又大相徑庭,原因就是,我們在做計算的時候,從來沒有把自己當作人肉計算器,除非你是那種心算哪年哪月哪天是星期幾都不帶眨眼就能得到結果的天才。我們習慣將自己完不成或者費勁完成的事情交給外部,我們習慣感嘆超越自己的技術能力,面對人類造出來可以代替我們計算的工具,我們從來不乏溢美之辭,我們越來越依賴工具,似乎沒有電腦就沒有今天。然而誰又能清醒地意識到,隨著科技的進步,我們受到的教育也在升高,站在巨人肩膀上的我們徒藉雙手,已經毋需畏懼科技社會是否會崩潰,因為再造的力量早已根植於我們身上。如果明天退回到沒有電腦的時代,你一定看不到我這篇電子文章,如果連機械計算器都「沒收」的話,只要還有計算表,飛機照樣可以在天空飛。

由於計算越來越複雜,計算表被迫越來越長,檢驗起來越來越麻煩,所以亟待有新型的計算工具出現。介於機械計算器和計算表之間的過渡型態——計算尺規久誕生了。 
07003631_ltMi.jpg

上圖是伽利略發明的比例規,外形像圓規,任意開闔,根據比例原理進行乘除比例運算。

15世紀左右在中亞細亞和歐洲通行一種「格子算法」,其實跟乘法竪式沒有區別,只不過用格子來替代數位。數學家納皮爾據此發明了「納皮爾籌」(Napier’s Bones/ Rods),即將格子刻到籌上,使用時可以任意拼合,北京故宮博物院還藏有清代象牙制橫排納皮爾籌(這套工具是如此重要,我將在PART II詳細描述它的用法)。 
07003631_U1Jn.jpg

對數發明後,相繼誕生了對數尺,對於上世紀八十年代出生的國人來說,用過對數尺的都已經算早年的學霸了。
07003631_vAhh.jpg

再往後一些,我們甚至有積分表這種高級貨,每一個大學受過高等數學摧殘的人想必還記憶猶新吧⋯⋯我上高中的時候自學了高等數學,在我剪裁的《常用數學公式與計算表》裏,積分表那頁寫到:「REMEMBER:不要總是說『查積分表去!』」但實際上大部分的運算我還是沒有背下來⋯⋯

這些計算工具,都只是在一定程度上將紙質的計算表變成硬質的計算表,最後對數字的加工、得到結果依然是靠人來完成,我們離自動計算還差最後一步,讓機械代替人類做人類做的事。

转载于:https://my.oschina.net/u/2254454/blog/341721

评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符 “速评一下”
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页