計算機發展簡史
現在我們所說的計算機,其全稱是通用電子數字計算機,“通用”是指計算機可服務於多種用途,“電子”是指計算機是一種電子設備,“數字”是指在計算機內部一切信息均用0和1的編碼來表示。計算機的出現是20世紀最卓越的成就之一,計算機的廣泛套用極大地促進了生產力的發展。
一、計算工具的發展簡史
自古以來,人類就在不斷地發明和改進計算工具,從古老的“結繩記事”,到算盤、計算尺、差分機,直到1946年第一台電子計算機誕生,計算工具經歷了從簡單到複雜、從低級到高級、從手動到自動的發展過程,而且還在不斷發展。回顧計算工具的發展歷史,從中可以得到許多有益的啟示。
1. 手動式計算工具
人類最初用手指進行計算。人有兩隻手,十個手指頭,所以,自然而然地習慣用手指記數並採用十進制記數法。用手指進行計算雖然很方便,但計算範圍有限,計算結果也無法存儲。於是人們用繩子、石子等作為工具來延長手指的計算能力,如中國古書中記載的“上古結繩而治”,拉丁文中“Calculus”的本意是用於計算的小石子。
最原始的人造計算工具是算籌,我國古代勞動人民最先創造和使用了這種簡單的計算工具。算籌最早出現在何時,現在已經無法考證,但在春秋戰國時期,算籌使用的已經非常普遍了。根據史書的記載,算籌是一根根同樣長短和粗細的小棍子,一般長為13~14cm,徑粗0.2~0.3cm,多用竹子製成,也有用木頭、獸骨、象牙、金屬等材料製成的,如圖1所示。算籌採用十進制記數法,有縱式和橫式兩種擺法,這兩種擺法都可以表示1、2、3、4、5、6、7、8、9九個數字,數字0用空位表示,如圖2所示。算籌的記數方法為:個位用縱式,十位用橫式,百位用縱式,千位用橫式,……,這樣從右到左,縱橫相間,就可以表示任意大的自然數了。
圖1 算籌 圖2 算籌的擺法
圖3 算盤 圖4 納皮爾算籌
計算工具發展史上的第一次重大改革是算盤,也是我國古代勞動人民首先創造和使用的。算盤由算籌演變而來,並且和算籌並存競爭了一個時期,終於在元代後期取代了算籌。算盤輕巧靈活、攜帶方便,套用極為廣泛,先後流傳到日本、朝鮮和東南亞等國家,後來又傳入西方。算盤採用十進制記數法並有一整套計算口訣,例如“三下五除二”、“七上八下”等,這是最早的體系化算法。算盤能夠進行基本的算術運算,是公認的最早使用的計算工具。
1617年,英國數學家約翰·納皮爾(John Napier)發明了Napier乘除器,也稱Napier算籌,如圖4所示。Napier算籌由十根長條狀的木棍組成,每根木棍的表面雕刻著一位數字的乘法表,右邊第一根木棍是固定的,其餘木棍可以根據計算的需要進行拼合和調換位置。Napier算籌可以用加法和一位數乘法代替多位數乘法,也可以用除數為一位數的除法和減法代替多位數除法,從而大大簡化了數值計算過程。
1621年,英國數學家威廉·奧特雷德(William Oughtred)根據對數原理髮明了圓形計算尺,也稱對數計算尺。對數計算尺在兩個圓盤的邊緣標註對數刻度,然後讓它們相對轉動,就可以基於對數原理用加減運算來實現乘除運算。17世紀中期,對數計算尺改進為尺座和在尺座內部移動的滑尺。18世紀末,發明蒸汽機的瓦特獨具匠心,在尺座上添置了一個滑標,用來存儲計算的中間結果。對數計算尺不僅能進行加、減、乘、除、乘方、開方運算,甚至可以計算三角函式、指數函式和對數函式,它一直使用到袖珍電子計算器面世。即使在20世紀60年代,對數計算尺仍然是理工科大學生必須掌握的基本功,是工程師身份的一種象徵。圖5所示是1968年由上海計算尺廠生產的對數計算尺。
圖5 對數計算尺
2. 機械式計算工具
17世紀,歐洲出現了利用齒輪技術的計算工具。1642年,法國數學家帕斯卡(Blaise Pascal)發明了帕斯卡加法器,這是人類歷史上第一台機械式計算工具,其原理對後來的計算工具產生了持久的影響。如圖6所示,帕斯卡加法器是由齒輪組成、以發條為動力、通過轉動齒輪來實現加減運算、用連桿實現進位的計算裝置。帕斯卡從加法器的成功中得出結論:人的某些思維過程與機械過程沒有差別,因此可以構想用機械來模擬人的思維活動。
德國數學家萊布尼茨(G .W .Leibnitz)發現了帕斯卡一篇關於“帕斯卡加法器”的論文,激發了他強烈的發明欲望,決心把這種機器的功能擴大為乘除運算。1673年,萊布尼茨研製了一台能進行四則運算的機械式計算器,稱為萊布尼茲四則運算器,如圖7所示。這台機器在進行乘法運算時採用進位-加(shift-add)的方法,後來演化為二進制,被現代計算機採用。
圖6 帕斯卡加法器 圖7 萊布尼茨四則運算器
萊布尼茨四則運算器在計算工具的發展史上是一個小高潮,此後的一百多年中,雖有不少類似的計算工具出現,但除了在靈活性上有所改進外,都沒有突破手動機械的框架,使用齒輪、連桿組裝起來的計算設備限制了它的功能、速度以及可靠性。
1804年,法國機械師約瑟夫·雅各(Joseph Jacquard)發明了可程式織布機,通過讀取穿孔卡片上的編碼信息來自動控制織布機的編織圖案,引起法國紡織工業革命。雅各織布機雖然不是計算工具,但是它第一次使用了穿孔卡片這種輸入方式。如果找不到輸入信息和控制操作的機械方法,那么真正意義上的機械式計算工具是不可能出現的。直到20世紀70年代,穿孔卡片這種輸入方式還在普遍使用。
19世紀初,英國數學家查爾斯·巴貝奇(Charles Babbage)取得了突破性進展。巴貝奇在劍橋大學求學期間,正是英國工業革命興起之時,為了解決航海、工業生產和科學研究中的複雜計算,許多數學表(如對數表、函式表)應運而生。這些數學表雖然帶來了一定的方便,但由於採用人工計算,其中的錯誤很多。巴貝奇決心研製新的計算工具,用機器取代人工來計算這些實用價值很高的數學表。
1822年,巴貝奇開始研製差分機,專門用於航海和天文計算,在英國政府的支持下,差分機歷時10年研製成功,這是最早採用暫存器來存儲數據的計算工具,體現了早期程式設計思想的萌芽,使計算工具從手動機械躍入自動機械的新時代。
1832年,巴貝奇開始進行分析機的研究。在分析機的設計中,巴貝奇採用了三個具有現代意義的裝置:
⑴ 存儲裝置:採用齒輪式裝置的暫存器保存數據,既能存儲運算數據,又能存儲運算結果;
⑵ 運算裝置:從暫存器取出數據進行加、減、乘、除運算,並且乘法是以累次加法來實現,還能根據運算結果的狀態改變計算的進程,用現代術語來說,就是條件轉移;
⑶ 控制裝置:使用指令自動控制操作順序、選擇所需處理的數據以及輸出結果。
巴貝奇的分析機是可程式計算機的設計藍圖,實際上,我們今天使用的每一台計算機都遵循著巴貝奇的基本設計方案。但是巴貝奇先進的設計思想超越了當時的客觀現實,由於當時的機械加工技術還達不到所要求的精度,使得這部以齒輪為元件、以蒸汽為動力的分析機一直到巴貝奇去世也沒有完成。
圖8 巴貝奇差分機
3. 機電式計算機
1886年,美國統計學家赫爾曼·霍勒瑞斯(Herman Hollerith)借鑑了雅各織布機的穿孔卡原理,用穿孔卡片存儲數據,採用機電技術取代了純機械裝置,製造了第一台可以自動進行加減四則運算、累計存檔、製作報表的制表機,這台制表機參與了美國1890年的人口普查工作,使預計10年的統計工作僅用1年零7個月就完成了,是人類歷史上第一次利用計算機進行大規模的數據處理。霍勒瑞斯於1896年創建了制表機公司TMC公司,1911年,TMC與另外兩家公司合併,成立了CTR公司。1924年,CTR公司改名為國際商業機器公司(International Business Machines Corporation),這就是赫赫有名的IBM公司。
1938年,德國工程師朱斯(K.Zuse)研製出Z-1計算機,這是第一台採用二進制的計算機。在接下來的四年中,朱斯先後研製出採用繼電器的計算機Z-2、Z-3、Z-4。Z-3是世界上第一台真正的通用程式控制計算機,不僅全部採用繼電器,同時採用了浮點記數法、二進制運算、帶存儲地址的指令形式等。這些設計思想雖然在朱斯之前已經提出過,但朱斯第一次將這些設計思想具體實現。在一次空襲中,朱斯的住宅和包括Z-3在內的計算機統統被炸毀。德國戰敗後,朱斯流亡到瑞士一個偏僻的鄉村,轉向計算機軟體理論的研究。
圖9 制表機用於美國人口普查 圖10 Z系列計算機
1936年,美國哈佛大學套用數學教授霍華德·艾肯(Howard AIKEN)在讀過巴貝奇和愛達的筆記後,發現了巴貝奇的設計,並被巴貝奇的遠見卓識所震驚。艾肯提出用機電的方法,而不是純機械的方法來實現巴貝奇的分析機。在IBM公司的資助下,1944年研製成功了機電式計算機Mark-I。Mark-I長15.5米,高2.4米,由75萬個零部件組成,使用了大量的繼電器作為開關元件,存儲容量為72個23位十進制數,採用了穿孔紙帶進行程式控制。它的計算速度很慢,執行一次加法操作需要0.3秒,並且噪聲很大。儘管它的可靠性不高,仍然在哈佛大學使用了15年。Mark-I只是部分使用了繼電器,1947年研製成功的計算機Mark-Ⅱ全部使用繼電器。
圖11 Mark-I
艾肯等人製造的機電式計算機,其典型部件是普通的繼電器,繼電器的開關速度是1/100秒,使得機電式計算機的運算速度受到限制。20世紀30年代已經具備了製造電子計算機的技術能力,機電式計算機從一開始就注定要很快被電子計算機替代。事實上,電子計算機和機電式計算機的研製幾乎是同時開始的。
4. 電子計算機
1939年,美國依阿華州大學數學物理學教授約翰·阿塔納索夫(John Atanasoff)和他的研究生貝利(Clifford Berry)一起研製了一台稱為ABC(Atanasoff Berry Computer)的電子計算機。由於經費的限制,他們只研製了一個能夠求解包含30個未知數的線性代數方程組的樣機。在阿塔納索夫的設計方案中,第一次提出採用電子技術來提高計算機的運算速度。
第二次世界大戰中,美國賓夕法尼亞大學物理學教授約翰"莫克利(John Mauchly)和他的研究生普雷斯帕"埃克特(Presper Eckert)受軍械部的委託,為計算彈道和射擊表啟動了研製ENIAC(Electronic Numerical Integrator and Computer)的計畫,1946年2月15日,這台標誌人類計算工具歷史性變革的巨型機器宣告竣工。ENIAC是一個龐然大物,共使用了18 000多個電子管、1 500多個繼電器、10 000多個電容和7 000多個電阻,占地167平方公尺,重達30噸。ENIAC的最大特點就是採用電子器件代替機械齒輪或電動機械來執行算術運算、邏輯運算和存儲信息,因此,同以往的計算機相比,ENIAC最突出的優點就是高速度。ENIAC每秒能完成5 000次加法,300多次乘法,比當時最快的計算工具快1 000多倍。ENIAC是世界上第一台能真正運轉的大型電子計算機,ENIAC的出現標誌著電子計算機(以下稱計算機)時代的到來。
雖然ENIAC顯示了電子元件在進行初等運算速度上的優越性,但沒有最大限度地實現電子技術所提供的巨大潛力。ENIAC的主要缺點是:第一,存儲容量小,至多存儲20個10位的十進制數;第二,程式是“外插型”的,為了進行幾分鐘的計算,接通各種開關和線路的準備工作就要用幾個小時。新生的電子計算機需要人們用千百年來製造計算工具的經驗和智慧賦予更合理的結構,從而獲得更強的生命力。
1945年6月,普林斯頓大學數學教授馮"諾依曼(Von Neumann)發表了EDVAC(Electronic Discrete Variable Computer,離散變數自動電子計算機)方案,確立了現代計算機的基本結構,提出計算機應具有五個基本組成成分:運算器、控制器、存儲器、輸入設備和輸出設備,描述了這五大部分的功能和相互關係,並提出“採用二進制”和“存儲程式”這兩個重要的基本思想。迄今為止,大部分計算機仍基本上遵循馮"諾依曼結構。
需要強調的是,EDVAC方案是集體智慧的結晶,馮"諾依曼的偉大功績在於他運用雄厚的數理知識和非凡的分析、綜合能力,在EDVAC的總體配置和邏輯設計中起到了關鍵的作用。可以說,現代計算機的發明決不是僅憑傑出科學家的個人努力就能完成的事業,研製電子計算機不僅需要巨大的資金,而且需要數學家、邏輯學家、電子工程師以及組織管理人員的密切合作,需要團隊的共同努力。
圖12 ENIAC計算機
二、計算機發展簡史
計算機系統由計算機硬體和計算機軟體構成,計算機硬體是指構成計算機系統的所有物理器件(積體電路、電路板以及其他磁性元件和電子元件等)、部件和設備(控制器、運算器、存儲器、輸入輸出設備等)的集合,計算機軟體是指用程式設計語言編寫的程式,以及運行程式所需的文檔、數據的集合。自計算機誕生之日起,人們探索的重點不僅在於建造運算速度更快、處理能力更強的計算機,而且在於開發能讓人們更有效地使用這種計算設備的各種軟體。
1. 計算機硬體的發展簡史
計算機硬體的發展以用於構建計算機硬體的元器件的發展為主要特徵,而元器件的發展與電子技術的發展緊密相關,每當電子技術有突破性的進展,就會導致計算機硬體的一次重大變革。因此,計算機硬體發展史中的“代”通常以其所使用的主要器件,即電子管、電晶體、積體電路、大規模積體電路和超大規模積體電路來劃分。
第一代計算機(1946-1958)
第一代計算機以1946年ENIAC的研製成功為標誌。這個時期的計算機都是建立在電子管基礎上,笨重而且產生很多熱量,容易損壞;存儲設備比較落後,最初使用延遲線和靜電存儲器,容量很小,後來採用磁鼓(磁鼓在讀/寫臂下鏇轉,當被訪問的存儲器單元鏇轉到讀/寫臂下時,數據被寫入這個單元或從這個單元中讀出),有了很大改進;輸入設備是讀卡機,可以讀取穿孔卡片上的孔,輸出設備是穿孔卡片機和行式印表機,速度很慢。在這個時代將要結束時,出現了磁帶驅動器(磁帶是順序存儲設備,也就是說,必須按線性順序訪問磁帶上的數據),它比讀卡機快得多。
1949年5月,英國劍橋大學莫里斯·威爾克斯(Maurice Wilkes)教授研製了世界上第一台存儲程式式計算機EDSAC(Electronic Delay Storage Automatic Computer),它使用機器語言編程,可以存儲程式和數據並自動處理數據,存儲和處理信息的方法開始發生革命性變化。1951年問世的UNIVAC因準確預測了1952年美國大選艾森豪的獲勝,得到社會各階層的認識和歡迎。1953年,IBM公司生產了第一台商業化的計算機IBM701,使計算機向商業化邁進。
這個時期的計算機非常昂貴,而且不易操作,只有一些大的機構,如政府和一些主要的銀行才買得起,這還不算容納這些計算機所需要的可控制溫度的機房和能夠進行計算機編程的技術人員。
第二代計算機(1959-1964)
第二代計算機以1959年美國菲爾克公司研製成功的第一台大型通用電晶體計算機為標誌。這個時期的計算機用電晶體取代了電子管,電晶體具有體積小、重量輕、發熱少、耗電省、速度快、價格低、壽命長等一系列優點,使計算機的結構與性能都發生了很大改變。
20世紀50年代末,記憶體儲器技術的重大革新是麻省理工學院研製的磁芯存儲器,這是一種微小的環形設備,每個磁芯可以存儲一位信息,若干個磁芯排成一列,構成存儲單元。磁芯存儲器穩定而且可靠,成為這個時期存儲器的工業標準。
這個時期的輔助存儲設備出現了磁碟,磁碟上的數據都有位置標識符——稱為地址,磁碟的讀/寫頭可以直接被送到磁碟上的特定位置,因而比磁帶的存取速度快得多。
20世紀60年代初,出現了通道和中斷裝置,解決了主機和外設並行工作的問題。通道和中斷的出現在硬體的發展史上是一個飛躍,使得處理器可以從繁忙的控制輸入/輸出的工作中解脫出來。
這個時期的計算機廣泛套用在科學研究、商業和工程套用等領域,典型的計算機有IBM公司生產的IBM7094和CDC(Control Data Corporation,控制數據公司)生產的CDC1640等。但是,第二代計算機的輸入輸出設備很慢,無法與主機的計算速度相匹配。這個問題在第三代計算機中得到了解決。
第三代計算機(1965-1970)
第三代計算機以IBM公司研製成功的360系列計算機為標誌。在第二代計算機中,電晶體和其他元件都是手工集成在印刷電路板上,第三代計算機的特徵是積體電路。所謂積體電路是將大量的電晶體和電子線路組合在一塊矽片上,故又稱其為晶片。製造晶片的原材料相當便宜,矽是地殼裡含量第二的常見元素,是海灘沙石的主要成分,因此採用矽材料的計算機晶片可以廉價地批量生產。
這個時期的記憶體儲器用半導體存儲器淘汰了磁芯存儲器,使存儲容量和存取速度有了大幅度的提高;輸入設備出現了鍵盤,使用戶可以直接訪問計算機;輸出設備出現了顯示器,可以向用戶提供立即回響。
為了滿足中小企業與政府機構日益增多的計算機套用,第三代計算機出現了小型計算機。1965年,DEC(Digital Equipment Corporation,數字設備公司)推出了第一台商業化的以積體電路為主要器件的小型計算機PDP-8。
第四代計算機(1971-至今)
第四代計算機以Intel公司研製的第一代微處理器Intel 4004為標誌,這個時期的計算機最為顯著的特徵是使用了大規模積體電路和超大規模積體電路。所謂微處理器是將CPU集成在一塊晶片上,微處理器的發明使計算機在外觀、處理能力、價格以及實用性等方面發生了深刻的變化。
第四代計算機要算微型計算機最為引人注目了,微型計算機的誕生是超大規模積體電路套用的直接結果。微型計算機的“微”主要體現在它的體積小、重量輕、功耗低、價格便宜。1977年蘋果計算機公司成立,先後成功開發了APPLE-I型和APPLE-II型微型計算機。1980年IBM公司與微軟公司合作,為微型計算機IBM PC配置了專門的作業系統。從1981年開始,IBM連續推出IBM PC、PC/XT、PC/AT等機型。時至今日,奔騰系列微處理器應運而生,使得現在的微型計算機體積越來越小、性能越來越強、可靠性越來越高、價格越來越低。
微處理器和微型計算機的出現不僅深刻地影響著計算機技術本身的發展,同時也使計算機技術滲透到了社會生活的各個方面,極大地推動了計算機的普及。儘管微型計算機對人類社會的影響深遠,但是微型計算機並沒有完全取代大型計算機,大型計算機也在發展。利用大規模積體電路製造出的多種邏輯晶片,組裝出大型計算機、巨型計算機,使運算速度更快、存儲容量更大、處理能力更強,這些企業級的計算機一般要放到可控制溫度的機房裡,因此很難被普通公眾看到。
20世紀80年代,多用戶大型機的概念被小型機器連線成的網路所代替,這些小型機器通過連網共享印表機、軟體和數據等資源。計算機網路技術使計算機套用從單機走向網路,並逐漸從獨立網路走向網際網路。
20世界80年代末,出現了新的計算機體系結構——並行體系結構,一種典型的並行結構是所有處理器共享同一個記憶體。雖然把多個處理器組織在一台計算機中存在巨大的潛能,但是為這種並行計算機進行程式設計的難度也相當高。
由於計算機仍然在使用電路板,仍然在使用微處理器,仍然沒有突破馮·諾伊曼體系結構,所以我們不能為這一代計算機劃上休止符。但是,生物計算機、量子計算機等新型計算機已經出現,我們拭目以待第五代計算機的到來。
2. 計算機軟體的發展簡史
計算機軟體技術發展很快。50年前,計算機只能被高素質的專家使用,今天,計算機的使用非常普遍,甚至沒有上學的小孩都可以靈活操作;40年前,檔案不能方便地在兩台計算機之間進行交換,甚至在同一台計算機的兩個不同的應用程式之間進行交換也很困難,今天,網路在兩個平台和應用程式之間提供了無損的檔案傳輸;30年前,多個應用程式不能方便地共享相同的數據,今天,資料庫技術使得多個用戶、多個應用程式可以互相覆蓋地共享數據。了解計算機軟體的進化過程,對理解計算機軟體在計算機系統中的作用至關重要。
第一代軟體(1946-1953)
第一代軟體是用機器語言編寫的,機器語言是內置在計算機電路中的指令,由0和1組成。例如計算2+6在某種計算機上的機器語言指令如下:
10110000 00000110
00000100 00000010
10100010 01010000
第一條指令表示將“6”送到暫存器AL中,第二條指令表示將“2”與暫存器AL中的內容相加,結果仍在暫存器AL中,第三條指令表示將AL中的內容送到地址為5的單元中。
不同的計算機使用不同的機器語言,程式設計師必須記住每條及其語言指令的二進制數字組合,因此,只有少數專業人員能夠為計算機編寫程式,這就大大限制了計算機的推廣和使用。用機器語言進行程式設計不僅枯燥費時,而且容易出錯。想一想如何在一頁全是0和1的紙上找一個打錯的字元!
在這個時代的末期出現了彙編語言,它使用助記符(一種輔助記憶方法,採用字母的縮寫來表示指令)表示每條機器語言指令,例如ADD表示加,SUB表示減,MOV表示移動數據。相對於機器語言,用彙編語言編寫程式就容易多了。例如計算2+6的彙編語言指令如下:
MOV AL,6
ADD AL,2
MOV #5,AL
由於程式最終在計算機上執行時採用的都是機器語言,所以需要用一種稱為彙編器的翻譯程式,把用彙編語言編寫的程式翻譯成機器代碼。編寫彙編器的程式設計師簡化了他人的程式設計,是最初的系統程式設計師。
第二代軟體(1954-1964)
當硬體變得更強大時,就需要更強大的軟體工具使計算機得到更有效地使用。彙編語言向正確的方向前進了一大步,但是程式設計師還是必須記住很多彙編指令。第二代軟體開始使用高級程式設計語言(簡稱高級語言,相應地,機器語言和彙編語言稱為低級語言)編寫,高級語言的指令形式類似於自然語言和數學語言(例如計算2+6的高級語言指令就是2+6),不僅容易學習,方便編程,也提高了程式的可讀性。
IBM公司從1954年開始研製高級語言,同年發明了第一個用於科學與工程計算的FORTRAN語言。1958年,麻省理工學院的麥卡錫(John Macarthy)發明了第一個用於人工智慧的LISP語言。1959年,賓州大學的霍普(Grace Hopper)發明了第一個用於商業應用程式設計的COBOL語言。1964年達特茅斯學院的凱梅尼(John Kemeny)和卡茨(Thomas Kurtz)發明了BASIC語言。
高級語言的出現產生了在多台計算機上運行同一個程式的模式,每種高級語言都有配套的翻譯程式(稱為編譯器),編譯器可以把高級語言編寫的語句翻譯成等價的機器指令。系統程式設計師的角色變得更加明顯,系統程式設計師編寫諸如編譯器這樣的輔助工具,使用這些工具編寫應用程式的人,稱為應用程式員。隨著包圍硬體的軟體變得越來越複雜,應用程式員離計算機硬體越來越遠了。那些僅僅使用高級語言編程的人不需要懂得機器語言和彙編語言,這就降低了對應用程式員在硬體及機器指令方面的要求。因此,這個時期有更多的計算機套用領域的人員參與程式設計。
由於高級語言程式需要轉換為機器語言程式來執行,因此,高級語言對軟硬體資源的消耗就更多,運行效率也較低。由於彙編語言和機器語言可以利用計算機的所有硬體特性並直接控制硬體,同時,彙編語言和機器語言的運行效率較高,因此,在實時控制、實時檢測等領域的許多應用程式仍然使用彙編語言和機器語言來編寫。
在第一代和第二代軟體時期,計算機軟體實際上就是規模較小的程式,程式的編寫者和使用者往往是同一個(或同一組)人。由於程式規模小,程式編寫起來比較容易,也沒有什麼系統化的方法,對軟體的開發過程更沒有進行任何管理。這種個體化的軟體開發環境使得軟體設計往往只是在人們頭腦中隱含進行的一個模糊過程,除了程式清單之外,沒有其他文檔資料。
第三代軟體(1965-1970)
在這個時期,由於用積體電路取代了電晶體,處理器的運算速度得到了大幅度的提高,處理器在等待運算器準備下一個作業時,無所事事。因此需要編寫一種程式,使所有計算機資源處於計算機的控制中,這種程式就是作業系統。
用作輸入/輸出設備的計算機終端的出現,使用戶能夠直接訪問計算機,而不斷發展的系統軟體則使計算機運轉得更快。但是,從鍵盤和螢幕輸入輸出數據是個很慢的過程,比在記憶體中執行指令慢得多,這就導致了如何利用機器越來越強大的能力和速度的問題。解決方法就是分時,即許多用戶用各自的終端同時與一台計算機進行通信。控制這一進程的是分時作業系統,它負責組織和安排各個作業。
1967年,塞繆爾(A.L.Samuel)發明了第一個下棋程式,開始了人工智慧的研究。1968年荷蘭計算機科學家狄傑斯特拉(Edsgar W.Dijkstra)發表了論文《GOTO語句的害處》,指出調試和修改程式的困難與程式中包含GOTO語句的數量成正比,從此,各種結構化程式設計理念逐漸確立起來。
20世紀60年代以來,計算機用於管理的數據規模更為龐大,套用越來越廣泛,同時,多種套用、多種語言互相覆蓋地共享數據集合的要求越來越強烈。為解決多用戶、多套用共享數據的需求,使數據為儘可能多的應用程式服務,出現了資料庫技術,以及統一管理數據的軟體系統——資料庫管理系統DBMS。
隨著計算機套用的日益普及,軟體數量急劇膨脹,在計算機軟體的開發和維護過程中出現了一系列嚴重問題,例如:在程式運行時發現的問題必須設法改正;用戶有了新的需求必須相應地修改程式;硬體或作業系統更新時,通常需要修改程式以適應新的環境。上述種種軟體維護工作,以令人吃驚的比例消耗資源,更嚴重的是,許多程式的個體化特性使得他們最終成為不可維護的,“軟體危機”就這樣開始出現了。1968年,北大西洋公約組織的計算機科學家在聯邦德國召開國際會議,討論軟體危機問題,在這次會議上正式提出並使用了“軟體工程”這個名詞。
第四代軟體(1971-1989)
20世紀70年代出現了結構化程式設計技術,Pascal語言和Modula-2語言都是採用結構化程式設計規則制定的,Basic這種為第三代計算機設計的語言也被升級為具有結構化的版本,此外,還出現了靈活且功能強大的C語言。
更好用、更強大的作業系統被開發了出來。為IBM PC開發的PC-DOS和為兼容機開發的MS-DOS都成了微型計算機的標準作業系統,Macintosh機的作業系統引入了滑鼠的概念和點擊式的圖形界面,徹底改變了人機互動的方式。
20世紀80年代,隨著微電子和數位化聲像技術的發展,在計算機應用程式中開始使用圖像、聲音等多媒體信息,出現了多媒體計算機。多媒體技術的發展使計算機的套用進入了一個新階段。
這個時期出現了多用途的應用程式,這些應用程式面向沒有任何計算機經驗的用戶。典型的應用程式是電子製表軟體、文字處理軟體和資料庫管理軟體。Lotus1-2-3是第一個商用電子製表軟體,WordPerfect是第一個商用文字處理軟體,dBase III是第一個實用的資料庫管理軟體。
第五代軟體(1990-)
第五代軟體中有三個著名事件:在計算機軟體業具有主導地位的Microsoft公司的崛起、面向對象的程式設計方法的出現以及全球資訊網(World Wide Web)的普及。
在這個時期,Microsoft公司的Windows作業系統在PC機市場占有顯著優勢,儘管WordPerfect仍在繼續改進,但Microsoft公司的Word成了最常用的文字處理軟體。20世紀90年代中期,Microsoft公司將文字處理軟體Word、電子製表軟體Excel、資料庫管理軟體Access和其他應用程式綁定在一個程式包中,稱為辦公自動化軟體。
面向對象的程式設計方法最早是在20世紀70年代開始使用的,當時主要是用在Smalltalk語言中。20世紀90年代,面向對象的程式設計逐步代替了結構化程式設計,成為目前最流行的程式設計技術。面向對象程式設計尤其適用於規模較大、具有高度互動性、反映現實世界中動態內容的應用程式。Java、C++、C#等都是面向對象程式設計語言。
1990年,英國研究員提姆·柏納李(Tim Berners-Lee)創建了一個全球Internet文檔中心,並創建了一套技術規則和創建格式化文檔的HTML語言,以及能讓用戶訪問全世界站點上信息的瀏覽器,此時的瀏覽器還很不成熟,只能顯示文本。
軟體體系結構從集中式的主機模式轉變為分散式的客戶機/伺服器模式(C/S)或瀏覽器/伺服器模式(B/S),專家系統和人工智慧軟體從實驗室走出來進入了實際套用,完善的系統軟體、豐富的系統開發工具和商品化的應用程式的大量出現,以及通信技術和計算機網路的飛速發展,使得計算機進入了一個大發展的階段。
在計算機軟體的發展史上,需要注意“計算機用戶”這個概念的變化。起初,計算機用戶和程式設計師是一體的,程式設計師編寫程式來解決自己或他人的問題,程式的編寫者和使用者是同一個(或同一組)人;在第一代軟體末期,編寫彙編器等輔助工具的程式設計師的出現帶來了系統程式設計師和應用程式員的區分,但是,計算機用戶仍然是程式設計師;20世紀70年代早期,應用程式員使用複雜的軟體開發工具編寫應用程式,這些應用程式由沒有計算機背景的從業人員使用,計算機用戶不僅是程式設計師,還包括使用這些套用軟體的非專業人員;隨著微型計算機、計算機遊戲、教育軟體以及各種界面友好的軟體包的出現,許多人成為計算機用戶;全球資訊網的出現,使網上衝浪成為一種娛樂方式,更多的人成為計算機的用戶。今天,計算機用戶可以是在學習閱讀的學齡前兒童,可以是在下載音樂的青少年,可以是在準備畢業論文的大學生,可以是在制定預算的家庭主婦,可以是在安度晚年的退休人員,……,所有使用計算機的人都是計算機用戶。
3. 計算機的發展趨勢
在短短的60年裡,計算機從像ENIAC這樣笨重、昂貴、容易出錯、僅用於科學計算的機器,發展到今天可信賴的、通用的、遍布現代社會的每一個角落,發明第一台計算機的人並沒有預測到計算機技術會如此快速地發展。然而,計算機技術在過去60年裡的發展與未來60年的變化相比將會相形見絀,將來我們會覺得今天最好的計算機很原始,就像我們今天看60年前的ENIAC一樣。計算機的產生是人類追求智慧的心血和結晶,計算機的發展也必將隨著人類對智慧的不懈追求而不斷發展。
計算機的發展趨勢可歸結在如下幾個方面:
⑴ 超級計算機。發展高速度、大容量、功能強大的超級計算機,用於處理龐大而複雜的問題,例如航天工程、石油勘探、人類遺傳基因等現代科學技術和國防尖端技術都需要具有最高速度和最大容量的超級計算機。研製超級計算機的技術水平體現了一個國家的綜合國力,因此,超級計算機的研製是各國在高技術領域競爭的熱點。
⑵ 微型計算機。微型化是大規模積體電路出現後發展最迅速的技術之一,計算機的微型化能更好地促進計算機的廣泛套用,因此,發展體積小、功能強、價格低、可靠性高、適用範圍廣的微型計算機是計算機發展的一項重要內容。
⑶ 智慧型計算機。到目前為止,計算機在處理過程化的計算工作方面已達到相當高的水平,是人力所不能及的,但在智慧型性工作方面,計算機還遠遠不如人腦。如何讓計算機具有人腦的智慧型,模擬人的推理、聯想、思維等功能,甚至研製出具有某些情感和智力的計算機,是計算機技術的一個重要的發展方向。
⑷ 普適計算機。20世紀70年代末,辭彙表中出現了個人計算機,人類開始進入“個人計算機時代”。許多研究人員認為,我們已經進入了“後個人計算機時代”,計算機技術將融入到各種工具中並完成其功能。當計算機在人類的日常生活中無處不在時,我們就進入了“普適計算機時代”,普適計算機將提供前所未有的便利和效率。
⑸ 網路與格線。由於網際網路和全球資訊網在世界各國已經不同程度地普及和接近成熟,人們關心網際網路和全球資訊網之後是什麼?是格線。有關專家作了初步論證:網際網路實現了計算機硬體的連通,全球資訊網實現了網頁的連通,而格線試圖實現網際網路上所有資源(包括計算資源、軟體資源、信息資源、知識資源等)的連通。施樂PARC未來研究機構的負責人保羅·薩福預測了下一代網路:今天的網路是工程師做的,2050年的網路是生長出來的。
⑹ 新型計算機。CPU和大規模積體電路的發展正在接近理論極限,人們正在努力研究超越物理極限的新方法,新型計算機可能會打破計算機現有的體系結構。目前正在研製的新型計算機有:生物計算機——運用生物工程技術,用蛋白分子做晶片;光計算機——用光做為信息載體,通過對光的處理來完成對信息的處理;量子計算機——將計算機科學和物理科學聯繫到一起,採用量子特性使用一個兩能級的量子體系來表示一位;等等。
美國《時代》雜誌總結了在過去60年裡人們認識和使用計算機的變化,如表1所示。需要強調的是,一個新的計算機時代的開始並不意味著舊的計算機時代的終結。現在,我們生活在一個研究型計算機、個人計算機和網路計算機時代,並即將進入一個計算機無處不在的普適計算機時代。
表1 計算機時代的劃分
技術很難預測,技術帶給社會的影響更難預測,誰能在20世紀40年代預測計算機技術會給我們現在的生活帶來如此深遠的影響。預測未來10~20年的計算機技術發展情況最好的辦法就是觀察目前實驗室里的研究成果,雖然我們無法知道實驗室里的哪些研究成果最終可以獲得成功,也無法知道預測未來的結果是否正確,但是有一點是確定的,那就是創造未來完全靠我們自己。