Hello World!我是老喬,這裡是超智星球,每篇文章都帶你學透一個小知識。
如果你覺得本文對你有幫助,我註冊了超智星球的同名域名。你可以找到我,我們一起學習。
最近啊,我是天天跟「計算機」和「計算」打交道了,各種分布式、調度、多線程之類的概念繞來繞去哦。這促使我啊,對計算機的原理,再走一遍。
老規矩,學到哪講到哪,今天先講講,我學的計算機歷史。
本文6709個字,預計需要15分鐘。
01本節知識目錄
本節內容:「ENIAC」之前的計算機早期歷史
提到的設備:算盤→步進計算器→自動提花編織機→差分機→分析機→打孔卡片制表機提到的人名:帕斯卡、萊布尼、傑卡德、巴貝奇、阿達、霍列瑞斯博士、IBM
本期知識點:
最早的計算設備是算盤,舉例如何使用1613年,Computer一次出現,最初用於指代「計算工作者」1642年,帕斯卡計算器是第一臺機械計算器(機械的計算器、只能加減)1694年,萊布尼茨步進計算器。第一個加減乘除的機器(原理是連續加減)1805年,法國機械師傑卡德 真正完成了」自動提花編織機「的製作,首次「可編程」上述機器同時代,要快速計算彈道,主要是靠計算表。但每次改設計就需要一張新表1822年,巴貝奇提出了差分機,能計算多項式;構造差分機期間,想出了分析機, 分析機是通用計算機;Ada給分析機寫了假想程序,因此成為了第一位程式設計師1890年,霍列瑞斯博士的打孔卡片制表機大大提升了人口普查的效率1896年,霍列瑞斯創辦了制表機器公司(Tabulating Machine Company)1924年,上述公司經營不善與其它機械製造商合併,成為國際商業機器公司——IBM
02古代計算工具
雖然電子計算機出現不久(「ENIAC」於1946--2020,74年左右),相比人類歷史非常短暫,但人類對計算的需求早就有了。
與之相應的,計算工具的演化也經歷了由簡單到複雜、從低級到高級的不同階段,例如從「結繩記事」中的繩結到算籌、算盤計算尺、機械計算機等。
它們在不同的歷史時期發揮了各自的歷史作用,同時也啟發了現代電子計算機的研製思想。
在古時候,人們最早使用的計算工具可能是手指,英文單詞「digit」既有「數字」的意思,又有「手指「的意思。古人用石頭打獵,所以還有可能是石頭來輔助計算。
但是呢,手指和石頭有缺點啊,都太低效了。手指就10個,加上腳指頭也才20。石頭呢,帶多了沉!揣兜裡,費兜。
後來出現了"結繩記事"。缺點:結繩慢,繩子還有長度限制。
又不知過了多久,許多國家的人開始使用」籌碼「來計數,最有名的就要數咱們中國商周時期出現的算籌了。
古代的算籌實際上是一根根同樣長短和粗細的小棍子,大約二百七十幾枚為一束; 多用竹子製成,也有用木頭、獸骨、象牙、金屬等材料製成的。數學家祖衝之計算圓周率時使用的工具就是算籌。
算籌的缺點:使用算籌計算太麻煩了,很不方便——計算時需要慢慢擺放。
於是,人們發明了更好的計算工具——算盤,它也是公認最早的計算設備。世界範圍來看,算盤最早發明於"美索不達米亞",大約公元前2500年(這也是我們標題的來源)。在我國,最早可能在漢代萌芽,在南北朝時期定型。距今也有兩千多年了。
人們製造算盤是因為社會的規模已經超出個人心算的能力,一個村莊可能有上千個人和上萬頭牛。
算盤利用進位制計數。使用時需要配合一套口訣——這口訣就好比計算機的軟體。算盤本身還可以存儲數字,使用時很方便。至今,算盤還在被使用。
它是用來幫助加減數字的手動計算器,它存儲著當前的計算狀態,類似於如今的硬碟。
感興趣同學可以去搜一下算盤的使用方法,我們就不展開講了。
算盤在公元前2500年就有了,在接下來的4000年裡,人類發明了各種巧妙的計算設備:
比如,星盤,讓船隻可以在海上計算緯度比如,計算尺,幫助計算乘法和除法比如,人們還創造了上百種時鐘 算日出,潮汐,天體的位置,或純粹拿來計時
這些設備,雖然我們多數人可能都沒聽過,沒見過。但是對當時來說,每一種工具的發明讓原先很費力的事變得更快,更簡單,更精確 - 降低了門檻,加強了我們的能力
記筆記!(敲黑板)這個系列會多次提到這一點
計算機先驅 Charles Babbage 說過:
> "At each increase of knowledge, as well as on the contrivance of every new tool,human labour becomes abridged."
> "隨著知識的增長和新工具的誕生,人工勞力會越來越少"
嗯,降低門檻,For Everyone。
03Computer一詞的由來
然而,上面提過的那些設備我們可以稱作是"計算工具",但它們並不叫做"計算機"
最早使用"computer"一詞的文獻,來自1613年的一本書,作者Richard Braithwait。Braithwait說:
> "I have read the truest computer of times,and the best arithmetician that ever breathed, and he reduceth thy dayes into a short number".
> "我聽說過的計算者裡最厲害的,能把好幾天的工作量大大縮減"
可見,那時,"Computer"指負責計算的人。"計算工作者"偶爾會用機器幫忙,但大部分時候靠自己,這個職位一直到1800年代還存在。
在之後,"Computer"逐漸開始代表機器,帶來這個變化的,是一系列計算機器的發明。
04第一臺真正的計算器
1623年,法國數學家帕斯卡出生,三歲喪母,後由擔任稅務官的父親養大。在帕斯卡小時候,看到父親費力的計算稅率稅款的時候,就想幫父親做點事情。
19歲時(1642年),帕斯卡發明了人類有史以來第一臺機械計算機——帕斯卡加法器。
它是一種系列齒輪組成的裝置,外形像一個長方盒子,用兒童玩具那種鑰匙旋緊發條後才能轉動,只能夠做加法和減法。
然而,即使只做加法,也有個「逢十進一」的進位問題。聰明的帕斯卡採用了一種小爪子式的棘輪裝置。
當定位齒輪朝9轉動時,棘爪便逐漸升高;一旦齒輪轉到0,棘爪就「咔嚓」一聲跌落下來,推動十位數的齒輪前進一檔。
05加減乘除的步進計算器
1662年帕斯卡去世,不久後。1672年的某一天,一位在德國政壇小有名氣的年輕人受邀來訪巴黎——一座大師薈萃的城市。身為文科生的他卻誤打誤撞與幾位大數學家成為了好友,從此闖進了理科的世界,沒想到這一闖就掀起了歷史的驚濤駭浪。
鑽研數學期間,他漸漸發現:
> "... it is beneath the dignity of excellent men to waste their time in calculation when any peasant could do the work just as accurately with the aid of a machine."
> "...讓一些傑出人才像奴隸般地把時間浪費在計算工作上,是不值得的"
於是,1694年,世界上第一臺可以自動執行四則運算的機械式計算機誕生了。而這,幾乎是他一生中最不值一提的成就之一。
他就是曾和艾薩克·牛頓爭奪微積分發明權的大名鼎鼎·萊布尼茨。
事實上,萊布尼茨應該叫做博學家。研究了他老人家的生平,我後面一定要寫個萊布尼茨專篇。在這裡,讓我們先做個簡單但正式的介紹:
> 戈特弗裡德·威廉·萊布尼茨(Gottfried Wilhelm Leibniz 1646-1716),德國博學家、哲學家,歷史上少見的通才,被譽為17世紀的亞里斯多德。
萊布尼茨發明的新型計算機約有1米長,內部安裝了一系列齒輪機構,除了體積較大之外,基本原理繼承於帕斯卡。
不過,萊布尼茨技高一籌,他為計算機增添了一種名叫「步進輪」的裝置。步進輪是一個有9個齒的長圓柱體,9個齒依次分布於圓柱表面;旁邊另有個小齒輪可以沿著軸向移動,以便逐次與步進輪嚙合。
每當小齒輪轉動一圈,步進輪可根據它與小齒輪嚙合的齒數,分別轉動1/10、2/10圈……,直到9/10圈,這樣一來,它就能夠**連續重複地做加法**。同樣的,做減法時,機器會反向運作,也可以做做連續減法。
直到今天,"連續重複的計算加減法」仍然是現代計算機做乘除法採用的辦法,計算器真的不是直接就能口算出11*9=99。
06「可編程」的提花編織機
計算機發展到現在還是人去操作機器,還沒有實現人與機器的對話。有沒有什麼辦法,能把人類的思想告訴機器,讓機器按照人的想法去自動執行。這個話題,成為「人機對話」
說到實現人機對話,就要說一下另外一個行業——紡織業,並提到提花編織機。
提花編織機是具有升降紗線的提花裝置,是一種能使綢布編織出圖案花紋的織布機器。
最開始編織機編織圖案相當費事。所有的綢布都是用經線(縱向線)和緯線(橫向線)編織而成。若要織出花樣,織工們必須細心地按照預先設計的圖案,在適當位置「提」起一部分經線,以便讓滑梭牽引著不同顏色的緯線通過。
機器當然不可能自己「想」到該在何處提線,只能靠人手「提」起一根又一根經線,不厭其煩地重複這種操作。
1725年:法國紡織機械師布喬發明了「穿孔紙帶」的構想。布喬想出了一個「穿孔紙帶」的絕妙主意。
布喬首先設法用一排編織針控制所有的經線運動,然後取來一捲紙帶,根據圖案打出一排排小孔,並把它壓在編織針上。
啟動機器後,正對著小孔的編織針能穿過去鉤起經線,其它則被紙帶擋住不動。於是,編織針自動按照預先設計的圖案去挑選經線,布喬的「思想」「傳遞」給了編織機,編織圖案的「程序」也就「儲存」在穿孔紙帶的小孔中。
1790年的時候法國機械師傑卡德,基本形成了改進提花機的構想,由於當時正是法國大革命時期,傑卡德為了參加革命,無暇顧及發明創造,直到1805年才真正完成」自動提花編織機「的製作。
傑卡德為他的提花機增加了一種裝置,能夠同時操縱 1200 個編織針,控制圖案的穿孔紙帶後來換成了穿孔卡片。
在後來電子計算機開始發展的最初幾年中,在多款著名計算機中我們均能找到自動提花機的身影。
07更便宜更快的計算表
萊布尼茨的步進計算機,是第一臺能做"加減乘除"全部四種運算的機器。它的設計非常成功,以至於沿用了3個世紀。
不幸的是,即使有機械計算器,許多現實問題,依然需要很多步。算一個結果可能要幾小時甚至幾天。並且,第二方面,這些手工製作的機器非常昂貴,大部分人買不起。
所以在20世紀以前,大部分人會用預先算好的計算表,這些計算表由之前說的 "human computers"(人力計算器)編撰。如果你想知道8675309的平方根,與其花一整天來手搖"步進計算器",你可以花一分鐘在表裡找答案。
在對計算這方面,軍隊始終是強需求。速度和準確性在戰場上尤為重要,步進計算器跟不上需求,就主要依賴計算表了。
19世紀,一個主要的難題,就是如何的精確瞄準炮彈。
在當時,這些炮彈的射程可以達到1公裡以上(比半英裡多一點)。再加上,風力、溫度、大氣壓力會不斷變化,想打中1公裡以外的船一樣大的物體就非常困難。
於是出現了射程表,炮手可以查環境條件和射擊距離。然後這張表會告訴他們,角度要設成多少。
08計算之父與史上第一位程式設計師
這些射程表很管用,二戰中被廣泛應用。但它們的問題是如果改了大炮或炮彈的設計,就要算一張新表 這樣很耗時而且會出錯。
查爾斯·巴貝奇(Charles Babbage)在1822年寫了一篇論文,向皇家天文學會指出了這個問題,標題叫:
> "Note on the application of machinery to the computation of astronomical and mathematical tables"——"機械在天文與計算表中的應用"
巴貝奇提出了一種新型機械裝置叫"差分機"(the Difference Engine),所謂「差分」的含義,是把函數表的複雜算式轉化為差分運算,用簡單的加法代替平方運算。那一年,剛滿20歲的巴貝奇從法國人傑卡德發明的提花編織機上獲得了靈感,差分機設計閃爍出了程序控制的靈光──它能夠按照設計者的旨意,自動處理不同函數的計算過程。
多項式描述了幾個變量之間的關係--比如射程和大氣壓力。多項式也可以用於計算對數和三角函數,這些函數在當時也是手算的,相當麻煩。
巴貝奇在1823年開始建造差分機。並在接下來二十年,試圖製造和組裝25,000 個零件,總重接近15噸
不幸的是,該項目最終放棄了。但在 1991 年,歷史學家根據巴貝奇的草稿做了一個差分機--而且它還管用!
但更重要的是,在差分機的建造期間巴貝奇構想了一個更複雜的機器 - 分析機(the Analytical Engine)
不像差分機、步進計算器,和更以前的其他計算設備,分析機是"通用計算機"
> 」a general purpose computer,one that could guide itself through a series of operations automatically,
> 「一臺可以自動完成一系列操作的計算機"
它可以做很多事情,不只是一種特定運算,甚至可以給它數據,然後按順序執行一系列操作,它有內存,甚至一個很原始的印表機。
你可以想像下,同時代的已存機器,都是只能加減乘除的一堆齒輪。巴貝奇說要造一個「通用計算機」!這臺機器太超前了,巴貝奇的這款分析機的命運,也跟差分機一樣,沒有建成。
然而,「計算機可以自動完成一系列操作",這種"自動計算機"的概念,是個跨時代的概念,預示著電腦程式的誕生。
可以說,分析機激勵了第一代計算機科學家。這些計算機科學家,把很多巴貝奇的點子融入到他們的機器。所以巴貝奇經常被認為是"計算之父"。
說到分析機,不得不說巴貝奇的另一個同事,也是一代傳奇人物了——阿達(Ada)
奧古斯塔·阿達·金(Augusta Ada King),英國數學家,19世紀詩人拜倫的女兒,洛甫雷斯伯爵夫人。
由於進度緩慢,到1842年的時候,政府宣布停止對巴貝奇的一切資助,連科學界的有人都用一種怪異的目光看他。
然而在這個時候,巴貝奇收到了一封信,寫信人不僅對他表示理解而且還希望與他共同工作。娟秀字體的籤名表明了她不凡的身份——伯爵夫人。
與巴貝奇交流後,阿達非常準確地評價道:「分析機'編織』的代數模式同傑卡德織布機編織的花葉完全一樣」。於是,為分析機編制一批函數計算程序的重擔,落她的肩頭。
阿達開天闢地第一回為計算機編出了程序(基於穿孔機),其中包括計算三角函數的程序、級數相乘程序、伯努利函數程序等等。阿達編制的這些程序,即使到了今天,電腦軟體界的後輩仍然不敢輕易改動一條指令。
阿達的工作證明了巴貝奇的分析器可以用於許多問題的求解。她甚至還建立了循環和子程序的概念,為計算程序擬定「算法」,寫作了第一份「程序設計流程圖」。
她曾說:
> "A new, a vast, and a powerful language is developed for the future use of analysis."
> "未來會誕生一門全新的,強大的,專為分析所用的語言"
由於她在程序設計上的開創性工作,Ada被稱為世界上第一位程式設計師。
09打孔卡片制表機
為了更合理地分配聯邦資金/國會代表等等,美國憲法要求10年進行一次人口普查。而在19世紀末,因為大量移民的到來,使得美國人口迅速增長。給普查統計工作帶來很大挑戰。
在1880年,美國舉行了一次全國性人口普查,為當時5000餘萬美國人登記造冊。
當時在人口調查局從事統計工作的德國僑民 赫爾曼·霍列瑞斯博士(Herman Hollerith)靜靜地坐在他的辦公室裡,望著那汗牛充棟的人口登記冊發愁。
人口普查需要做大量工作,如年齡、性別等用調查表做採集的項目,還要計算每個社區有多少老人、小孩,男人、女人等。據他的估算,分析這些千辛萬苦收集到的數據,人口調查局至少要花費7年時間。也就是說,美國政府和公民們,幾乎要到下一次人口普查時,才能得知這次普查的人口狀況。
並且更要命的是,通過手搖計算機計算,到1890年,美國人口還將增加1200萬,若按老辦法統計,即使再添加人手,沒有10年以上的功夫,是根本搞不出什麼結果的(可憲法規定才10年啊)
霍列瑞斯博士就想用一種機器,能自動統計這些數據,幫助完成繁重的統計制表任務。
於是,他發明了打孔卡片制表機。這個機器是"電動機械的"-機器用打孔卡記錄數據(一種紙卡,上面有網格);用打孔來表示數據;用傳統機械來計數,結構類似萊布尼茨的乘法器,但用電動結構連接其他組件。
舉個例子,有一連串孔代表婚姻狀況。如果你結婚了,就在"結婚"的位置打孔。這就完成了數據的記錄與表示。
當卡插入機器時,小金屬針會到卡片上,如果有個地方打孔了,針會穿過孔,泡入一小瓶汞,聯通電路,電路會驅動電機,然後給"已婚"的齒輪+1。這就實現了機器的自動數據處理。
霍列瑞斯的機器速度是手動的10倍左右,使人口普查在短短兩年半內完成,給人口普查辦公室省了上百萬美元。
自此以後,企業也開始意識到計算機的價值——它可以提升數據密集型任務的勞動力來提升利潤,比如會計,保險評估和庫存管理等行業。
為了滿足越來越多企業的需求,霍列瑞斯成立了"制表機器公司(The Tabulating Machine Company)",影響力甚至擴大到俄羅斯、加拿大和挪威等國。
然而,統計學家畢竟缺乏經商才幹,他的公司不久便因資金周轉不靈陷入窘境,只好任別人收購。經過幾次改組,這家公司後來在1924年與其它機械製造商合併,成為了"國際商業機器公司(The International Business Machines Corporation)",簡稱IBM-你可能聽過IBM
雖然霍列瑞斯的發明並不是通用計算機,除了能統計數據製造表格外,制表機幾乎沒有別的什麼用途,然而,制表機的穿孔卡第一次把數據轉變成二進位信息。
在早期計算機系統裡,這種用穿孔卡片輸入數據的方法,一直沿用到20世紀70年代,數據處理也發展成為電腦的主要功能之一。霍列瑞斯也被稱為數據處理之父。
傑卡德和霍列瑞斯,分別開創了程序設計和數據處理之先河。以歷史的目光審視他們的發明,正是這種程序設計和數據處理,構成了電腦「軟體」的雛形。
10寫在最後
本文中,我們前面提到的所有的計算機都是機械的。這些電子機械的"商業機器"取得了巨大成功,極大的改變了商業和政府。
但是,社會發展總是會給技術提出更高的要求。到了1900年代中葉,世界人口的爆炸和全球貿易的興起,要求更快,更靈活的工具來處理數據。
世界即將迎來電子計算機的時代。我們下節討論!
通過超智星球的同名域名。你可以找到我,我們一起學習。
參考文獻:
1. 楊露斯, 黎煉. 論計算機發展史及展望[J]. 信息與電腦(理論版), 2010(06):194.
2. N.A.阿波京. 計算機發展史[M]. 11.
3. 別拿曾經看以後.《計算機發展歷史》.新浪博客.2016
4. CrashCourse/CrashCourse字幕組.《計算機科學速成課》.youtube.2018
5. 諶謙. 難以忘卻的——計算機發展史[J]. 中國中醫藥現代遠程教育, 2004(07):48-49.