機電時期(19世紀末~20世紀40年代)
我們難以理解計算機,也許主要并不由于它復雜的機理,而是根本想不明白,為什么一通上電,這坨鐵疙瘩就突然能飛速運轉,它安安靜靜地到底在干些啥。
經過前幾篇的探索,我們已經了解機械計算機(準確地說,我們把它們稱為機械式桌面計算器)的工作方式,本質上是通過旋鈕或把手帶動齒輪旋轉,這一過程全靠手動,肉眼就能看得一清二楚,甚至用現在的樂高積木都能實現。麻煩就麻煩在電的引入,電這樣看不見摸不著的神物(當然你可以摸摸試試),正是讓計算機從笨重走向傳奇、從簡單明了走向令人費解的關鍵。
技術準備
19世紀,電在計算機中的應用主要有兩大方面:一是提供動力,靠電動機(俗稱馬達)代替人工驅動機器運行;二是提供控制,靠一些電動器件實現計算邏輯。
我們把這樣的計算機稱為機電計算機。
電動機
1820年4月,奧斯特在實驗中發現通電導線會造成附近磁針的偏轉,證明了電流的磁效應。第二年,法拉第想到,既然通電導線能帶動磁針,反過來,如果固定磁鐵,旋轉的將是導線,于是解放人力的偉大發明——電動機便誕生了。
電動機其實是件很不稀奇、很笨的發明,它只會一個勁不停地轉圈,而機械式桌面計數器的運轉本質上就是齒輪的轉圈,兩者簡直是天造地設的一雙。有了電動機,計算員不再需要吭哧吭哧地手搖,做數學也終于少了點體力勞動的模樣。
電磁繼電器
電磁學的價值在于摸清了電能和動能之間的轉換,而從靜到動的能量轉換,正是讓機器自動運行的關鍵。而19世紀30年代由亨利和戴維所分別發明的繼電器,就是電磁學的重要應用之一,分別在電報和電話領域發揮了重要作用。
其結構和原理十分簡單:當線圈通電,產生磁場,鐵質的電樞就被吸引,與下側觸片接觸;當線圈斷電,電樞就在彈簧的作用下上揚,與上側觸片接觸。
在機電設備中,繼電器主要發揮兩方面的作用:一是通過弱電控制強電,使得控制電路可以控制工作電路的通斷,這一點放張原理圖就能一目了然;二是將電能轉換為動能,利用電樞在磁場和彈簧作用下的往返運動,驅動特定的純機械結構以完成計算任務。
制表機(tabulator/tabulating machine/unit record equipment/electric accounting machine)
從1790年開始,美國的人口普查基本每十年進行一次,隨著人口繁衍和移民的增多,人口數量那是一個爆炸。
不像現在這個的互聯網時代,人一出生,各種信息就已經電子化、登記好了,甚至還能數據挖掘,你無法想象,在那個計算設備簡陋得基本只能靠手搖進行四則運算的19世紀,千萬級的人口統計就已經是當時美國政府所不能承受之重。1880年開始的第十次人口普查,歷時8年才最終完成,也就是說,他們休息上兩年之后就要開始第十一次普查了,而這一次普查,需要的時間恐怕要超過10年。本來就是十年統計一次,如果每次耗時都在10年以上,還統計個鬼啊!
當時的人口調查辦公室(1903年才正式成立美國人口調查局)方了,趕緊征集能減輕手工勞動的發明,就此,霍爾瑞斯帶著他的制表機完虐競爭對手,在方案招標中脫穎而出。
霍爾瑞斯的制表機首次將穿孔技術應用到了數據存儲上,一張卡片記錄一個居民的各項信息,就像身份證一樣一一對應。聰明如你一定能聯想到,通過在卡片對應位置打洞(或不打洞)記錄信息的方式,與現代計算機中用0和1表示數據的做法簡直一毛一樣。確實這可以看作是將二進制應用到計算機中的思想萌芽,但那時的設計還不夠成熟,并未能如今這般巧妙而充分地利用寶貴的存儲空間。舉個例子,我們現在一般用一位數據就可以表示性別,比如1表示男性,0表示女性,而霍爾瑞斯在卡片上用了兩個位置,表示男性就在標M的地方打孔,女性就在標F的地方打孔。其實性別還湊合,表示日期時浪費得就多了,12個月需要12個孔位,而真正的二進制編碼只需要4位。當然,這樣的局限與制表機中簡單的電路實現有關。
有沒有一點熟悉的趕腳?
這的確是當時的人體工程學設計,目的是讓打孔員每天能多打點卡片,為了節省時間他們也是蠻拼的……
在制表機前,穿孔卡片/紙帶在各類機器上的作用主要是存儲指令,比較有代表性的,一是賈卡的提花機,用穿孔卡片控制經線提沉(詳見《現代計算機真正的鼻祖》),二是自動鋼琴(player piano/pianola),用穿孔紙帶控制琴鍵壓放。
打好了孔,下一步就是將卡片上的信息統計起來。
制表機通過電路通斷識別卡上信息。讀卡裝置底座中內嵌著與卡片孔位一一對應的管狀容器,容器里盛有水銀,水銀與導線相連。底座上方的壓板中嵌著同樣與孔位一一對應的金屬針,針抵著彈簧,可以伸縮,壓板的上下面由導電材料制成。這樣,當把卡片放在底座上,按下壓板時,卡片有孔的地方,針可以通過,與水銀接觸,電路接通,沒孔的地方,針就被擋住。
如何將電路通斷對應到所需要的統計信息?霍爾瑞斯在專利中給出了一個簡單的例子。
圖中有7根金屬針,從左至右標的分別是:G(類似于總開關)、Female(女)、Male(男)、Foreign(外國籍)、Native(本國籍)、Colored(有色人種)、White(白種人)。好了,你終于能看懂霍爾瑞斯龍飛鳳舞的字跡了。
這個電路用于統計以下6項組合信息(分別與圖中標M的6組電磁鐵對應):
① native white males(本國的白種男)
② native white females(本國的白種女)
③ foreign white males(外國的白種男)
④ foreign white females(外國的白種女)
⑤ colored males(非白種男)
⑥ colored females(非白種女)
以第一項為例,如果表示「Native」、「White」和「Male」的針同時與水銀接觸,接通的控制電路如下:
這一示例首先展示了針G的作用,它把控著所有控制電路的通斷,目的有二:
1、在卡片上留出一個專供G通過的孔,以防止卡片沒有放正(照樣可以有部分針穿過錯誤的孔)而統計到錯誤的信息。
2、令G比其他針短,或者G下的水銀比其他容器里少,從而確保其他針都已經接觸到水銀之后,G才最終將整個電路接通。我們知道,電路通斷的瞬間容易產生火花,這樣的設計可以將此類元器件的損耗集中在G身上,便于后期維護。
不得不感慨,這些發明家做設計真的特別實用、細致。
上圖中,橘黃色箭頭標識出3個相應的繼電器將閉合,閉合之后接通的工作電路如下:
通電的M將產生磁場, 牽引特定的杠桿,撥動齒輪完成計數。霍爾瑞斯的專利中沒有給出這一計數裝置的具體結構,可以想象,從十七世紀開始,機械計算機中的齒輪傳動技術已經發展到很成熟的水平,霍爾瑞斯無需重新設計,完全可以使用現成的裝置——用他在專利中的話說:「any suitable mechanical counter」(任何合適的機械計數器都OK)。
M不單控制著計數裝置,還控制著分類箱蓋子的開合。
將分類箱上的電磁鐵接入工作電路,每次完成計數的同時,對應格子的蓋子會在電磁鐵的作用下自動打開,統計員瞟都不用瞟一眼,就可以左手右手一個快動作將卡片投到正確的格子里。由此完成卡片的快速分類,以便后續進行其他方面的統計。
1896年,霍爾瑞斯創立了制表機公司(The Tabulating Machine Company),1911年與另外三家公司合并成立Computing-Tabulating-Recording Company(CTR),1924年更名為International Business Machines Corporation(國際商業機器公司),就是現在大名鼎鼎的IBM。IBM也因此在上個世紀風風火火地做著它拿手的制表機和計算機產品,成為一代霸主。
制表機在當時成為與機械計算機并存的兩大主流計算設備,但前者通常專用于大型統計工作,后者則往往只能做四則運算,無一具有通用計算的能力,更大的變革將在二十世紀三四十年代掀起。
祖思機
有些天才注定成為大師,祖思便是其一。讀大學時,他就不安分,專業換來換去都覺得無聊,工作之后,在亨舍爾公司參與研究風對機翼的影響,對繁復的計算更是忍無可忍。
祖思一面抓狂,一面相信還有好多人跟他一樣抓狂,他看到了商機,覺得這個世界迫切需要一種可以自動計算的機器。于是一不做二不休,在亨舍爾才呆了幾個月就瀟灑辭職,搬到父母家里啃老,一門心思搞起了發明。他對巴貝奇一無所知,憑一己之力做出了世界上第一臺可編程計算機——Z1。
Z1
祖思從1934年開始了Z1的設計與實驗,于1938年完成建造,在1943年的一場空襲中炸毀——Z1享年5歲。
從照片上可以發現,Z1是一坨龐大的機械,除了靠電動馬達驅動,沒有任何與電相關的部件。別看它原始,里頭可有好幾項甚至沿用至今的開創性理念:
■ 將機器嚴格劃分為處理器和內存兩大部分,這正是如今馮·諾依曼體系結構的做法。
■ 不再同前人一樣用齒輪計數,而是采用二進制,用穿過鋼板的釘子/小桿的來回移動表示0和1。
■ 引入浮點數,相比之下,后文將提到的一些同時期的計算機所用都是定點數。祖思還發明了浮點數的二進制規格化表示,優雅至極,后來被納入IEEE標準。
■ 靠機械零件實現與、或、非等基礎的邏輯門,靠巧妙的數學方法用這些門搭建出加減乘除的功能,最出彩的要數加法中的并行進位——一步完成所有位上的進位。
與制表機一樣,Z1也用到了穿孔技術,不過不是穿孔卡,而是穿孔帶,用廢棄的35毫米電影膠卷制成。和巴貝奇所見略同,祖思也在穿孔帶上存儲指令,有輸入輸出、數據存取、四則運算共8種。
每讀一條指令,Z1內部都會牽動一大串部件完成一系列復雜的機械運動。具體如何運動,祖思沒有留下完整的描述。有幸的是,一位德國的計算機專家——Raul Rojas對有關Z1的圖紙和手稿進行了大量的研究和分析,給出了較為完善的闡述,主要見其論文《The Z1: Architecture and Algorithms of Konrad Zuse’s First Computer》,而我一時抽風把它翻譯了一遍——《Z1:第一臺祖思機的架構與算法》。如果你讀過幾篇Rojas教授的論文就會發現,他的研究工作可謂壯觀,當之無愧是世界上最了解祖思機的人。他成立了一個網站——Konrad Zuse Internet Archive,專門搜集整理祖思機的資料。他帶的某個學生還編寫了Z1加法器的仿真軟件,讓我們來直觀感受一下Z1的精巧設計:
幸運的是,退休之后,祖思在1984~1989年間憑著自己的記憶重繪Z1的設計圖紙,并完成了Z1復制品的建造,現藏于德國技術博物館。盡管它跟原本的Z1并不完全一樣——多少會與事實存在出入的記憶、后續設計經驗可能帶來的思維進步、半個世紀之后材料的發展,都是影響因素——但其大框架基本與原Z1一致,是后人研究Z1的寶貴財富,也讓吃瓜的游客們得以一睹純機械計算機的風采。
當然,這臺復制品和原Z1一樣不靠譜,做不到長時間無人值守的自動運行,甚至在揭幕儀式上就掛了,祖思花了幾個月才修好。1995年祖思去世后,它就沒再運行,成了一具鋼鐵尸體。
Z1的不可靠,很大程度上歸咎于機械材料的局限性。用現今的眼光看,計算機內部是無比復雜的,簡單的機械運動一方面速度不快,另一方面無法靈活、可靠地傳動。祖思早有采用電磁繼電器的想法,無奈那時的繼電器不但價格不低,體積還大。到了Z2,祖思靈機一動,最占零件的不過是機器的存儲部分,何不繼續使用機械式內存,而改用繼電器來實現處理器呢?
Z2是緊跟著Z1的第二年誕生的,其設計資料一樣難逃被炸毀的命運(不由感慨那個動亂的年代啊)。Z2的資料不多,大體可以認為是Z1到Z3的過渡品,它的一大價值是驗證了繼電器和機械件在實現處理器方面的等效性,也相當于驗證了Z3的可行性,二大價值是為祖思贏得了建造Z3的一些贊助。
Z3
Z3的壽命比Z1還短,從1941年建造完成,到1943年被炸毀(是的,又被炸毀了),就活了兩年。好在戰后到了60年代,祖思的公司做出了完美的復制品,比Z1的復制品靠譜得多,藏于德意志博物館,至今還能運行。
由于祖思一脈相承的設計,Z3和Z1有著一毛一樣的體系結構,只不過它改用了電磁繼電器,內部邏輯不再需要靠復雜的機械運動來實現,只要接接電線就可以了。我搜了一大圈,沒有找到Z3的電路設計資料——因著祖思是德國人,研究祖思的Rojas教授也是德國人,更多詳盡的資料均為德文,語言不通成了我們接觸知識的壁壘——就讓我們簡單點,用一個YouTube上的演示視頻一睹Z3芳容。
以12+17=19這一算式為例,用二進制表示即:1100+10001=11101。
當然這只是機器內部的表示,如果要用戶在繼電器上查看結果,分分鐘都成老花眼。
除了四則運算,Z3比Z1還新增了開平方的功能,操作起來都相當方便,除了速度稍微慢點,完全頂得上現在最簡單的那種電子計算器。
值得一提的是,繼電器的觸點在開閉的瞬間容易引起火花(這跟我們現在插插頭時會出現火花一樣),頻繁通斷將嚴重縮短使用壽命,這也是繼電器失效的主要原因。祖思統一將所有線路接到一個旋轉鼓,鼓表面交替覆蓋著金屬和絕緣材料,用一個碳刷與其接觸,鼓旋轉時即產生電路通斷的效果。每一周期,確保需閉合的繼電器在鼓的金屬面與碳刷接觸之前閉合,火花便只會在旋轉鼓上產生。旋轉鼓比繼電器耐用得多,也容易更換。如果你還記得,不難發現這一做法與霍爾瑞斯制表機中G針的安排如出一轍,不得不感嘆這些發明家真是英雄所見略同。
除了上述這種「隨輸入隨計算」的用法,Z3當然還支持運行預先編好的程序,不然也無法在歷史上享有「第一臺可編程計算機器」的名譽了。
1997~1998年間,Rojas教授將Z3證明為通用圖靈機(UTM),但Z3本身沒有提供條件分支的能力,要實現循環,得粗暴地將穿孔帶的兩頭接起來形成環。到了Z4,終于有了條件分支,它使用兩條穿孔帶,分別作為主程序和子程序。Z4連上了打字機,能將結果打印出來。還擴充了指令集,支持正弦、最大值、最小值等豐富的求值功能。甚而至于,開創性地應用了堆棧的概念。但它回歸到了機械式存儲,因為祖思希望擴大內存,繼電器還是體積大、成本高的老問題。
總而言之,Z系列是一代更比一代強,除了這里介紹的1~4,祖思在1941年成立的公司還陸續生產了Z5、Z11、Z22、Z23、Z25、Z31、Z64等等等等產品(當然后面的系列開始采用電子管),共251臺,一路高歌,如火如荼,直到1967年被西門子吞并,成為這一國際巨頭體內的一股靈魂之血。
貝爾Model系列
同一時期,另一家不容忽視的、研制機電計算機的機構,便是上個世紀叱咤風云的貝爾實驗室。眾所周知,貝爾實驗室及其所屬公司是做電話起家、以通信為主要業務的,雖然也做基礎研究,但為什么會涉足計算機領域呢?其實跟他們的老本行不無關系——最早的電話系統是靠模擬量傳輸信號的,信號隨距離衰減,長距離通話需要用到濾波器和放大器以保證信號的純度和強度,設計這兩樣設備時需要處理信號的振幅和相位,工程師們用復數表示它們——兩個信號的疊加是兩者振幅和相位的分別疊加,復數的運算法則正好與之相符。這就是一切的起因,貝爾實驗室面臨著大量的復數運算,全是簡單的加減乘除,這哪是腦力活,分明是體力勞動啊,他們為此甚至專門雇傭過5~10名婦女(當時的廉價勞力)全職來做這事。
從結果來看,貝爾實驗室發明計算機,一方面是源于自身需求,另一方面也從自身技術上得到了啟發。電話的撥號系統由繼電器電路實現,通過一組繼電器的開閉決定誰與誰進行通話。當時實驗室研究數學的人對繼電器并不熟悉,而繼電器工程師又對復數運算不盡了解,將兩者聯系到一起的,是一名叫喬治·斯蒂比茲的研究員。
Model K
1937年,斯蒂比茲察覺到繼電器的開閉狀態與二進制之間的聯系。他做了個實驗,用兩節電池、兩個繼電器、兩個指示燈,以及從易拉罐上剪下來的觸片組成一個簡單的加法電路。
有簡友問到具體是怎么實現的,我沒有查到相關資料,但經過與同事的探討,確認了一種可行的電路:
開關S1、S2分別控制著繼電器R1、R2的開閉,出于簡化,這里沒有畫出開關對繼電器的控制線路。繼電器可以視為單刀雙擲的開關,R1默認與上觸點接觸,R2默認與下觸點接觸。單獨S1閉合則R1在電磁作用下與下觸點接觸,接通回路,A燈亮;單獨S2閉合則R2與上觸點接觸,A燈亮;S1、S2同時閉合,則A燈滅,B燈亮。誠然這是一種粗糙的方案,僅僅在表面上實現了最終效果,沒有體現出二進制的加法過程,有理由相信,大師的原設計可能精妙得多。
因為是在廚房(kitchen)里搭建的模型,斯蒂比茲的妻子稱之為Model K。Model K為1939年建造的Model I——復數計算機(Complex Number Computer)做好了鋪墊。
Model I
這里不深究Model I的具體實現,其原理簡單,可線路復雜得要命。讓我們把重點放到其對數字的編碼上。
Model I只用于實現復數的乘除運算,甚至連加減都沒有考慮,因為貝爾實驗室認為加減法口算就夠了。(當然后來他們發現,只要不清空寄存器,就可以通過與復數±1相乘來實現加減法。)當時的電話系統中,有一種擁有10個狀態的繼電器,可以表示數字0~9,鑒于復數計算機的專用性,其實沒有引入二進制的必要,直接利用這種繼電器即可。但斯蒂比茲實在舍不得,便引入了二進制和十進制的雜種——BCD編碼(Binary-Coded Decimal?,二-十進制碼),用四位二進制表示一位十進制:
0 → 0000
1 → 0001
2 → 0010
3 → 0011
……
9 → 1001
10 → 00010000(本來10的二進制表示是1010)
BCD碼既擁有二進制的簡潔表示,又保留了十進制的運算模式。但作為一名出色的設計師,斯蒂比茲仍不滿足,稍做調整,給每個數的編碼加了3:
0 → 0011 (0 + 3 = 3)
1 → 0100 (1 + 3 = 4)
2 → 0101 (2 + 3 = 5)
3 → 0110 (3 + 3 = 6)
……
9 → 1100 (9 + 3 =12)
是為余3碼(Excess-3),或稱斯蒂比茲碼。為什么要加3?因為四位二進制原本可以表示0~15,有6個編碼是多余的,斯蒂比茲選擇使用中間10個。
這么做當然不是因為強迫癥,余3碼的智慧有二:其一在于進位,觀察1+9,即0100+1100=0000,觀察2+8,即0101+1011=0000,以此類推,用0000這一特殊的編碼表示進位;其二在于減法,減去一個數相當于加上此數的反碼再加1,0(0011)的反碼即9(1100),1(0100)的反碼為8(1011),以此類推,每個數的反碼恰是對其每一位取反。
不管你看沒看懂這段話,總之,余3碼大大簡化了線路設計。
套用現在的術語來說,Model I采用C/S(客戶端/服務端)架構,配備了3臺操作終端,用戶在任意一臺終端上鍵入要算的式子,服務端將收到相應信號并在解算之后傳回結果,由集成在終端上的電傳打字機打印輸出。只是這3臺終端并不能同時使用,像電話一樣,只要有一臺「占線」,另兩臺就會收到忙音提示。
Model I不但是第一臺多終端的計算機,還是第一臺可以遠程操控的計算機。這里的遠程,說白了就是貝爾實驗室利用自身的技術優勢,于1940年9月9日,在達特茅斯學院(Dartmouth College)和紐約的本部之間搭起線路,斯蒂比茲帶著小小的終端機到學院演示,不一會就從紐約傳回結果,在與會的數學家中引起了巨大轟動,其中就有日后大名鼎鼎的馮·諾依曼,個中啟迪不言而喻。
斯蒂比茲由此成為遠程計算第一人。
然而,Model I只能做復數的四則運算,不可編程,當貝爾的工程師們想將它的功能擴展到多項式計算時,才發現其線路被設計死了,根本改動不得。它更像是臺巨型的計算器,準確地說,仍是calculator,而不是computer。
Model II
二戰期間,美國要研制高射炮自動瞄準裝置,便又有了研制計算機的需求,繼續由斯蒂比茲負責,便是于1943年完成的Model II——Relay Interpolator(繼電器插值器)。
Model II開始使用穿孔帶進行編程,共設計有31條指令,最值得一提的還是編碼——二-五編碼。
你會發現,二-五編碼比上述的任一種編碼都要浪費位數,但它有它的強大之處,便是自校驗。每一組繼電器中,有且僅有一個繼電器為1,一旦出現多個1,或者全是0,機器就能立馬發現問題,由此大大提高了可靠性。
Model II之后,一直到1950年,貝爾實驗室還陸續推出了Model III、Model IV、Model V、Model VI,在計算機發展史上盤踞一席之地。除了戰后的VI返璞歸真用于復數計算,其余都是軍事用途,可見戰爭確實是技術革新的催化劑。
Harvard Mark系列
稍晚些時候,踏足機電計算領域的還有哈佛大學。當時,有一名正在哈佛攻讀物理PhD的學生——艾肯,和當年的祖思一樣,被手頭繁復的計算困擾著,一心想建臺計算機,于是從1937年開始,抱著方案四處尋找合作。第一家被拒,第二家被拒,第三家終于伸出了橄欖枝,便是IBM。
1939年3月31日,IBM和哈佛草簽了最后的協議:
1、IBM為哈佛建造一臺自動計算機器,用于解決科學計算問題;
2、哈佛免費提供建造所需的基礎設施;
3、哈佛指定一些人員與IBM合作,完成機器的設計和測試;
4、全體哈佛人員簽訂保密協議,保護IBM的技術和發明權利;
5、IBM既不接受補償,也不提供額外經費,所建計算機為哈佛的財產。
乍一看,砸了40~50萬美元,IBM似乎撈不到任何好處,事實上人家大公司才不在意這點小錢,主要是想借此彰顯自己的實力,提高公司聲譽。然而世事難料,在機器建好之后的慶典上,哈佛新聞辦公室與艾肯私自準備的新聞稿中,對IBM的功勞沒有給予足夠的認可,把IBM的總裁沃森氣得與艾肯老死不相往來。
事實上,哈佛這邊由艾肯主設計,IBM這邊由萊克(Clair D. Lake)、漢密爾頓(Francis E. Hamilton)、德菲(Benjamin Durfee)三名工程師主建造,按理,雙方單位的貢獻是對半的。
于1944年完成了這臺Harvard Mark I, 在娘家叫做IBM自動順序控制計算機(IBM Automatic Sequence Controlled Calculator),ASCC。
同祖思機一樣,Mark I也通過穿孔帶獲得指令。穿孔帶每行有24個空位,前8位標識用于存放結果的寄存器地址,中間8位標識操作數的寄存器地址,后8位標識所要進行的操作——結構已經非常類似后來的匯編語言。
至于數據,Mark I內有72個累加寄存器,對外不可見。可見的是另外60個24位的常數寄存器,通過開關旋鈕置數,于是就有了這樣蔚為壯觀的60×24旋鈕陣列:
同時,Mark I還可以通過穿孔卡片讀入數據。最終的計算結果由一臺打孔器和兩臺自動打字機輸出。
下面讓我們來大致瞅瞅它里頭是怎么運作的。
當然Mark I不是用齒輪來表示最終結果的,齒輪的旋轉是為了接通表示不同數字的線路。
齒輪和電刷是可離合的,若它們不接觸,任齒輪不停旋轉,電刷是不動的。艾肯將300毫秒的機器周期細分為16個時間段,在一個周期的某一時間段,靠磁力吸附使齒輪和電刷發生關系齒輪通過軸帶動電刷旋轉。吸附之前的時間是空轉,從吸附開始,周期內的剩余時間便用來進行實質的旋轉計數和進位工作。
其余復雜的電路邏輯,則理所當然是靠繼電器來完成。
艾肯設計的計算機并不局限于一種材料實現,在找到IBM之前,他還向一家制造傳統機械式桌面計算器的公司提出過合作請求,如果這家公司同意合作了,那么Mark I最終極可能是純機械的。后來,1947年完成的Mark II也證明了這一點,它大體上僅是用繼電器實現了Mark I中的機械式存儲部分,是Mark I的純繼電器版本。1949年和1952年,又分別誕生了半電子(二極管繼電器混合)的Mark III和純電子的Mark IV。
末了,關于這一系列值得一提的,是日后常拿來與馮·諾依曼結構做對比的哈佛結構,與馮·諾依曼結構統一存儲的做法不同,它把指令和數據分開存儲,以獲得更高的執行效率,相對的,付出了設計復雜的代價。
就這樣趟過歷史,漸漸地,這些遙遠的東西也變得與我們親近起來,歷史與現在從來沒有脫節,脫節的是我們局限的認知。往事并非與現今毫無關系,我們所熟知的偉大創造都是從歷史一次又一次的更迭中脫胎而出的,這些前人的智慧串聯著,匯聚成流向我們、流向未來的璀璨銀河,我掀開它的驚鴻一瞥,陌生而熟悉,心里頭熱乎乎地涌起一陣難以言表的驚艷與欣喜,這便是研究歷史的樂趣。
參考文獻
胡守仁. 計算機技術發展史(一)[M]. 長沙: 國防科技大學出版社, 2004.
Wikipedia. Hans Christian ?rsted[EB/OL]. https://en.wikipedia.org/wiki/Hans_Christian_%C3%98rsted, 2016-12-10.
Wikipedia. Michael Faraday[EB/OL]. https://en.wikipedia.org/wiki/Michael_Faraday, 2016-11-27.
Wikipedia. Relay[EB/OL]. https://en.wikipedia.org/wiki/Relay#cite_note-adb-6, 2016-12-20.
Wikipedia. Joseph Henry[EB/OL]. https://en.wikipedia.org/wiki/Joseph_Henry, 2016-12-03.
Wikipedia. Edward Davy[EB/OL]. https://en.wikipedia.org/wiki/Edward_Davy, 2016-11-04.
Wikipedia. Unit record equipment[EB/OL]. https://en.wikipedia.org/wiki/Unit_record_equipment, 2016-12-29.
陳厚云, 王行剛. 計算機發展簡史[M]. 北京: 科學出版社, 1985.
吳為平, 嚴萬宗. 從算盤到電腦[M]. 長沙: 湖南教育出版社, 1986.
Wikipedia. United States Census[EB/OL]. https://en.wikipedia.org/wiki/United_States_Census, 2017-01-15.
Wikipedia. United States Census Bureau[EB/OL]. https://en.wikipedia.org/wiki/United_States_Census_Bureau, 2017-01-20.
Wikipedia. Herman Hollerith[EB/OL]. https://en.wikipedia.org/wiki/Herman_Hollerith, 2017-01-08.
Herman Hollerith. Art of Compiling Statistics[P]. 美國專利: 395781, 1889-01-08.
Frank da Cruz. Hollerith 1890 Census Tabulator[EB/OL]. http://www.columbia.edu/cu/computinghistory/census-tabulator.html, 2011-03-28.
Wikipedia. Player piano[EB/OL]. https://en.wikipedia.org/wiki/Player_piano, 2017-01-20.
Wikipedia. Konrad Zuse[EB/OL]. https://en.wikipedia.org/wiki/Konrad_Zuse, 2017-01-30.
Largest Dams. Computer History[EB/OL]. https://www.youtube.com/watch?v=HEmFqohbQCI, 2013-12-23.
Wikipedia. Z1 (computer)[EB/OL]. https://en.wikipedia.org/wiki/Z1_(computer), 2017-04-27.
Rojas R. The Z1: Architecture and Algorithms of Konrad Zuse's First Computer[J]. Eprint Arxiv, 2014.
逸之. Z1:第一臺祖思機的架構與算法[EB/OL]. http://www.lxweimin.com/p/cb2ed00dd04f, 2017-04-07.
柏林自由大學. Architecture and Simulation of the Z1 Computer[EB/OL]. http://zuse-z1.zib.de/.
talentraspel. talentraspel simulator für mechanische schaltglieder zuse[EB/OL]. https://www.youtube.com/watch?v=4Xojcw3FVgo, 2013-11-12.
Wikipedia. Z2 (computer)[EB/OL]. https://en.wikipedia.org/wiki/Z2_(computer), 2017-02-23.
Wikipedia. Z3 (computer)[EB/OL]. https://en.wikipedia.org/wiki/Z3_(computer), 2017-04-14.
Rojas R. Konrad Zuse's legacy: the architecture of the Z1 and Z3[J]. Annals of the History of Computing IEEE, 1997, 19(2):5-16.
Rojas R. How to make Zuse's Z3 a universal computer[J]. IEEE Annals of the History of Computing, 1998, 20(3):51-54.
DeutschesMuseum. Die Z3 von Konrad Zuse im Deutschen Museum[EB/OL]. https://www.youtube.com/watch?v=aUXnhVrT4CI, 2013-10-23.
Wikipedia. Z4 (computer)[EB/OL]. https://en.wikipedia.org/wiki/Z4_(computer), 2017-05-10.
Wikipedia. George Stibitz[EB/OL]. https://en.wikipedia.org/wiki/George_Stibitz, 2017-04-24.
Paul E. Ceruzzi. Number, Please-Computers at Bell Labs[EB/OL]. http://ed-thelen.org/comp-hist/Reckoners-ch-4.html.
AT&T Tech Channel. AT&T Archives: Invention of the First Electric Computer[EB/OL]. https://www.youtube.com/watch?v=a4bhZYoY3lo, 2011-10-19.
history-computer.com. Relay computers of George Stibitz[EB/OL]. http://history-computer.com/ModernComputer/Relays/Stibitz.html.
Wikipedia. Howard H. Aiken[EB/OL]. https://en.wikipedia.org/wiki/Howard_H._Aiken, 2017-07-21.
Wikipedia. Harvard Mark I[EB/OL]. https://en.wikipedia.org/wiki/Harvard_Mark_I, 2017-07-04.
Comrie L J. A Manual of Operation for the Automatic Sequence Controlled Calculator[J]. Nature, 1946, 158:567-568.
CS101. Harvard Mark I[EB/OL]. https://www.youtube.com/watch?v=SaFQAoYV1Nw, 2014-09-13.
CS50. Harvard Mark I[EB/OL]. https://www.youtube.com/watch?v=4ObouwCHk8w, 2014-02-21.
Wikipedia. Harvard Mark II[EB/OL]. https://en.wikipedia.org/wiki/Harvard_Mark_II, 2017-08-03.
Wikipedia. Harvard Mark III[EB/OL]. https://en.wikipedia.org/wiki/Harvard_Mark_III, 2017-08-03.
Wikipedia. Harvard Mark IV[EB/OL]. https://en.wikipedia.org/wiki/Harvard_Mark_IV, 2017-08-03.
陳明敏, 易清明, 石敏. ARMv4指令集嵌入式微處理器設計[J]. 電子技術應用, 2014, 40(12):23-26.
相關閱讀