當貝爾實驗室的史提畢茲已經在打造複數計算機,比他更早提案開發數位計算機的艾肯還在苦等。好不容易 IBM 願意開發,美國又捲入二次大戰戰局,究竟艾肯能否如願完成夢想……?
本文為系列文章,上一篇請見:終端機雛形、遠端操控、數據傳輸的首創者——史提畢茲│《電腦簡史》數位時代(七)
艾肯鍥而不捨,IBM 終於同意開發第一部通用型計算機
1937 年 11 月,還是博士生的艾肯帶著企劃案到 IBM 簡報,希望能說服他們也為科學家開發計算機。是的,很多科學家與艾肯一樣深受計算之苦,IBM 聽完之後深表同意。不過他們希望艾肯先去哥倫比亞大學看看,也許他會在那裡發現他想要的東西。
原來早在 1933 年,IBM 就曾接受天文學教授艾可特 (Wallace Eckert) 的提案,為他改造 IBM 601 商用計算機,用來計算天文物理的方程式。艾可特隨後還自己設計一套控制系統,將改造的 IBM 601、印表機,與打孔機連接起來,成為近乎全自動的機器。如果艾肯可以接受這套系統,IBM 就不用另外開發設計了。
艾肯拜訪之後,發現這套系統運作過程還是需要人工介入,不是全自動化。而且這台改造的 IBM 601 主要在於求取內插值,與他設想的通用型計算機相去甚遠,因此仍堅持得重新開發設計。
IBM 要求他與工程師先擬出詳細規格與研發成本,才能評估是否要投入開發。好不容易報告完成,IBM 高層又爭辯許久,無法取得共識。在此同時,哈佛大學自己內部也有不少的反對聲浪,質疑購置新型計算機的必要性。
直到 1939 年 2 月,IBM 董事長華森 (Thomas Watson) 才終於親自拍板定案,承諾無償為哈佛大學開發艾肯所規劃的「自動循序控制計算機」(Automatic Sequence Controlled Calculator,簡稱 ASCC )。恰好此時艾肯也已拿到博士學位,並在哈佛大學取得教職,便順理成章代表哈佛,繼續與 IBM 的團隊合作,自五月開始展開研發工作。
哈佛架構 vs. 馮紐曼架構
ASCC 沿用 IBM 原有的打孔卡片機制來輸入程式,但因為它是通用型計算機,所要執行的程式可能會很長,因此將打孔卡片改為打孔紙帶。打孔紙帶上的程式並不會先載入記憶單元,而是一次讀入一個指令,控制單元馬上根據指令動作。這麼做的好處是不佔用記憶單元,可以節省成本。但缺點是運算速度受限於讀取打孔紙帶的機械動作,結果 ASCC 做一次乘法要費時 6 秒,比楚澤 1941 年就造好的 Z3 還慢。
現代電腦採用的是「馮紐曼架構」,程式與數據都先全部載入記憶單元,然後再開始運作。像 ASCC 這樣,程式與數據分開,不共用記憶單元的架構,後來就稱為「哈佛架構」。
ASCC 的運算方式仍是十進位制,因此對 IBM 的工程師而言,只要稍加修改原有運算單元就可以處理加減法。困難點在於 ASCC 要涵蓋三角函數、微分方程、遞迴函數、……等所有數學運算,但這些工程師對高深數學並不在行,無從想像如何設計。艾肯因此扮演關鍵的角色,必須一一拆解運算的步驟,講述給他們了解。
問題是,艾肯給予的只是描述性的說明,而不是數位邏輯,工程師還是得自己想出對應的邏輯電路。沒想到這竟為日後 IBM 與哈佛的決裂埋下了禍因。
艾肯入伍服役,三年後代表海軍徵用 ASCC
1939、1940 這兩年暑期,艾肯全程都待在 IBM 提供諮詢。但到了 1941 年,他被徵召到海軍服役,無法繼續參與研發,只能委託物理系一位研究生接手他的工作。在此同時,IBM 的工程師也改以國防任務為先,無法全心投入 ASCC 的開發,結果原本預計兩年的工程拖到 1943 年底才完成。
1944 年初,ASCC 在哈佛大學的物理研究室完成安裝,長達十五公尺,高兩米四,有 4.3 噸重,零件多達 765,000 個,是當時最大的計算機,直到一年半後才被貝爾實驗室的 Model V 超越。
安裝好才兩個月,艾肯便在當年四月重返哈佛,不過這次他是以海軍少校的身分回來接管 ASCC。戰爭時期國事為先,海軍決定徵用 ASCC,交由最熟悉的艾肯全權負責,帶領隨行人員計算雷達、磁場等軍艦遭遇的問題。
事實上,在海軍徵用前一個月,ASCC 就曾經為國效力。馮紐曼帶著兩位數學家前來,用 ASCC 計算原子彈的內爆模型,只是當時曼哈頓計畫仍屬絕對機密,哈佛與 IBM 的人員都不知道與原子彈有關。
艾肯獨攬發明之功,IBM 憤而與哈佛決裂
儘管 ASCC 已被海軍徵用,但這畢竟是 IBM 投入大量金錢與人力為哈佛開發的,預訂的捐贈典禮還是要照常舉辦,而艾肯自然是負責籌辦的最佳人選。捐贈典禮於 1944 年8 月舉行,不料艾肯準備的新聞稿中,竟然只將自己一人列為 ASCC 的發明者,完全沒有提及與他一起研究的那幾位 IBM 工程師。
IBM 董事長華森勃然大怒,刪除原本要給哈佛大學日後維持機器運作的經費,雙方的合作就此畫上句點,哈佛大學也乾脆將 ASCC 重新命名為「哈佛馬克一號」(Harvard Mark I)。
二次大戰結束後,艾肯退役回歸教職。即使沒有 IBM,他仍分別於 1947 年與 1949 年,為海軍開發出功能更強的哈佛馬克二號與馬克三號。
第一宗有蟲的真實案例,程式 debug 的由來
值得一提的是,1947 年 9 月 9 日這一天,海軍的程式設計師發現馬克二號總是出錯,他們檢查了半天,最後發現原來是一隻蛾在繼電器上造成短路。他們把這隻蛾取下,用膠帶貼在工作日誌上,除了註明是在 F 板塊的第 70 號繼電器發現,還戲謔地寫上「發現第一宗蟲的真實案例」(“First actual case of bug being found”)。
原來打從 1870 年代開始,蟲 (bug) 這個字就用來形容機器中的瑕疵。如今竟然是一隻真正的昆蟲造成程式執行發生錯誤,而將牠移除後就恢復正常,從此電腦程式的偵錯工作就叫 ”debug” 了。
艾肯心血雖成昨日黃花,百年樹人影響更久遠
其實艾肯代表海軍徵用哈佛馬克一號時,美國陸軍委託另一批人馬打造的計算機已在祕密進行中,所用的真空管開關速度遠勝繼電器,艾肯這些機電式計算機很快就要被電子計算機淘汰。儘管如此,哈佛馬克一號仍是電腦史上一個重要的里程碑。它是第一部真正全自動化的計算機,只要用打孔紙帶輸入程式與數據,就能自動完成計算,並將計算結果印製成表格,過程中完全不需人力介入。
對艾肯而言,他也成功擔起傳承的使命,實現百年之前巴貝奇未竟的分析機夢想。
其實艾肯更大的貢獻在於作育英才。除了直接教導出霍普 (Grace Hopper) 、王安、……等舉足輕重的人物(霍普當年是海軍少尉,跟著艾肯去接管哈佛馬克一號,她後來寫出第一個編譯器,還領頭開發出第一個高階商用電腦語言「COBOL」;王安則是創辦「王安電腦」,首創電腦文書處理。),艾肯還首開先例,在哈佛大學開設可攻取碩士與博士學位的計算機學程,引領美國大學設立電腦科系的風潮。
這些艾肯直接與間接培育出來的電腦人才,比起他開發設計的計算機,對於電腦發展產生更久遠的影響。