1999 Frederick Brooks —— 「沒有銀彈」的軟體本質論#
「他管理了 IBM System/360 這個史上最龐大的硬體+軟體專案, 然後寫了一本關於專案為什麼會遲到的書。五十年來, 沒有人能推翻他的結論。」
案件檔案#
| 項目 | 內容 |
|---|---|
| 得主 | Frederick P. Brooks, Jr. (1931–2022) |
| 得獎理由 | 電腦架構、作業系統與軟體工程的里程碑貢獻(System/360 與 OS/360) |
| 關鍵詞 | System/360、《人月神話》、本質複雜性 |
前因#
1960s 初,IBM 面臨產品線爆炸:1401、7090、Stretch…… 每台機器各有指令集、各有 OS,客戶換機即重寫一切。 謎題:如何用一套架構統治所有價位與規模的機器?
線索與推理#
線索一:System/360(1964)—— 相容性的發明#
決策:全系列共用同一指令集架構(ISA)與字元編碼(EBCDIC)
低階機器微程式模擬高階指令(Wilkes 1967 案的微碼思想)
「家族」概念誕生:今天的 x86/ARM 家族即其直系
代價:OS/360 有 5000 人年投入、數千件錯誤報告。Brooks 後 自嘲:「把熊掉進陷阱裡的是我。」此痛催生《人月神話》 (1975)。
線索二:Brooks 定律#
為延誤的專案增加人手,只會更加延誤。
推理鏈:溝通成本 = n(n−1)/2 條通道,隨人數平方增長; 而培訓新人的成本由老人支付 → 邊際產出遞減為負。
線索三:沒有銀彈(1986)#
軟體的困難分兩層:
| 層 | 性質 | 能否消除 |
|---|---|---|
| 本質(essence) | 問題概念結構的複雜性、不可見性、可變性 | 不可 |
| 偶然(accident) | 工具、語法、平台造成的摩擦 | 可(且已被大幅消除) |
高階語言、IDE、OO 已把偶然複雜性削掉大半,進步空間 只剩本質部分——故無單一技術能帶來數量級提升。 40 年後的檢驗:敏捷、微服務、AI 輔助編程皆改善「協調」 與「偶然」,本質複雜性依舊。
理論評析#
Brooks 的深層貢獻是把管理問題數學化:
生產力 P ≈ f(個體能力) / g(n²) 溝通項
概念完整性 > 功能完整性 → 「外科手術團隊」組織模式
「概念完整性」應由單一設計心智擁有(architect 制)
與 Dijkstra(1972 案)、Wirth(1984 案)同屬「複雜性 是頭號敵人」陣營,但 Brooks 把戰場放在組織與人。
後果#
- 軟體工程從「寫程式技巧」升級為「系統與組織科學」。
- ISA 相容性的商業模式(向後相容)統治晶片產業至今 (2017 案)。
關聯案件#
→ 1967-Maurice-Wilkes與EDSAC及微程式、1984-Niklaus-Wirth與Pascal語言、1983-Ritchie-Thompson與UNIX作業系統