- 大學計算機基礎(第三版)
- 萬珊珊 呂橙
- 3202字
- 2019-10-12 16:03:56
1.1.1 計算機的產生
人類為了滿足社會生產發展的需要,在不同的時期發明了各種計算工具。
在原始社會,人們曾使用樹枝、石塊等物品作為計數和計算的工具。至遲在商代時,中國已采用十進制計數方法,對世界科學和文化的發展起著不可估量的作用。我國在春秋戰國時期有了算籌法的記載,算籌被普遍認為是人類最早的手動計算工具。中國南北朝時期的數學家祖沖之就是用算籌計算出圓周率在3.1415926和3.1415927之間,這一結果比西方早1100多年。在長期使用算籌的基礎上,東漢時期,中國人又發明了算盤。由于算盤制作簡單,價格便宜,珠算口訣便于記憶,運算又簡便,所以在中國被普遍使用,并且陸續流傳到了日本、朝鮮、美國和東南亞等國家和地區。
隨著經濟、貿易事業的發展,以及金融業和航運業的日漸繁榮,需要大量復雜、繁重的計算,而且計算問題多與天文、航海有關,這就促使了計算工具的改革。1621年,英國數學界埃德蒙·岡特(Edmund Gunter)制造出第一把對數計算尺,給數的乘除計算帶來了方便。同年,英國數學家奧特瑞德(William Oughtred)在岡特計算尺的基礎上發明了直尺計算尺,如圖1-1所示。1622年,奧特瑞德還設計了圓形計算尺。奧特瑞德對數計算尺不僅可以進行加、減、乘、除、乘方和開方運算,還能計算三角函數、指數函數和對數函數。為了使這種工具更加便捷和實用,人們嘗試了多種改進計算尺的辦法,它的使用一直持續到20世紀70年代袖珍電子計算器的出現。

圖1-1 奧特瑞德與直尺計算尺
生產的發展和科技的進步,繼續推動著計算工具的發展。特別是齒輪傳動裝置技術的發展,為機械計算機的產生提供了必要的技術支持。1642年,法國數學家、物理學家布萊斯·帕斯卡(Blaise Pascal)研制出了世界上第一臺機械式齒輪加法器,這是人類歷史上第一臺機械式計算工具,其原理對后來的計算工具產生了持久的影響。帕斯卡加法器是由齒輪組成,以發條為動力,通過轉動齒輪來實現加減運算,用連桿實現進位的計算工具。1673年,德國數學家萊布尼茲(Gottfriend Leibniz)在帕斯卡研究的基礎上增加了乘除法器,制成可以進行四則運算的機械式計算器,并可以實現重復做加減運算,它的實現思想也是現代計算機做乘除運算所采用的辦法。但是,以上這些計算器都不具備自動進行計算的功能。
受法國工程師雅克特(Joseph Marie Jacquard)發明的自動提花織布機的啟發,英國數學家查爾斯·巴貝奇(Charles Babbage)提出了帶有程序控制的通用數字計算機的基本設計思想,并于1822年設計了第一臺差分機。巴貝奇差分機使用十進制系統,采用齒輪結構,能夠預先安排完成一系列算術運算。1834年,巴貝奇設計了分析機,它具有輸入、處理、存儲、輸出及控制5個基本裝置,設想采用穿孔卡片來存儲指令,并根據這些孔的特點來決定執行什么指令,進行自動運算,如圖1-2所示。巴貝奇提出了幾乎是完整的現代電子計算機的設計方案,但是因受當時技術和資金的限制而失敗。隨著19世紀中期精密機械制造技術和工藝水平的提高,電磁學等學科也得到飛速發展,美國人霍華德·艾肯(Howard Aiken)采用機電方法來實現巴貝奇分析機的想法,并在1944年成功制造了自動數字計算機MarkⅠ,使巴貝奇的夢想變成現實。MarkⅠ作為世界上最早的通用型自動程序控制計算機之一,是計算機技術歷史上的一個重大突破,如圖1-3所示。

圖1-2 巴貝奇和他的發明

圖1-3 艾肯和Mark I
20世紀20年代以后,電子科學技術和電子工業迅速發展(如電子管、晶體管和集成電路相繼誕生),為現代電子計算機的產生提供了物質基礎和技術條件。
美國愛荷華州立大學的約翰·文森特·阿塔納索夫(John Vincent Atanasoff)教授和他的研究生克里福特·貝瑞(Clifford Berry),于1942年10月研制成第一臺完全采用真空管作為存儲與運算器件的計算機“阿塔納索夫-貝瑞計算機”(Atanasoff-Berry Computer),簡稱ABC,如圖1-4所示。ABC計算機被認為是最早的電子管計算機。阿塔納索夫在研制ABC計算機的過程中提出計算機設計的三條原則:使用二進制來實現數字運算,以保證精度;利用電子元件和技術實現控制、邏輯運算和算術運算,以保證計算速度;采用計算功能和存儲功能相分離的結構。這三條原則對后來計算機的體系結構及邏輯設計帶來深遠的影響。

圖1-4 ABC計算機和它的發明者
任何事物的產生都是有起因的。同以往的許多重大發明一樣,現代電子計算機的誕生是同軍事上的迫切需要緊密相連的。戰爭的需要像一雙強有力的巨手,給電子計算機的誕生鋪平了道路。第二次世界大戰期間,美國陸軍軍械部在馬里蘭州的阿伯丁設立了“彈道研究實驗室”,該實驗室每天要為陸軍提供6張火力表,每張表要計算幾百條彈道軌跡。而當時一個熟練的計算人員用臺式計算器計算一條60s的彈道就需要20多個小時,還常常出現計算錯誤。更為關鍵的是,由于美軍進入非洲作戰,土質帶來的差別導致炮彈根本打不中目標,所以軍方領導人命令彈道實驗室重新編制射擊表。時任彈道實驗室的領導人赫爾曼·戈德斯坦(Herman H.Goldstine)估算出,為某一型號、某一口徑的火炮重新編制射擊表,需要一個人用臺式計算器不吃不喝4~5年才能完成。計算需求和計算能力之間的矛盾日益突出,作為數學家的戈德斯坦意識到研制一種高速新型計算機的迫切性。于是,在戈德斯坦的推動和組織下,陸軍軍械部著手與賓夕法尼亞大學莫爾電氣工程學院聯合開發電子計算機。1942年,莫爾學院的兩位青年學者——36歲的副教授約翰·莫克利(John Mauchly)和24歲的工程師約翰·普雷斯伯·埃克特(John Presper Eckert)(見圖1-5)提交了一份研制電子計算機的設計方案——高速電子管計算裝置的使用。他們建議用電子管作為主要元件,制造一臺前所未有的計算機,把彈道計算的效率提高成百上千倍。同年4月9日,陸軍軍械部通過這份報告。1943年7月,項目開始正式實施。莫爾學院組50名技術人員投入該項研究,莫克利作為顧問負責總體設計,埃克特擔任總工程師。軍方與莫爾學院簽訂的協議是提供14萬美元的研制經費,但后來合同被修改了12次,經費一直追加到約48.68萬美元,相當于現在的1000多萬美元。

圖1-5 埃克特(左)和莫克利
然而,為支援戰爭而趕制的機器沒能在戰爭期間完成,直到1946年2月14日,這臺標志著人類計算工具的歷史性變革的電子計算機才研制成功,這臺機器的名字叫ENIAC(Electronic Numerical Integrator And Calculator,電子數字積分計算機),如圖1-6所示。ENIAC占地170m2,重30t,有18000個電子管,功率為150kW,運算速度為加法5000次/s或乘法400次/s。這比當時最快的繼電器計算機的運算速度要快1000多倍。過去需要100多名工程師花費1年才能解決的計算問題,它只需要2個小時就能給出答案。

圖1-6 世界上第一臺電子計算機ENIAC
盡管ENIAC有許多不足之處,如使用十進制、不能存儲程序、體積龐大、耗電量大、電子元件壽命短、故障率高、操作困難等,但它畢竟是世界上第一臺真正意義上的數字電子計算機。ENIAC的問世具有劃時代的意義,它揭開了現代計算機時代的序幕,標志著人類計算工具的歷史性變革,為提高計算速度開辟了極為廣闊的前景,也標志著人類文明的一個新起點。ENIAC的產生歷程也充分表明,一項重大發明只有為社會發展所迫切需要,才能脫穎而出。反之,如果社會沒有這方面的需求,多么美妙的設想也逃脫不掉被歷史所淘汰的命運。電子計算機制造技術在20世紀30年代已經成熟,而在20世紀40年代才真正制造出來,也正是這個原因。

圖1-7 約翰·馮·諾依曼
1944年,美籍匈牙利數學家約翰·馮·諾依曼(John von Neumann)(見圖1-7)參加的原子彈研制項目受阻,原因同樣是遇到了極為困難的計算問題。馮·諾依曼在一次偶然的機會中得知ENIAC的研制計劃,便投身到這一宏偉的事業中。馮·諾依曼與埃克特、莫克利等人討論ENIAC的不足,于1945年6月擬定了存儲程序式電子計算機方案EDVAC(Electronic Discrete Variable Automatic Computer,離散變量自動電子計算機)。該方案指出了計算機應由五部分構成,提出了程序存儲的思想,成為電子計算機設計的基本原則。根據這些原理制造的計算機稱為馮·諾依曼結構計算機。由于諾依曼的突出貢獻,他被西方人稱為計算機之父。馮·諾依曼等人于1952年研制成功EDVAC。EDVAC采用二進制,使用了3600個電子管,占地面積不足ENIAC的1/3。而世界上首臺“存儲程序式”電子計算機EDSAC(Electronic Delay Storage Automatic Calculator,電子延遲存儲自動計算機)是由劍橋大學的莫里斯·威爾克斯(Maurice V.Wilkes)教授在諾依曼EDVAC草案的啟發下,于1949年5月研制成功。
- 演進式架構(原書第2版)
- 大學計算機基礎(第二版)
- Learning Chef
- Python網絡爬蟲從入門到實踐(第2版)
- 數據結構與算法JavaScript描述
- AngularJS深度剖析與最佳實踐
- Mastering AndEngine Game Development
- HDInsight Essentials(Second Edition)
- 微服務從小白到專家:Spring Cloud和Kubernetes實戰
- Solr Cookbook(Third Edition)
- Android開發三劍客:UML、模式與測試
- Zabbix Performance Tuning
- 自學Python:編程基礎、科學計算及數據分析(第2版)
- 平面設計經典案例教程:CorelDRAW X6
- 分布式數據庫原理、架構與實踐