Multics 計畫夭折後的廢墟:湯普森在 PDP-7 上寫出太空旅行遊戲#
Multics:一座夢想中的數位巴別塔#
1964 年,MIT 的 Project MAC 與奇異公司(GE)、貝爾實驗室簽下三方合作協議,啟動 Multics(MULTiplexed Information and Computing Service)——史上最雄心勃勃的作業系統計畫。它的願景承襲 McCarthy 的「電腦公用事業」:一台 GE 645 主機像發電廠一樣,同時為波士頓全城數百名使用者提供可靠的互動運算。Multics 的技術清單在當年如同科幻:連續的虛擬記憶體(單一地址空間,檔案即記憶體)、階層式檔案系統、動態連結、以 PL/I 撰寫的系統、完整的安全分級(後來成為美國軍方 B 級安全認證的唯一系統)。
貝爾實驗室派出的團隊中,有一位 26 歲、剛在柏克萊拿到電機碩士的 Ken Thompson。他參與 Multics 的 I/O 子系統,親身浸潤於「一切皆檔案」與虛擬記憶體的先進思想——Multics 教會他的不是代碼,而是品味。
失敗的解剖:為什麼 Multics 會倒#
到 1968 年,Multics 的症狀已無法忽視:
- 工程災難:系統規模失控,PL/I 編譯器本身難產,團隊在開發「開發工具」上耗掉數年。首個能用的版本 1969 年才勉強運行,且效能遠低於承諾。
- 經濟崩塌:GE 的電腦部門連年虧損,1970 年把整個主機事業賣給 Honeywell;Project MAC 的經費開支引發 ARPA 內部質疑。Fernando Corbató 後來坦承,Multics 試圖「同時為所有人做所有事」,犯了系統設計的大忌。
- 制度斷裂:貝爾實驗室的資訊研究部內部對是否續留出現分裂。1969 年初,實驗室正式退出 Multics 計畫。AT&T 隨即把參與的工程師收編回其他業務。
1969 年春天,貝爾實驗室的 Multics 老兵們——Thompson、Dennis Ritchie、Joseph Ossanna、Rudd Canaday——守著一台 GE-635 模擬終端,失去了自己的機器。歷史的關鍵時刻往往始於失落的情緒。
廢墟上的太空旅行:一週之內的創世#
Thompson 手上有個煩惱:他寫的太空旅行(Space Travel)遊戲,原本跑在 Multics 與 GECOS 系統上,如今玩一局要付大約 50-75 美元的機時費(GECOS 是批次系統,互動體驗極差)。他打聽到部門角落有一台被閒置的 PDP-7——1964 年出品、18 位元字組、4K words 記憶體、價值約 7.2 萬美元的迷你電腦,原本買來給聲學實驗,如今無人問津。
1969 年夏天,Thompson 在紙上設計了一個精簡的檔案系統與分時核心,然後開始了軟體史上著名的自舉(bootstrapping):
flowchart LR
A[Space Travel 遊戲<br/>需要互動機器] --> B[閒置 PDP-7<br/>4K words]
B --> C[第1週:<br/>紙上設計+核心+檔案系統+組譯器]
C --> D[組譯器→編輯器→自我滋生]
D --> E[1969.8:遊戲與系統<br/>同時跑起來]
E --> F[Brian Kernighan 命名<br/>Unics→UNIX]Thompson 後來回憶,他在妻子 Bonnie 帶著兒子回加州探親的那一週,密集寫出了核心、檔案系統與組譯器。「一週內做出核心、殼與編輯器」——這段逸事經 Dennis Ritchie 與他本人多次確認,成為軟體史的傳奇注腳。系統逐漸自我滋生:有了組譯器就能寫編輯器,有了編輯器就能改系統。遊戲是動機,系統是副產品——歷史在此開了一個美麗的玩笑。
為什麼是廢墟孕育了偉大:三個歷史條件#
UNIX 在 Multics 的廢墟上誕生,並非偶然,三個條件缺一不可:
1. 反面教材的價值。 Multics 的教訓被濃縮成設計戒律:不要為所有人做所有事。Thompson 的新系統只有兩個目標使用者(他自己與 Ritchie)、三個功能(檔案、行程、殼)。後世稱此為「反向需求工程」——先知道什麼不做,才知道什麼該做。
2. 貝爾實驗室的自由文化。 1956 年同意判決禁止 AT&T 賣軟體(見 1.2 節),實驗室對工程師的私房專案極度寬容。Thompson 借走閒置機器、Unix 以「文字處理工具」的名義向部門申請一台 PDP-11(1970 年,部門要買機器處理專利文件,Thompson 提議讓 UNIX 成為文字處理系統)——官僚體制的縫隙,正是新事物的產房。
3. 團隊的品味已被 Multics 養成。 虛擬記憶體、階層檔案、統一 I/O——這些 Multics 的思想以「極簡版」的形式在新系統中重生。Ritchie 後來的總結精準無比:UNIX 不是對 Multics 的否定,而是「把 Multics 的精華裝進 32K 記憶體」。新系統故意自嘲命名為 Unics(後拼作 UNIX),意即「閹割版 Multics」。
從遊戲到憲法:一段因果鏈的起點#
1970 年,PDP-11 到貨;1971 年 11 月,第一版 UNIX 手冊(First Edition)印行,系統已具備 fork、管道的前身與完整檔案系統;1972-73 年,Ritchie 的 C 語言成熟,UNIX 被完整重寫為 C。1999 年,Thompson 與 Ritchie 獲頒美國國家技術獎章,2000 年兩人再獲圖靈獎(1983)。頒獎詞與眾多紀念文都會回到同一個起點:1969 年那個夏天,一個工程師想在自己的機器上玩一局太空遊戲。
歷史的因果鏈從未斷裂:Multics 的野心孕育了失敗,失敗提煉了品味,品味撞上了閒置的 PDP-7,而遊戲的樂趣點燃了系統。今日全球數十億台 Android 手機、數百萬台雲端伺服器的核心,血緣上都可回溯到那台 4K 記憶體的小機器——文明最偉大的憲法,有時起草於廢墟之中。