说明:本笔记来自于"Linux/Unix设计思想"
unix哲学准则
-
小即是美
-
让每一个程序只做好一件事情
-
尽快建立原型
-
舍高效而取可移植性
-
适用纯文本来存储数据
-
充分利用软件的杠杆效应
-
使用shell脚本来提高杠杆效用和可移植性
-
避免强制性的用户界面
-
让每一个程序都成为过滤器
unix 哲学10条次要准则
-
允许用户定制环境
-
尽量使操作系统内核小而轻巧
1)降低数据复制修改的次数 2)加快任务在用户空间的激活速度
-
使用小子字母,并尽量保持简短
1)原因: 首先,小写字母看起来更轻松 其次,小写有向上伸和往下伸两种形状,阅读的时候能够给眼睛传递一些智能提示。 2)其他: * unix常用命令和文件名采用的都是小写 * README是一种例外,用大写表达视觉提示,优先阅读此文件(因为大写的ascii码都排在前面) * unix文件名通常都很短,使用首字母缩写 * 采用较短的名称可以在命令行包含更多的命令
-
保护树木(这里只环保的意思,比如在线处理而非纸质打印)
-
沉默是金
1)错信息写入log文件 2)更好地输出到管道配合其他工具处理,避免错误信息的干扰。
-
并行思考
1)分解成多个子任务并行运行,最大化CPU运算性能 2)也便于多台机器集群
-
各部分之和大于整体
将小型组建组合在一起,构成继承行的应用程序
-
寻找90%的解决方案
1)满足用户90%的需求 2)90%解决方案的精髓在于,需要故意忽略那些代码高昂,费时费力难以执行的项目。 3)舍去棘手的10%,可以轻而易举解决时世界上绝大多数问题
-
更坏就是更好
1)三种处理事情的方法: a. 正确的方法 b. 错误的方法 c. 军事方法:与错误方法互逆,看起来像是错误的做事方式,却在不知不觉中获得空前成功 unix "更坏的"就属于第三种,因为事情均有两面性,把自己家的优势发挥到极致 2)良好的设计应该具备4个特点 简洁、正确、一致、完整
-
层次化思考(比如目录结构)
1)早期的操作系统文件和各个目录都放在同一级别 2)用层次结构组织其他元件,比如unxi的任务、进程(父进程、子进程) 3)自然界的普遍分层哲学
让UNIX只做好一件事
-
只有将unix的准则集成在一起,才会显得博大精深,它们相辅相成。
"合则立,分则垮"
-
小程序应该保持它的专注力,功能定义明确,不被细枝末节模糊功能本身
-
软件从来都是完不成的,只会被发布出来
-
采用只做好一件事的小程序来构建原型,事情会容易很多
-
构建原型的时候应该舍效率而取可移植性
可移植性数据应该和可以移植性应用程序齐头并进