稍晚些時候,踏足機電計算領域的還有哈佛大學。當時,一名在校的物理學博士生——霍華德·艾肯(Howard Hathaway Aiken),和當年的祖思一樣,被手頭繁復的計算困擾著,一心想建臺計算機,于是從1937年開始,抱著方案四處尋找愿意合作的公司,最終是IBM伸出了橄欖枝。
彼時的IBM,已是單元記錄市場的巨頭企業(yè),擁有豐富的計算設備建造經(jīng)驗。而除了其主營的制表機型,當時的總裁托馬斯·沃森(Thomas John Watson)對嘗試通用計算機也頗有興趣。
艾肯想實現(xiàn)自己的理想,沃森想進一步提高公司的聲譽,兩人一拍即合。1939年3月31日,哈佛和IBM簽訂協(xié)議,哈佛方面由艾肯主導設計,IBM方面則派出頂尖的工程師團隊負責實現(xiàn),最終成果歸哈佛所有。
IBM斥資40~50萬美元,卻甘愿把成果拱手相讓,正是因為沃森不在乎錢也不準備打造產(chǎn)品,而純粹是為了彰顯公司的實力。照理說,哈佛和IBM的貢獻是對等的。不料,在機器建好之后的慶典上,哈佛新聞辦公室與艾肯私自準備的新聞稿中,嚴重偏袒了己方的功績,對IBM的功勞沒有給予足夠的認可,把沃森氣得與艾肯老死不相往來。
這臺強強聯(lián)合、于1944年完成的計算機名叫Harvard Mark I,在“娘家”IBM被稱為IBM自動順序控制計算機(IBM Automatic Sequence Controlled Calculator),ASCC。
Harvard Mark I
Mark I是當年的大型計算機,它由約765000個機電元件組成,內(nèi)部電線總長達800公里。機器長約15.5米,高約2.4米,重達5噸,撐滿了整個機房的墻面。機器左側的玻璃柜中,是2個30行24列的置數(shù)旋鈕陣列(圖中只出鏡了一半),可輸入60個23位十進制數(shù)(留出1位表示正負,0表示正、9表示負);中間部分是更為壯觀的計算陣列,由72個計數(shù)器組成,每個計數(shù)器包括24個機電計數(shù)輪,共可存放72個23位十進制數(shù);機器的右側部分是若干臺穿孔式輸入輸出裝置,包括2臺讀卡器(用于輸入相對固定的經(jīng)驗常數(shù))、3臺穿孔帶讀取器(分別讀取存有常數(shù)表、插值系數(shù)和控制指令的3種穿孔帶)、1臺穿孔機和2臺自動打字機。
從數(shù)據(jù)輸入,到數(shù)據(jù)處理,再到輸出,Mark I自始至終在與十進制打交道,即便它使用了繼電器和穿孔技術。不論是置數(shù)旋鈕,還是計數(shù)器,其背后都是10齒的金屬輪。對于每個金屬輪,都有一個電刷與它的某個齒接觸,接通表示相應數(shù)值的電路。這個電路進而可以引起某個磁性爪抓住另一個金屬輪的軸,并帶動它旋轉相應的角度——如此,一個輪的數(shù)值便作用到了另一個輪身上。
為了編程,艾肯給72個計數(shù)器和60組置數(shù)旋鈕進行了統(tǒng)一編號:
乍看之下,編號的規(guī)律讓人摸不著頭腦。其實,這和穿孔帶有關。
控制機器運行的穿孔帶上每一行有24個孔位,使用時分成3組,每組8位,用于表示數(shù)據(jù)地址或操作指令。艾肯將一組的8個孔位從右至左標為1~8,因此以上2表中的編號總是由數(shù)字1~7組成。
當我們進一步將這些編號轉換為穿孔帶上的孔洞時,不難發(fā)現(xiàn)它們本質上就是順序增長的8位二進制編碼:
與其說艾肯用十進制為數(shù)據(jù)地址編號,不如說他想出了一種二進制碼的十進制表示,讓使用者更容易閱讀、熟記和交流。
操作指令也有類似的編號,比如加法指令是7,清空指令也是7,打印指令是7432和74321(對應2臺打字機),乘法指令是761,正弦指令是7631。這些指令往往包含數(shù)字7,因為機器只有在遇到含7的指令時才會繼續(xù)往下執(zhí)行,后者會暫停。不同指令在24個孔位中的位置也有所不同,對于不涉及數(shù)據(jù)的操作,指令可以占據(jù)前8位;對于涉及數(shù)據(jù)的操作,前8位乃至前16位就需要讓給數(shù)據(jù)地址,指令只能退居末8位了。以下為幾條具有代表性的代碼示例。
怎么樣?是不是挺容易呢?將這些由數(shù)字構成的簡單語句按照一定順序排列,用穿孔機在紙帶上打出相應的孔洞,就形成了Mark I可以識別的程序,足以解決各種復雜的數(shù)學問題。在Mark I上運行的第一批程序,就包括了馮·諾依曼為曼哈頓計劃所編寫的原子彈內(nèi)爆模擬程序。
在計算速度上,Mark I的表現(xiàn)并不出眾,一次加減運算需要3秒,乘法6秒,除法15.6秒,正弦和乘方往往超過1分鐘,對數(shù)運算更是高達89.4秒。但它仍是當時一臺十分成功的通用計算機,從1944年5月開始在美國海軍服役了14年之久。
1959年,龐大的Mark I被拆解,部件分布于哈佛大學、IBM和史密森學會。
后話
和祖思一樣,艾肯的方案并不局限于某種材料,他更關注計算機的整體架構。在IBM之前,他曾找到生產(chǎn)銷輪計算器的門羅公司,如果協(xié)議達成,那么Mark I就會是純機械的。
和IBM鬧僵之后,艾肯繼續(xù)在哈佛大學研制了Mark II~Mark IV,它們延續(xù)了Mark I的架構,在材料上進行了升級。1947年的Mark II是全繼電器的,并使用了BCD編碼;1949年的Mark III用5000個真空管和1500個晶體二極管取代了部分繼電器,并引入了磁鼓、磁帶等存儲介質;1952年的Mark IV則已是純電子計算機,并用性能更好的磁芯存儲器替代了磁鼓。
與同時期其他“重復制造輪子”的先驅不同,艾肯“站在了巨人的肩膀上”,他深入研究了帕斯卡、萊布尼茨、巴貝奇、霍爾瑞斯等前人的工作,并對他們寄予了極高的評價。他充分參考了他們的成果,也將他們的失策引以為戒——正是有了巴貝奇的前車之鑒,艾肯選擇直接利用IBM現(xiàn)成的制表機零件,而沒有走自己生產(chǎn)元件的彎路。
也正得益于這份扎實的調研基礎,艾肯對計算機科學有著更系統(tǒng)、更深刻的理解。1947年,他在哈佛大學開設了計算機專業(yè)的碩士學位,成為世界上第一位計算機科學教授,培養(yǎng)出一眾出色的計算機學家。而幾近10年之后,其他大學才陸續(xù)開設這一專業(yè),并模仿著艾肯的教學體系。
參考文獻
- Wikipedia. Howard H. Aiken[EB/OL].
- Wikipedia. Harvard Mark I[EB/OL].
- The Stuff of the Computation Laboratory. A Manual of Operation for the Automatic Sequence Controlled Calculator[M]. Cambridge: Harvard University Press, 1946.
- 胡守仁. 計算機技術發(fā)展史(一)[M]. 長沙: 國防科技大學出版社, 2004.