讀古今文學網 > 創新者:一群技術狂人和鬼才程序員如何改變世界 > ENIAC >

ENIAC

戰爭會促進科學的發展。縱觀歷史,無論是古希臘建造的投石車,還是列奧納多·達·芬奇成為切薩雷·波吉亞(Cesare Borgia)麾下的軍事工程師,我們都能從中看出軍事需求一直都在推動技術的進步,這點在20世紀中葉體現得尤為明顯。這個時代最為頂尖的技術成就(計算機、原子能、雷達和互聯網)都是戰爭催生的產物。

美國在1941年12月正式加入「二戰」,戰爭的需要使得美國有充足的動力為莫奇利和埃克特正在研發的機器提供資助。賓夕法尼亞大學和位於阿伯丁試驗場的陸軍軍械部當時得到了一項軍方指派的任務——為美國輸送到歐洲的火炮武器製作記錄發射角設置的說明書。為了實現精確的瞄準,這些火炮的彈道表需要考慮數百項發射條件,包括溫度、濕度、風速、高度和火藥的種類等。

僅僅針對一種火炮發射的一種炮彈,它的彈道表製作就需要通過微分方程組計算三千條彈道。這項工作通常會使用萬尼瓦爾·布什在麻省理工學院發明的微分分析機來完成。這台機器的計算工作需要超過170個人的協助,這些被稱為「計算員」(computer)的工作人員大多數都是女性。為了求解這些方程,他們需要在桌面加法機上進行繁複的操作。這項工作召集了全國各地的女性數學專業學生來完成。儘管如此,僅僅為了計算一個彈道表就要花費超過一個月的時間。到了1942年夏天,這樣的計算進度顯然已經越來越跟不上戰事的需求,導致美軍的部分火炮出現了無法使用的情況。

莫奇利在當年8月寫了一份備忘錄,他在其中提出了一個可以幫助軍方解決這個難題的方法。這份將會改變計算機發展歷史的備忘錄的題目是「高速真空管設備的計算應用」。莫奇利在備忘錄中為他和埃克特希望建造的機器請求資助:這是一台使用真空管電路的數字電子計算機,它可以求解微分方程和進行其他的數學計算。他表示,「如果這種機器能夠採用電子元件,它們的計算速度將會得到大幅提升。」他預計一個彈道可以在「100秒」之內計算完成。66

雖然賓夕法尼亞大學的院長們沒有被莫奇利的備忘錄打動,但它確實吸引了這所大學的駐派陸軍軍官的注意力。時年29歲的赫爾曼·戈德斯坦中尉(Herman Goldstine,不久後被提升為上尉)曾經擔任密歇根大學的數學教授。他當時的任務是提升彈道表的製作速度,他已經為此派遣了同為數學家的妻子阿黛爾到全美各地招攬人才,動員更多的女性加入賓夕法尼亞大學的計算員隊伍當中。在看到了莫奇利的備忘錄之後,他相信這項任務可以有更好的完成方式。

美國陸軍部在1943年4月9日正式決定資助建造這台電子計算機。在這個決定達成的前一天晚上,莫奇利和埃克特還在通宵達旦地趕製他們的計劃書。雖然這份計劃書在第二天早上仍然沒有完成,但他們還是坐上了戈德斯坦中尉駕駛的汽車,從賓夕法尼亞大學出發前往位於馬里蘭州的阿伯丁試驗場,那裡已經聚集了一批來自陸軍軍械部的軍官。在這段兩個小時的車程當中,莫奇利和埃克特坐在後座繼續完成計劃書剩下的部分。在到達阿伯丁之後,戈德斯坦前往參加評審會議,他們則留在一個小房間裡繼續工作。這場會議的主持人是普林斯頓大學高等研究院的院長奧斯瓦爾德·維布倫(Oswald Veblen),他當時的職責是為軍方的數學項目提供指導。陸軍彈道研究實驗室的主管萊斯利·西蒙(Leslie Simon)上校也參加了這次會議。戈德斯坦對當時會議情況的回憶是:「在會議上,維布倫用椅子的後腳做支撐不斷地前後搖晃。他在聽到我的一小段報告之後突然從椅子上摔了下來。他馬上站起來喊道:『西蒙,把錢給戈德斯坦。』他在說完這些之後就走出了會議室,隨後整場會議在愉快的氣氛下結束了。」67

莫奇利和埃克特將他們之前的備忘錄整理成一篇題為《關於電子微分分析機的報告》(Report on an Electronic Diff. Analyzer )的文章。使用縮寫「diff.」是一個取巧的做法,因為它既可以表示「不同」(differences),這點反映了這台待建的機器具有數字化的特點;還可以表示「微分」(differential),這點描述的是它可以求解的方程類型。這台機器在不久後就被賦予了一個更容易被記住的名字:ENIAC,即電子數字積分計算機(Electronic Numerical Integrator and Computer)。儘管ENIAC的主要設計用途是求解微分方程,這是計算火炮彈道的關鍵所在,但是莫奇利在報告中表示它可以配有一個「編程設備」,這樣它就可以用於完成其他的任務,成為一台更為通用的計算機。68

ENIAC在1943年6月開始投入建造。莫奇利在維持教職的同時負責這個項目的顧問和設計工作。作為軍方代表的戈德斯坦負責監督工程的進度和預算。對細節和完美有強烈追求的埃克特則成了項目的首席工程師。埃克特非常專注地投入到了這個項目當中,以至於有時會直接睡在機器的旁邊。有一次他還被另外兩位工程師作弄了一把,他們趁他睡著的時候,小心翼翼地把他的帆布床搬到了樓上的一個完全一樣的房間。埃克特在醒來之後大吃一驚,以為自己的機器被人偷走了。69

埃克特深知如果沒有精確的執行,再偉大的概念也發揮不出應有的價值(這是阿塔納索夫學習到的教訓),因此他會放下身段對項目進行事無鉅細的管理。他會在其他工程師之間來回巡察,告訴他們應該在哪個位置進行焊接或者擰緊電線。「我會查看每位工程師的工作,還會仔細檢查機器中每個電阻的每項計算,確保所有工作都能準確完成。」他堅定地說道。他對所有不在乎細節的人都沒有好感。「人生正是由各種各樣的小事組成的,」他曾經說過,「當然計算機也只是一個由細節堆砌而成的龐大整體。」70

埃克特和莫奇利兩人之間可以起到互補的作用,這點讓他們成為數字時代眾多雙人領導組合當中的典範。埃克特會以精益求精的要求來鞭策其他人;莫奇利則更擅長於安撫人心,並讓他們感受到關愛。「他總是在跟別人開玩笑,」埃克特回憶道,「他是一個很有人緣的人。」專業技術過硬的埃克特有時也會出現精神緊張和注意力不集中的問題,因此他非常需要一個可以跟他交流想法的人,這是莫奇利非常樂意擔當的角色。雖然莫奇利不是一個工程師,但他確實有能力以一種啟發靈感的方式將科學理論和工程實踐聯繫起來。「這個項目是我們合作完成的,我認為僅憑我們之間的任何一個人都是不可能做到的。」埃克特後來承認道。71

雖然ENIAC是一台數字化的計算機,但它沒有採用二進制系統(只使用0和1兩個數字),而是選擇了十進制系統,它採用的計數器是帶有十個數字的。從這點來看,ENIAC還不算是一台現代的計算機。除此之外,它比阿塔納索夫、楚澤、艾肯和斯蒂比茲製作的機器都要先進。在使用了一項叫作「條件分支」(埃達·洛夫萊斯曾在一個世紀之前描述過的概念)的功能之後,它可以根據臨時的計算結果在程序當中進行跳轉。它還可以重複執行用於完成常見任務的代碼塊,這項功能被稱為「子程序」。「我們可以使用子程序,以及子程序的子程序。」埃克特解釋道。當莫奇利提出這項功能的時候,「我立刻意識到這個想法將會是整台機器的關鍵」,埃克特回憶道。72

經過了一年的建造工作之後,莫奇利和埃克特在1944年6月的諾曼底登陸日前後開始對ENIAC的前兩個組件進行測試,這個部分相當於計劃建成機器的六分之一。他們先從一個簡單的乘法問題開始測試,在看到它生成了正確的答案之後,他們同時發出了一聲歡呼。不過這個建造項目又持續了一年多的時間,ENIAC在1945年11月開始全面投入運作。它當時可以在一秒鐘之內進行5 000次加減法運算,這個運算速度要比之前發明的計算機快100倍。它的長度為100英尺,高為8英尺,佔地面積相當於一間普通的三居室公寓。它的重量接近30噸,機器內部含有17 468個真空管。相比之下,阿塔納索夫和貝瑞的計算機當時仍在艾奧瓦州的一個地下室中苟延殘喘,它的大小相當於一張書桌,它內含的真空管數量僅為300個,而且每秒只能進行30次加減法運算。