為什麼軟體需要被「解耦」#
戰時打造的所有機器,都是為了某項特定任務而生(解方程、破譯密碼)。但真正的電腦——勒夫雷斯與圖靈所構想的那種——應能無縫切換、執行任何邏輯運算。這意味著機器的能力不能只取決於硬體,更要取決於軟體(software):它能跑的程式。
我們不需要無數台不同的機器去做不同的工作。一台就夠了。「為各種任務製造各種機器」的工程問題,會被「為通用機器編寫程式」這種辦公室工作所取代。
——艾倫·圖靈,1948 年
ENIAC 在理論上能跑通用任務,但實務上每換一個程式都得手工拔插纜線、重設開關——換程式的速度遠跟不上電子運算的速度。下一個關鍵突破,是把程式存到電腦的記憶體裡。
從 Babbage 開始,發明電腦的男人多半專注於硬體。但二戰期間投入這個領域的女性們,跟一個世紀前的愛達一樣,早早看出程式設計(programming)的重要性——軟體裡藏著讓硬體脫胎換骨的魔法配方。
葛瑞絲·霍珀:第一位程式設計大師#
**葛瑞絲·霍珀(Grace Hopper)**生於 1906 年的紐約上西區,外祖父是土木工程師,母親是數學家,父親是保險業高管。她在瓦薩學院(Vassar)拿到數學物理學位,1934 年從耶魯取得數學博士。
1930 年代美國女性數學博士佔當年總數的 15%(113 位);到了 1950 年代反而跌到 4%(106 位)。這個比例直到 2000 年代才回到 30%。
霍珀在瓦薩當教授時堅持學生要會寫作——機率課她讓學生為一條公式寫散文:
你不能跟別人溝通的話,學數學沒有意義。
珍珠港事件後,她放下教職、離婚、入伍海軍。1944 年 7 月,36 歲的中尉霍珀被派到哈佛——艾肯指揮下的 Mark I。
寫出第一本程式設計手冊#
艾肯遞給她一本巴貝奇回憶錄,指著那台五十英尺長、嘎嘎作響的機器說:「這是計算機。」她在工程藍圖前花了整夜消化它。
- 艾肯命她寫一本書:世界第一本電腦程式設計手冊(500 頁,兼具 Mark I 歷史與程式撰寫指南)
- 她每天讀五頁手稿給艾肯聽,學會「寫得讓人念出來不卡」這條鐵律
- 她與艾肯成了一個世紀後的「愛達與巴貝奇」——只是這次協作的兩端互換了角色
- 她對愛達深有共鳴:「她寫了第一個迴圈。我永遠不會忘記。」
Bug、Debug、副程式、編譯器#
霍珀在 Mark I 上磨出了多項至今沿用的程式設計實作:
- 副程式(subroutine):把如
sin x、log10 x、10^x這樣常用、可重複呼叫的程式塊獨立出來——延伸自愛達在分析機《註解》中已描述的構想 - 編譯器(compiler)的雛形:把同一支程式翻譯成不同機器的機器語言,讓程式具備機器獨立性
- Bug 與 Debug:Mark II 某夜當機,團隊在繼電器中夾著一隻翼展四英寸的飛蛾,被用膠帶貼進 log 簿並註記「First actual case of bug being found」——「除蟲(debugging)」一詞自此成為程式員術語
霍珀有著「水手般的口才」與駭客般的不羈精神。當搭檔布洛赫(Richard Bloch)半夜偷改 Mark I 的硬體電路、害她的程式跑不動時,她對他罵得沒大沒小——這正是日後硬體工程師與軟體工程師之間「對立又同袍」的張力的雛形。「桀驁」並不阻礙協作;正是她的協作能力,給了她獨立思考與行動的空間。
到 1945 年,由於霍珀的努力,Mark I 成為當時世界上最容易重新編程的大型電腦——靠紙帶換指令,不必重新接線。但因為它仍是機電式(每秒只能做 3 個指令),相較於 ENIAC(每秒 5,000 個指令)很快被遮蔽。艾肯陷入了發明者常見的陷阱:執著於可靠的舊路徑(電磁繼電器),錯失了真空管的浪頭。
ENIAC 的女程式員#
ENIAC 的硬體工程師全都是男性。但真正讓 ENIAC 能跑出多種運算的,是六位被歷史忽略的女性:
- 珍·詹寧斯(Jean Jennings,後來 Bartik)
- 瑪琳·韋斯科夫(Marlyn Wescoff,後 Meltzer)
- 露絲·李奇特曼(Ruth Lichterman,後 Teitelbaum)
- 貝蒂·斯耐德(Betty Snyder,後 Holberton)
- 法蘭西絲·比拉斯(Frances Bilas,後 Spence)
- 凱伊·麥納提(Kay McNulty,後嫁給莫奇利)
戰時招募廣告寫著「徵求女數學家」。賓州當時有約 70 位女性以「人工計算員(computer)」身分手動算彈道。
男性工程師當時以為「插插線、撥開關」是粗活、只該交給女性。但這六位女性很快證明:程式設計與硬體設計同等重要,甚至更複雜。詹寧斯多年後感慨:「如果 ENIAC 的管理者那時就明白程式設計有多關鍵、有多複雜,他們也許不會這麼放心讓女性負責。」
她們從沒拿到過手冊,只拿到藍圖:
有人塞給我們一疊藍圖,這些就是所有面板的接線圖,他們說:「這就是了,自己搞清楚機器怎麼運作、再想出怎麼編程它。」
她們因此比工程師更熟悉機器的細節——連哪一支真空管燒了都看得出來。她們也獨立發展出副程式、巢狀副程式、模組化設計等程式設計核心觀念。
內部儲存程式:下一個轉捩點#
莫奇利與艾克特早在 1944 年初就意識到:要讓電腦真正容易重新編程,程式必須存在電腦的記憶體裡——這就是「儲存程式架構(stored-program architecture)」。
- 艾克特考慮過合金磁碟、蝕刻磁碟等存儲方案
- 最後選用較便宜的水銀延遲線(acoustic mercury delay line):由貝爾實驗室的蕭克利(William Shockley,後文還會大量出現)所開創。資料以脈衝形式在水銀管中來回行走、可被電氣再生
- 提案的下一代機器將以延遲線同時儲存資料與程式
馮紐曼登場#
**約翰·馮紐曼(John von Neumann)**1903 年生於布達佩斯的猶太家庭,是不世出的全才——統計、集合論、幾何、量子力學、核武設計、流體力學、賽局論、電腦架構,樣樣有重要貢獻。氫彈之父泰勒(Edward Teller)說:
如果有一個心智超人的種族出現,他們會長得像強尼·馮紐曼。

1954 年的馮紐曼(John von Neumann, 1903–57)
他與圖靈:對立的氣質#
| 圖靈 | 馮紐曼 | |
|---|---|---|
| 生活風格 | 簡樸、住宿舍、獨處 | 普林斯頓大宅每週開派對 |
| 體育 | 長跑健將 | 連短距離都不跑 |
| 衣著 | 邋遢、頭髮過長 | 三件式西裝幾乎不脫,連騎驢下大峽谷也穿 |
| 對信用 | 私底下苦行 | 喜歡開派對、講多語限制級五行詩 |
兩人相遇於普林斯頓,是通用電腦的兩大理論家。馮紐曼還曾邀圖靈當他的助手。
從曼哈頓計畫到 EDVAC#
馮紐曼參與曼哈頓計畫時,研究內爆式核彈(implosion device)——這需要解出大量描述衝擊波壓縮速率的方程。他開始尋找快速計算機器:
- 拜訪貝爾實驗室看 Stibitz 的複數計算器
- 拜訪哈佛試試 Mark I(霍珀回憶他常從機房衝進衝出,99% 的時候都能猜對中間結果)
- 1944 年 8 月在亞伯丁試驗場月台偶遇葛德斯坦——後者得知賓州的 ENIAC 後激動了,當場「氣氛從輕鬆變成博士口試」

約 1944 年的 Herman Goldstine(1913–2004)
馮紐曼成為 ENIAC 團隊的顧問。1945 年春,他與莫奇利、艾克特、葛德斯坦等人四度開會(記錄稱「Meetings with von Neumann」)。他像蘇格拉底式的協作主持人,吸收、提煉、再寫上黑板。
儲存程式架構的關鍵洞見#
馮紐曼最重要的貢獻:程式應與資料儲存在同一個記憶體中。這意味著:
- 程式可在執行過程中被修改(即讀寫記憶體 read-write memory)
- 電腦可以根據中間結果改寫自己的程式
- 為此他發展出**可變位址(variable-address)**程式語言,便於執行時替換指令
圖靈構想、馮紐曼交付的儲存程式電腦,打破了「代表事物的數字」與「執行動作的數字」之間的界線——程式本身也是資料,可以被另一段程式讀寫。我們的世界從此不同。這台被命名為 EDVAC(Electronic Discrete Variable Automatic Calculator) 的後繼機,將是二進位、用水銀延遲線做記憶體,並包含後來所謂的「馮紐曼架構(von Neumann architecture)」。
「第一份草稿」與意外開源#
1945 年 6 月,馮紐曼搭火車去洛斯阿拉莫斯途中,把過去十個月的討論寫成手稿寄給葛德斯坦。葛德斯坦找人打字成 101 頁的〈EDVAC 報告第一份草稿(First Draft of a Report on the EDVAC)〉,只列馮紐曼為作者,影印 24 份分發。
這份分發在法律上構成「先前公開(prior publication)」,使莫奇利與艾克特日後申請儲存程式架構專利時碰壁。馮紐曼學界出身、傾向公開分享;艾克特等人卻試圖把架構專利化以保護創業基礎。艾克特憤怒地稱馮紐曼為「兜售他人想法的小販」、「葛德斯坦則是他的銷售經理」。從此衍生了一個至今仍未平息的數位時代核心爭議:智慧財產該開放共享,還是該專利保護?網際網路與全球資訊網選擇了前者;硬體與半導體選擇了後者。2011 年,蘋果與 Google 在專利訴訟與和解金上的支出,已超過自家研發。
ENIAC 公開亮相#
ENIAC 直到 1945 年秋才完成。它的第一個任務是機密的氫彈計算——泰勒(Edward Teller)的「Super」設計需要算出每千萬分之一秒的反應力道。算出來的結果證明 Teller 的設計有缺陷,後續由烏拉姆(Stanislaw Ulam)等人修正。
公開展示訂在 1946 年 2 月 15 日。葛德斯坦把彈道計算當主秀,請詹寧斯與斯耐德兩週內把這支程式寫好。
展示前一晚是情人節,但兩位女性程式員整夜在機房裡——程式會一路算下去,連砲彈落地後都繼續算「彷彿砲彈在地底繼續飛」。半夜放棄回家後,斯耐德在睡夢中想出問題出在 do 迴圈尾端某個開關差了一位。她隔天清晨搭頭班車回賓州,把它修好。「她睡著時的邏輯推理能力比一般人清醒時還強。」詹寧斯說。
展示日,ENIAC 在 15 秒內算完一條彈道(人工要花數週)。為了上鏡,艾克特把乒乓球切半、寫上數字、罩在燈泡上——閃爍的燈光成為日後電影電視對「巨大電腦」的標準視覺符號。
隔天紐約時報頭版報導 ENIAC,但寫得太誇張,把它稱為「巨腦」。「ENIAC 一點也不是腦,」詹寧斯抗議。「它無法思考——它只能給人類更多用來思考的資料。」當晚的盛大慶功晚宴在賓州 Houston Hall 舉行,詹寧斯與斯耐德都沒被邀請。她們在那個極冷的二月夜獨自走回家。
第一批儲存程式電腦#
賓州因專利之爭與莫奇利、艾克特離開(1946 年 3 月)後,迅速失去計算機創新中心的地位。馮紐曼也回到普林斯頓高研院,帶走葛德斯坦夫婦與多名工程師。
1946 年 7 月的**摩爾學院系列講座(Moore School Lectures)**仍把這群人聚回賓州八週,把儲存程式架構的設計理念散播到下一代研究者(Aiken、Stibitz、曼徹斯特的 Hartree、劍橋的 Wilkes 都來聽)。
最早完工的儲存程式電腦:
- 改造後的 ENIAC:1948 年 4 月運作;用三組函數表存放指令(唯讀記憶)
- 曼徹斯特小寶寶(Manchester Baby):1948 年 6 月;用陰極射線管做存儲,比延遲線更快更簡單
- EDSAC:1949 年 5 月由劍橋的 Maurice Wilkes 完成
- 曼徹斯特 Mark I:1949 年 4 月運作
商業化轉向#
莫奇利與艾克特離開後成立 Eckert-Mauchly Computer Corporation(後併入 Remington Rand → Sperry Rand → Unisys),把計算從學術轉為商業:
- UNIVAC:被人口普查局與奇異公司採購
- 1952 年總統大選:CBS 主播克朗凱(Walter Cronkite)半信半疑請 UNIVAC 預測;晚間 8:30 它就以 100 比 1 預測艾森豪大勝(CBS 不敢播,事後被迫承認),UNIVAC 自此一戰成名

1952 年艾克特(中)與 CBS 的 Walter Cronkite(右)一同看 UNIVAC 的選舉預測
莫奇利沒忘記賓州的女性程式員——他僱了斯耐德(後在 COBOL 與 Fortran 標準化中扮演要角)、詹寧斯,並在妻子過世後娶了麥納提(後在 UNIVAC 的軟體上繼續貢獻)。他也僱了霍珀:「他讓人嘗試新事物,鼓勵創新。」霍珀在 1952 年寫出了世界第一個可用的編譯器 A-0 系統。她率先把編譯器初版寄給朋友請他們改良——這是日後**開源(open-source)**式創新的早期樣貌。她也主導了 COBOL(第一個跨平台商用語言)。她的「程式應與機器無關」理念,蘊含一個直到比爾·蓋茲才被廣泛掌握的洞見:硬體會商品化,價值會逐漸轉移到軟體上。
機器能思考嗎?#
當儲存程式電腦逐步成形,圖靈轉向了愛達一個世紀前的著名論斷:機器無法真正思考。
如果一台機器能根據它處理的資料修改自己的程式,這不就是某種「學習」嗎?這會通往人工智慧嗎?
笛卡兒、圖靈與夏農#
笛卡兒在 1637 年的《方法論》中已提出:機器無法回應任何在場的話、無法因理解而行動。圖靈則用一連串對話與工作把這條線撥動了:
- 1943 年圖靈渡海到貝爾實驗室與夏農喝下午茶。兩人在 1937 年的論文都指向同一件事:只用簡單的二進位指令,機器就能處理一切邏輯——而既然邏輯是人類推理的基礎,機器理論上能模擬人類的智能
- 「夏農想餵給機器的不只是資料,還有文化!」圖靈在一次午餐興奮地告訴貝爾的同事。「他要放音樂給它聽!」
- 1943 年回到布萊切利後,他與同事 Donald Michie 在酒館下棋,思考「機器能否從反覆練習中學會下棋」——若能,這將是愛達也會驚訝的跳躍:機器不只是執行人類給的指令,而能從經驗中改寫自己的指令
圖靈測驗(1950)#
1950 年發表於《Mind》期刊的〈運算機械與智慧(Computing Machinery and Intelligence)〉開門見山:
我提議來考慮一個問題:「機器能思考嗎?」
他發明了一個遊戲——他稱之為「模仿遊戲(imitation game)」,後人稱之為圖靈測驗(Turing Test):
- 一位審問者透過文字向另一房間的一個人與一台機器提問
- 若機器的輸出與人類的輸出無法區分,我們就沒有有意義的理由堅持機器「沒有在思考」
圖靈猜測:「大約五十年內,電腦就能玩好這個遊戲,讓平均審問者在五分鐘內能正確辨識的機率不超過 70%。」
應對「勒夫雷斯夫人的反對」#
圖靈在這篇論文中專闢一節回應勒夫雷斯夫人的反對——「機器只能執行被命令的事,無法原創」。他的回手是:機器或許能學習:
與其想做一個模仿成年心智的程式,為何不做一個模仿孩童心智的?再經過適當的教育,就能得到一顆成年腦。
他提議用獎懲系統訓練這個「嬰兒機器」,讓它逐步發展出自己的概念。
中文房間:最持久的反駁#
1980 年哲學家賽爾(John Searle)提出中文房間(Chinese Room)思想實驗:一個不懂中文的英語使用者在房間裡照著一本龐大的規則手冊回應中文字符——他能令外界以為他懂中文,但他自己毫無理解、毫無意向。
圖靈測驗與其反駁,至今仍是認知科學中最被爭辯的議題。一種對賽爾的回應是:即使房內的「人」不懂中文,整個系統(人+手冊+資料)作為一個整體可能仍懂中文。沒有定論。
圖靈的悲劇結局#
1952 年 1 月 BBC 電視辯論中,主持人 Braithwaite 與哲學家 Newman、腦外科醫師 Jefferson 不斷以「性慾與情感」為例論證機器無法思考,Jefferson 甚至說「除非看到機器去摸另一台母機器的腿,我才會相信它在思考」。一向低調自己同性戀身分的圖靈,在這段沉默無語。
錄影前後,圖靈與一位 19 歲的曼徹斯特街頭青年發展短暫關係。住處遭其友人闖空門後,他向警方報案時無意中透露關係,被以「嚴重猥褻(gross indecency)」起訴。1952 年 3 月:
- 認罪但拒絕悔過;Max Newman 出庭作證
- 被剝奪安全許可
- 接受為期一年的雌激素荷爾蒙注射「治療」,用以抑制其性慾——彷彿他自己被當作一台「化學控制的機器」
1954 年 6 月 7 日,圖靈在床上以氰化物注射過的蘋果咬下而身亡。床邊半顆蘋果,嘴角的泡沫——朋友記得他向來喜歡《白雪公主》中皇后蘸毒的那一幕。
那是一台機器會做的事嗎?

1948 年貝爾實驗室合照中的巴丁(John Bardeen, 1908–91)、蕭克利(William Shockley, 1910–89)與布拉頓(Walter Brattain, 1902–87)

貝爾實驗室的第一顆電晶體
