怎麼造電腦?(2/2)

怎麼造電腦?(2/2)

Print Friendly

怎麼造電腦?(2/2)
撰文/Giles Sparrow|譯者/易思婷
轉載自《BBC知識》2014年6月第34期

今日我們把電腦視為理所當然,但當初數學家和工程師們可是經歷數個世紀的努力,才終於造出在第二次世界大戰擊潰德國,進而發展出現代電腦的先驅機器。

(續前文)

二元時代

1854年英國數學家George Boole建議使用「布林運算」這種邏輯系統,其中,邏輯運算的輸入值和結果有兩種可能:「真」和「偽」。但一直到美國數學家和工程師Claude Shannon在1937年對這主題發表對後世影響深遠的大師級論文後,才真正使用二元繼電器電路(使用電流控制的簡單開關),實做「邏輯閘門」來處理布林運算。

當然,現在看起來二元的好處再明顯也不過了。實做上,正確地用繼電器組合起來邏輯閘門,可以由兩個輸入值來決定一個輸出值(比如說,AND閘門只在兩個輸入值都為一的時候會產生訊號,OR閘門只需要在一個輸入值為一時就會產生訊號)。集合眾多邏輯電閘建構出來的網路,就可以在二元資料上以高速度處理更複雜的邏輯運算。

不過,其他人在同時也想出使用繼電器來建造電腦的主意。同樣是1937年,任職新澤西州貝爾電話實驗室(Bell Telephone Laboratories)的研究員George Stibitz,在他的餐桌上用電燈泡和繼電器做出一個簡單的邏輯網路。隔年,他的頂頭上司要求他根據該概念,架構一個成熟的電子機械計算機器,1940年一月Stibitz完成他的「複數電腦」(Complex Number Computer),只不過這台機器不能執行程式,所以算不上是真正的電腦。

在此同時,大西洋彼岸一位熱愛計算的工程師Konrad Zuse,也投入很大的心力研究這個主題。1938年之前,他利用少得可憐的預算,在父母親的客廳裡發展出一台命名為Z1的機器,這台機器雖是純粹的機械裝置,卻的確可以執行簡單的程式。接下來的數年,他得到德國軍方的贊助,陸續發展出Z2以及1941年的Z3。Z3使用電子機械繼電器,而不僅只使用機械開關,因此比之前的機器來得更為可靠。但隨著第二次世界大戰白熱化,德軍認為還有其他更要緊的事,於是拒絕Stibitz打算將所有繼電器全面換成電子閥門的要求。

英方的努力

然而在英國,一些有識人士卻預期計算能力將是戰事決勝的關鍵。1939年大戰正式展開之前,英國和波蘭的專家就開始努力破解、德國那方像惡魔般難以解析的恩尼格瑪(Enigma)密碼機器。波蘭失守後,集中在赫特福德郡(Hertfordshire)的布萊切利園(Bletchley Park)的英方更是宵旰努力。英方募集了國內眾多優秀的學者和工程師投入這個計畫,其中包括劍橋的數學家圖靈,1936年圖靈曾經發表一篇影響深遠的論文,即在討論「計算機器」的應用潛力。

布萊切利園團隊用盡各種方式破解德國的密碼, 從運用邏輯、直覺猜測、到剛起步的計算能力。理論上當時的恩尼格瑪和德國的其他密碼機是無法破解的,但是使用那些密碼機的人也許會不小心犯錯,那麼排列組合的可能總數當會縮小到可以處理的大小。圖靈在布萊切利早期的計畫,發展出來的密碼破譯機器「炸彈」(Bombe),即為可以高速過濾可能的密碼解答的電子機械計算裝置。

儘管炸彈密碼破譯機可以破解一般的恩尼格瑪信號,但是德國高層顯然使用更複雜的洛倫茨(Lorenz)密碼機來傳遞最敏感的指示。英方無法等待數週來破解那些訊息,必須要發展更好的裝置。

這促使他們發展出「巨像電腦」(Colossus)。巨像電腦分析用打孔卡輸入的密碼化訊息,然後與一台內建的電子模擬密碼機比對不同解答的機率。數學家Max Newman是該機器基本運算原則的發展者,電信工程師Tommy Flowers則根據設計建造該機器(參見下方〈關鍵發現〉一欄)。

美國在1943年製作出重達30公噸的ENIAC,它每秒可以從事5,000次運算,速度比之前的電腦快上數千倍。(圖片來源:Corbis)

在此同時,美國也有數個團隊在發展電腦,而當美國最後也進入戰場時,發展的速度更加提高。後來美國發展出了「電子數值積分計算器」(Electronic Numerical Integrator and Calculator,簡稱ENIAC)。ENIAC是John Mauchly和John Presper Eckert從1943年開始在賓州大學建造的,重達三十公噸,是個徹頭徹尾的電子裝置,內有一萬八千個電子開關,每秒可以執行五千次運算,比之前的電腦快上數千倍。

更驚人的是,ENIAC是個一般用途的電腦,可以重新程式化,以執行層面廣闊的不同任務。起初「重新程式化」的過程牽涉到實際改變連接元件的線路,但是在採用美籍匈牙利科學家John von Neumann的建議後,ENIAC的設計者很快地實做出可使用「儲存程式」(stored programs)的改良方案,使用者可以在「功能表格」(Function Table)中儲存改變電腦任務的模組化指令。1948年9月ENIAC完成改良,加入這個革新概念、新一代的ENIAC,比它的下一代EDVAC早了將近一年投入運作(而EDVAC的設計藍圖就已經納入「儲存程式」的概念)。

電腦科學家Grace Hopper使用打孔機將問題傳化成程式碼,輸入給計算機。美國在1944年大戰期間使用這台計算機。(圖片來源:Corbis)

「儲存程式」在電腦發展上是個大躍進,1952年程式設計師Grace Hopper做出第一個編譯器(compiler),編譯器這個程式可以將使用程式語言寫成的命令,翻譯成電腦可以了解的二元信號。這不但降低了寫程式的難度,也讓大家看到「在不同設計的機器上跑相同程式」的希望。

1950年代,電腦開始走出實驗室成為商業產品。電晶體取代體積龐大、高熱、且不可靠的電子閥門。1953年開始,第一台以電晶體架構的電腦原型開始在英國曼徹斯特大學運作。當然,從那個時代到現在的智慧手機和平板電腦,還有好長一段路要走,不過這一路上最近、最大的突破大概是1950年代晚期,由德州儀器(Texas Instruments)電子公司的Jack Kilby造出的首台使用積體電路的電腦。從此計算領域上持續發展出更小、更強大的機器。(完)

(圖片來源:Science and Society)

(本文由教育部補助「AI報報─AI科普推廣計畫」取得網路轉載授權)

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *


8 − 6 =