UNIX编程艺术-读书笔记(1)

UNIX的哲学

1、模块原则:多数问题只会局限于某个局部,那么就还有希望对局部进行该井而不至于牵动全身。

2、清晰原则:为了取得程序一丁点的性能提升就大幅度增加技术的复杂性和晦涩性,这个买卖做不得(容易bug,不容易读)永远不要吃力的去读一段晦涩的代码三次。

3、组合原则:如果程序不使用简单的文本输入输出流,他们就很难衔接。程序彼此要独立,替换一个程序而完全不会影响其他程序。以一点点的格式解析的代价去换取可以使用通用工具来构造或者解读数据流的好处是值得的。

4、分离原则:策略与机制分离,接口与引擎分离。策略和机制是按照不同的时间尺度变化的,策略的变化永远要比机制快,GUI工具包的观感时尚来去匆匆,而光栅操作和组合却是永恒的。

实现剥离的一个方法是使用一个包含c服务程序的库,而程序的控制流程则用脚本来粘合(Emacs);另一个方法是分成可以协作的前端和后端进程,通过套接字通讯。(好像是x-window)。

5、简洁原则:抵制任何用过多噱头来粉饰程序。

6、吝啬原则:非必要情况下不要写庞大程序(体积,复杂度)(软件的最佳大小?)

7、透明性原则:设计程序时要考虑透明性(程序的目的及实现)与显见性(内部状态可见)。设置调试选项。

8、健壮原则:超出设计者设想时也能运行良好。让程序内部逻辑更容易理解。考虑承受极端大量输入。

9、表示原则:即使最简单的程序逻辑让人类来验证也是很困难的,但是就算是很复杂的数据,对人类来说,还是相对容易就能够推导与建模的。在设计中,主动的将代码的复杂度转移到数据之中去。

10、通俗原则:最易用的程序就是用户需要学习新东西最少的程序。接口的设计应避免标新立异。反之,不同功能的程序应该避免使用相似的功能接口。

11、缄默原则:(来源:60-70年代缓慢的打印终端)可能要在管道中使用,因此不要乱输出没有意义的内容

12、补救原则:宽容的收,谨慎的发

13、经济原则:应在大多数场合使用高一级的语言,摆脱自行管理内存的负担。

14、生成原则:代码生成器。Parser, lexer, makefile

15、优化原则:过早的优化是万恶之源。过早的局部优化会妨碍全局优化,从而降低整体性能。先制作原型,在精雕细琢,优化之前应该确保能用。运行->正确->快。(最强大的优化工具恐怕就是delete键了)

16、多样原则:设计一个僵化,封闭,不愿与外界沟通的程序,简直就是一种病态的傲慢。(多种语言,开放可扩展,用户可定制)。

17、扩展原则:设计着眼未来。要为数据格式和代码留下可扩展的空间。稍微增加一点让数据部署具有自描述性的开销,就可以在无需破坏整体的情况下进行扩展。(什么叫做自描述性?)

 

总的来说unix哲学就是K.I.S.S.(Keep It Simple, Stupid!)

 

要良好的运用unix哲学,就应该珍惜时间绝不浪费。一旦某人已经解决了某个问题,就直接拿来利用,不要让骄傲或偏见拽住了你又重做一遍。永远不要蛮干,要多用巧劲,省下力气到需要的时候再用,好钢要用到刀刃上。善用工具,尽可能将一切都自动化。

你可能感兴趣的:(linux)