第1章Unix哲学:集思广益的智慧
1.1NIH综合征
1.2Unix的开发
1.3Linux:一个人加上一百万人的智慧
1.4Unix哲学概述
第2章人类的一小步
2.1准则1:小即是美
2.2简化软件工程
2.2.1小程序易于理解
2.2.2小程序易于维护
2.2.3小程序消耗的系统资源较少
2.2.4小程序容易与其他工具相结合
2.3关于“昆虫”的研究
2.4准则2:让每一个程序只做好一件事
第3章快速建立原型的乐趣和好处
3.1知识与学习曲线
3.1.1事实上,每个人有自己的学习曲线
3.1.2大师们也知道,变化不可避免
3.1.3为什么软件会被称为“软件”
3.2准则3:尽快建立原型
3.2.1原型的建立是学习的过程
3.2.2建立早期原型能够降低风险
3.3人类创造的三个系统
3.4人类的“第一个系统”
3.4.1在背水一战的情况下,人类创建了“第一个系统”
3.4.2没有足够的时间将事情做好
3.4.3“第一个系统”是单枪匹马或是一小群人开发的
3.4.4“第一个系统”是一个“精简、其貌不扬的计算机器”
3.4.5“第一个系统”的概念可以激发他人的创造力
3.5人类的“第二个系统”
3.5.1“专家”使用“第一个系统”验证过的想法来创建“第二个系统”
3.5.2“第二个系统”是由委员会设计的
3.5.3“第二个系统”臃肿而缓慢
3.5.4“第二个系统”被大张旗鼓地誉为伟大的成就
3.6人类的“第三个系统”
3.6.1“第三个系统”由那些为“第二个系统”所累的人们创建
3.6.2“第三个系统”通常会改变“第二个系统”的名称
3.6.3最初的概念保持不变并显而易见
3.6.4“第三个系统”结合了“第一个系统”和“第二个系统”的最佳特性
3.6.5“第三个系统”的设计者有充裕的时间将任务做好
3.7Linux既是“第三个系统”,又是“第二个系统”
3.8建立“第三个系统”
第4章可移植性的优先权
4.1准则4:舍高效率而取可移植性
4.1.1下一……的硬件将会跑得更快
4.1.2不要花太多时间去优化程序
4.1.3最高效的方法通常不可移植
4.1.4可移植的软件还减少了用户培训的需求
4.1.5好程序永不会消失,而会被移植到新平台
4.2准则5:采用纯文本文件来存储数据
4.2.1文本是通用的可转换格式
4.2.2文本文件易于阅读和编辑
4.2.3文本数据文件简化了Unix文本工具的使用
4.2.4可移植性的提高克服了速度的不足
4.2.5速度欠佳的缺点会被明年的机器克服
第5章软件的杠杆效应
5.1准则6:充分利用软件的杠杆效应
5.1.1良好的程序员编写优秀代码,优秀的程序员借用优秀代码
5.1.2避免NIH综合征
5.1.3允许他人使用你的代码来发挥软件杠杆效应
5.1.4将一切自动化
5.2准则7:使用shell脚本来提高杠杆效应和可移植性
5.2.1shell脚本可以带来无与伦比的杠杆效应
5.2.2shell脚本还可以充分发挥时间的杠杆效应
5.2.3shell脚本的可移植性比C程序更高
5.2.4抵制采用C语言来重写shell脚本的愿望
第6章交互式程序的高风险
6.1准则8:避免强制性的用户界面
6.1.1CUI假定用户是人类
6.1.2CUI命令解析器的规模庞大且难以编写
6.1.3CUI偏好“大即是美”的做法
6.1.4拥有CUI的程序难以与其他项目相结合
6.1.5CUI没有良好的扩展性
6.1.6最重要的是,CUI无法利用软件的杠杆效应
6.1.7“CUI有什么关系?人们都不愿意打字了。”
6.2准则9:让每一个程序都成为过滤器
6.2.1自有计算技术以来,人们编写的每一个程序都是过滤器
6.2.2程序不创建数据,只有人类才会创建数据
6.2.3计算机将数据从一种形式转换成另一种
6.3Linux环境:将程序用作过滤器
第7章更多Unix哲学:十条小准则
7.1允许用户定制环境
7.2尽量使操作系统内核小而轻量化
7.3使用小写字母并尽量简短
7.4保护树木
7.5沉默是金
7.6并行思考
7.7各部分之和大于整体
7.8寻求90%的解决方案
7.9更坏就是更好
7.10层次化思考
第8章让Unix只做好一件事
第9章Unix和其他操作系统的哲学
9.1雅达利家用电脑:人体工程的艺术
9.2MS-DOS:七千多万用户的选择不会错
9.3VMS系统:Unix的对立面
第10章拨开层层迷雾:Linux与Windows的比较
10.1内容为王,傻瓜
10.1.1视觉内容:“用自己的眼睛去看。”
10.1.2有声内容:“听得到吗?”
10.1.3文字内容:“视频可以终结广播明星,却消灭不了小报。”
第11章大教堂?多怪异
第12章Unix的美丽新世界