UNIX 發展史 -- AI 偵探風格
以「推理探案」的方式,追查 Unix 與其後裔(BSD、Linux、GNU、Android、Docker)的每一步: 前因是什麼?線索在哪裡?推理如何展開?後果又如何改變了整個電腦科學與數位世界?
核心謎題只有一個:為什麼一個 1969 年的極簡系統,能統治 2026 年的手機、伺服器與雲端?
答案藏在 Unix 的四大發明中:
\[ \text{一切皆檔案} + \text{管道組合} + \text{可移植性(C)} + \text{開放原始碼} = \text{Unix 的不朽}. \]
案件卷宗(歷史年表)
誕生與奠基(1969–1978)
網路化與大分岔(1983–1989)
Linux 與自由軟體的勝利(1991–2003)
現代 Unix:口袋、雲端與全面相容(2008–2014)
每個新功能的「為何加上」總覽
| 年份 | 新功能 | 彌補的缺陷 | 理論基礎 |
| 1969 | 一切皆檔案、fork/exec | 每種設備一套專用 API;spawn 設計複雜 | 統一抽象、行程模型分解 |
| 1971 | inode、man page | 檔名與資料耦合;口說無憑 | 資料與索引分離、文件即規格 |
| 1973 | C 重寫、管道 | 組語不可移植;工具無法組合 | 機器無關層、串流與協程 |
| 1975 | vi、BSD 發行版 | ed 浪費終端機能力;單點維護 | 硬體驅動的介面革命 |
| 1978 | Bourne shell、awk | Thompson shell 無控制流;資料處理層缺位 | shell 即程式語言、模式掃描 |
| 1983 | TCP/IP、socket | 網路 API 五花八門;單機 OS 不夠 | 四元組連線模型、分層協定 |
| 1983 | GPL、GNU 工具 | 封閉 Unix 綁死使用者 | copyleft、軟體自由論 |
| 1987 | 微核心(MINIX) | 巨核心一錯全當 | 最小特權、訊息傳遞 |
| 1989 | POSIX、BSD 授權 | Unix 介面碎片化;GPL 嚇跑商業 | Liskov 代換、授權光譜 |
| 1991 | Linux(GPL 巨核心) | MINIX 不許成長;微核心太慢 | 網路協作、實用主義 |
| 1993 | 套件管理(APT 前身) | 手動安裝的依賴地獄 | 依賴圖 + 拓撲排序 |
| 2001 | 日誌式檔案系統 | ext2 當機後 fsck 數小時 | WAL 預寫日誌、ACID 原子性 |
| 2001 | Mac OS X 混合核心 | Mac OS 9 無保護、協作式多工 | Mach 微核心 + BSD 實用層 |
| 2008 | Android 雙層授權、Binder | 封閉行動 OS 授權費;IPC 太底層 | 沙箱隔離、物件導向 RPC |
| 2013 | Docker 容器 | VM 太重;環境不一致 | namespaces、cgroups、不可變基礎設施 |
| 2014 | systemd、WSL | init 序列啟動慢;Windows 無 POSIX | 依賴圖並行、socket 激活、宣告式 |
關鍵人物年表
| 年代 | 人物 | 貢獻 |
| 1969 | Ken Thompson / Dennis Ritchie | Unix 誕生、C 語言 |
| 1971 | Thompson / Ritchie / Ossanna | 第一版手冊、inode、troff |
| 1973 | Ritchie / McIlroy | C 重寫、管道 |
| 1975–78 | Bill Joy | vi、csh、BSD 發行 |
| 1978 | S. Bourne / Aho-Weinberger-Kernighan | Bourne shell、awk |
| 1983 | Bill Joy / Sam Leffler | 4.2BSD TCP/IP、socket |
| 1983 | Richard Stallman | GNU 計畫、GPL、GCC |
| 1987 | Andrew Tanenbaum | MINIX 微核心 |
| 1991 | Linus Torvalds | Linux 核心(2005 再創 Git) |
| 1993 | Ian Murdock / Theo de Raadt | Debian、OpenBSD/OpenSSH |
| 2001 | Steve Jobs / Rick Rashid | Mac OS X(NeXT + Mach + BSD) |
| 2003 | Stephen Tweedie | ext3 日誌式檔案系統 |
| 2008 | Andy Rubin | Android(Linux 核心) |
| 2013 | Solomon Hykes | Docker 容器 |
| 2014 | Lennart Poettering | systemd |
歷史的教訓(偵探結案陳詞)
- 極簡勝於雄心:Multics 數百萬行敗給 Unix 幾千行——「Do one thing well」是永恆定律。
- 介面統一勝於功能齊全:一切皆檔案(1969)、socket(1983)——統一介面讓組合成為可能。
- 可移植性是工程紀律:C 重寫(1973)、POSIX(1989)——把機器相關碼隔離到 1%。
- 開放原始碼是最強的行銷:AT&T 管制(1974)、GPL(1991)——流通自會放大。
- 理論與務實的辯證:微核心理論(1987)輸給 Linux 務實(1991)又贏回嵌入式市場——兩者各有戰場。
- 最老的元件最需要現代化:init(1969→2014 systemd)、檔案系統(1971→2003 ext3)——基礎服務的革命影響最深遠。