4.1 從理論走向實體:儲存程式電腦與資料指令共用記憶體的革命#
戰爭把數學家送進了工廠#
1936 年圖靈寫下通用機時,全世界的「計算裝置」是機械加法器與打孔卡製表機。五年內,三股力量把它變成現實:
1. 彈道計算:二戰中炮兵彈道表的瓶頸驚人——一台加法器算一條彈道要 30 秒,而新式火炮需要數百個射角 × 每個炮位 × 氣候修正。賓州大學莫爾學院的 ENIAC(1943 開工,1945 完成)由陸軍彈道研究實驗室出資 50 萬美元(最終花費近百萬——軍方是第一位大客戶)。
2. 原子彈:曼哈頓計畫的流體動力學與中子擴散計算,需要超出一切現有裝置的能力。馮·諾伊曼正是以洛斯阿拉莫斯顧問的身份捲入計算機事業(第 7.2 章的蒙地卡羅方法也源於此)。
3. 密碼學:英國的 Colossus(1943,湯米·弗勞爾斯設計,用於破解洛倫茲密碼)已是電子式、半可程式的機器——但戰後保密制度讓英國自廢武功:Colossus 的存在 1970s 才解密,英國計算機產業失去了本可領先的十年。保密制度對產業的殺傷,不亞於技術落後。
ENIAC 的困境:程式在哪裡?#
ENIAC(18,000 根真空管、30 噸、150 千瓦)解決了「算得快」,卻留下一個尷尬:
「程式」是用插線與開關配置的。 換一個任務,工程師要拔插幾百條纜線、設置上千個開關,費時數天——而計算本身只需幾分鐘。
程式存在於機器的物理佈線中。這正是圖靈 1936 年已經解決的理論問題:「把機器描述寫進紙帶」。ENIAC 團隊與馮·諾伊曼 1944 年夏天的一次火車站會面(歷史上有名的偶遇)後,馮·諾伊曼加入顧問群,開始起草新架構。
《EDVAC 報告初稿》(1945):電腦的憲法#
1945 年 6 月,馮·諾伊曼寫下《EDVAC 報告的第一份草案》——一份 101 頁的手稿,卻被視為計算機科學的獨立宣言。核心思想(後世稱「馮·諾伊曼架構」):
- 儲存程式:指令以數字形式存放在記憶體中,與資料同質
- 共用記憶體:單一儲存空間同時容納指令與資料
- 序列執行:取指令 → 解碼 → 執行 → 下一條(取指—執行循環)
- 五大單元:運算器(ALU)、控制器、記憶體、輸入、輸出
flowchart LR
M[記憶體<br>指令+資料] -->|取指| C[控制器]
C -->|控制| A[ALU 運算器]
A <--> M
IN[輸入] --> M
M --> OUT[輸出]
C -.「程式就是資料」.-> M為什麼這是革命:修改程式 = 修改記憶體裡的數 = 不用動機器。程式從「機器的佈線」降格為「記憶體裡的檔案」——軟體與硬體的分工,整個軟體產業的地基,就建立在這一條上。圖靈機的 \(U(\langle M\rangle, w)\) 至此有了身體。
「馮·諾伊曼架構」這個名字的歷史爭議#
報告只署名馮·諾伊曼,但思想是集體的:
- 普雷斯珀·艾克特與約翰·莫奇利(ENIAC 的工程師)主張「儲存程式」的關鍵工程想法(用延遲線儲存)有他們的貢獻,且他們本就打算改進 ENIAC
- 圖靈 1936 的理論源頭眾所周知(馮·諾伊曼深諳哥德爾—圖靈文獻)
- 結果:EDVAC 專利糾紛爆發,艾克特—莫奇利 1946 年辭職創辦全世界第一家電腦公司(Eckert–Mauchly Computer Corp,後被 Remington Rand 收購,1951 年 UNIVAC 成為第一台商用電腦——預測 1952 年總統大選結果,電視直播讓「電腦」進入美國家庭詞彙)。馮·諾伊曼架構的單一署名,是學術—產業產權邊界模糊時代的一次著名爭端,它催生了後來電腦專利制度的調整(IBM 1956 同意放棄部分專利壟斷——反壟斷訴訟的產物,客觀上開放了產業競爭)
全球的第一批機器#
| 機器 | 時間 | 特點 |
|---|---|---|
| Manchester Baby | 1948.6 | 世界第一台執行儲存程式的機器(圖靈參與其後續發展) |
| EDSAC | 1949.5 | 劍橋,Wilkes 主持——第一台實用儲存程式電腦;Wilkes 1946 年讀到 EDVAC 報告後從美國帶回歐洲 |
| UNIVAC I | 1951 | 第一台商用電腦 |
| IBM 701 | 1952 | IBM 帝國入場——打孔卡霸主被電子計算的未來倒逼轉型 |
英國先行(Baby/EDSAC)、美國收割(UNIVAC/IBM)的格局,與 Colossus 保密的歷史直接相關——又一次,制度(保密)塑造了產業地理。
儲存程式的深層意義:自我指涉的法律化#
回顧第二章:哥德爾編號讓「命題是數」;圖靈讓「程式是資料」。馮·諾伊曼架構是這個數學事實的物理立法。它帶來的深層後果包括:
- 編譯器與解譯器可以寫在機器上(自舉:用 Fortran 寫 Fortran 編譯器)
- 程式可以生成程式(宏、元程式設計、基因演算法、LLM 生成代碼——全書第 16 章的技術前提)
- 惡意程式也獲得了同等地位(病毒:修改其他程式的記憶體)——Neumann 本人 1949 年就寫過「自複製自動機」的理論,預言了自複製程式的可能性
讓程式成為資料,人類同時獲得了軟體產業與電腦犯罪。 這是抽象化的辯證法:每上一層台階,風險與機會同步升級。