《Linux/Unix設計思想》
第1章 Unix哲學:集思廣益的智慧 1
1.1 NIH綜合征 2
1.2 Unix的開發 2
1.3 Linux:一個人加上一百萬人的智慧 4
1.4 Unix哲學概述 5
第2章 人類的一小步 9
2.1 準則1:小即是美 10
2.2 簡化軟件工程 12
2.2.1 小程序易于理解 12
2.2.2 小程序易于維護 13
2.2.3 小程序消耗的系統資源較少 14
2.2.4 小程序容易與其他工具相結合 15
2.3 關于“昆蟲”的研究 16
2.4 準則2:讓每一個程序只做好一件事 16
第3章 快速建立原型的樂趣和好處 19
3.1 知識與學習曲線 19
3.1.1 事實上,每個人有自己的學習曲線 20
3.1.2 大師們也知道,變化不可避免 21
3.1.3 為什么軟件會被稱為“軟件” 21
3.2 準則3:盡快建立原型 23
3.2.1 原型的建立是學習的過程 24
3.2.2 建立早期原型能夠降低風險 24
3.3 人類創造的三個系統 25
3.4 人類的“第一個系統” 26
3.4.1 在背水一戰的情況下,人類創建了“第一個系統” 26
3.4.2 沒有足夠的時間將事情做好 26
3.4.3 “第一個系統”是單槍匹馬或是一小群人開發的 26
3.4.4 “第一個系統”是一個“精簡、其貌不揚的計算機器” 27
3.4.5 “第一個系統”的概念可以激發他人的創造力 28
3.5 人類的“第二個系統” 29
3.5.1 “專家”使用“第一個系統”驗證過的想法來創建“第二個系統” 29
3.5.2 “第二個系統”是由委員會設計的 30
3.5.3 “第二個系統”臃腫而緩慢 31
3.5.4 “第二個系統”被大張旗鼓地譽為偉大的成就 32
3.6 人類的“第三個系統” 32
3.6.1 “第三個系統”由那些為“第二個系統”所累的人們創建 32
3.6.2 “第三個系統”通常會改變“第二個系統”的名稱 33
3.6.3 最初的概念保持不變并顯而易見 33
3.6.4 “第三個系統”結合了“第一個系統”和“第二個系統”的最佳特性 34
3.6.5 “第三個系統”的設計者有充裕的時間將任務做好 34
3.7 Linux既是“第三個系統”,又是“第二個系統” 34
3.8 建立“第三個系統” 35
第4章 可移植性的優先權 39
4.1 準則4:舍高效率而取可移植性 40
4.1.1 下一……的硬件將會跑得更快 41
4.1.2 不要花太多時間去優化程序 42
4.1.3 最高效的方法通常不可移植 43
4.1.4 可移植的軟件還減少了用戶培訓的需求 45
4.1.5 好程序永不會消失,而會被移植到新平臺 45
4.2 準則5:采用純文本文件來存儲數據 48
4.2.1 文本是通用的可轉換格式 49
4.2.2 文本文件易于閱讀和編輯 49
4.2.3 文本數據文件簡化了Unix文本工具的使用 49
4.2.4 可移植性的提高克服了速度的不足 51
4.2.5 速度欠佳的缺點會被明年的機器克服 52
第5章 軟件的杠桿效應 55
5.1 準則6:充分利用軟件的杠桿效應 57
5.1.1 良好的程序員編寫優秀代碼,優秀的程序員借用優秀代碼 57
5.1.2 避免NIH綜合征 58
5.1.3 允許他人使用你的代碼來發揮軟件杠桿效應 61
5.1.4 將一切自動化 62
5.2 準則7:使用shell腳本來提高杠桿效應和可移植性 64
5.2.1 shell腳本可以帶來無與倫比的杠桿效應 65
5.2.2 shell腳本還可以充分發揮時間的杠桿效應 67
5.2.3 shell腳本的可移植性比C程序更高 68
5.2.4 抵制采用C語言來重寫shell腳本的愿望 69
第6章 交互式程序的高風險 72
6.1 準則8:避免強制性的用戶界面 74
6.1.1 CUI假定用戶是人類 76
6.1.2 CUI命令解析器的規模龐大且難以編寫 77
6.1.3 CUI偏好“大即是美”的做法 78
6.1.4 擁有CUI的程序難以與其他項目相結合 79
6.1.5 CUI沒有良好的擴展性 80
6.1.6 最重要的是,CUI無法利用軟件的杠桿效應 80
6.1.7 “CUI有什么關系?人們都不愿意打字了。” 81
6.2 準則9:讓每一個程序都成為過濾器 82
6.2.1 自有計算技術以來,人們編寫的每一個程序都是過濾器 82
6.2.2 程序不創建數據,只有人類才會創建數據 83
6.2.3 計算機將數據從一種形式轉換成另一種 84
6.3 Linux環境:將程序用作過濾器 84
第7章 更多Unix哲學:十條小準則 88
7.1 允許用戶定制環境 89
7.2 盡量使操作系統內核小而輕量化 90
7.3 使用小寫字母并盡量簡短 91
7.4 保護樹木 93
7.5 沉默是金 94
7.6 并行思考 95
7.7 各部分之和大于整體 97
7.8 尋求90%的解決方案 99
7.9 更壞就是更好 100
7.10 層次化思考 102
第8章 讓Unix只做好一件事 105
第9章 Unix和其他操作系統的哲學 113
9.1 雅達利家用電腦:人體工程的藝術 114
9.2 MS-DOS:七千多萬用戶的選擇不會錯 117
9.3 VMS系統:Unix的對立面 119
第10章 撥開層層迷霧:Linux與Windows的比較 123
10.1 內容為王,傻瓜 126
10.1.1 視覺內容:“用自己的眼睛去看。” 128
10.1.2 有聲內容:“聽得到嗎?” 129
10.1.3 文字內容:“視頻可以終結廣播明星,卻消滅不了小報。” 131
第11章 大教堂?多怪異 143
第12章 Unix的美麗新世界 153