最近在学习《unix编程艺术》。第一章非常不错,讲了很多Unix的历史,哲学基础,其中最重要的是提到的十七条设计原则。很多原则自己也知道,但是从来没有总结的如此详细深刻。
下面的内容大部分来自《unix编程艺术》这本书,少部分是我的一些理解。这是我读书的一个习惯,对于我认为重要的,我会把它打出来,在打字的过程中我会根据深入的思考理解。所以,笔记对我来说是一个思考和记忆的辅助手段。
9、 表示原则:把知识叠入数据以求逻辑质朴而健壮
即使最简单的程序逻辑让人类来验证也很困难,但是就算是很复杂的数据,对人类来说,还是相对容易地就能够推导和建模的。
数据比编程逻辑更容易驾驭。在复杂数据和复杂代码中选择,宁可选择前者。在设计中,你应该主动的将代码的复杂度转移到数据中去。
Rob Pick讲到的第五个原则:
数据压倒一切。如果你已经选择了合适的数据结构并且把一切都组织得井井有条,正确的算法也就不言自明。编程的核心是数据结构,而不是算法。
10、 通俗原则:接口设计避免标新立异
也就是众所周知的“最少惊奇原则”。
最易用的程序就是用户学习新东西最少的程序。
另一个方面是避免表象相同而实际却略有不同,这会及其危险。最好让不同事物有明显区别,而不要看起来几乎一模一样。
11、 缄默原则:如果一个程序没有什么好说的,就保持沉默
“简洁是Unix的核心风格。重要的数据不应该混杂在冗长的程序内部行为信息中。”
12、 补救原则:出现异常时,马上退出并给足异常信息
软件要尽可能从容的应付各种错误输入和自身的运行错误。但是,如果做不到这一点,就让程序尽可能以一种容易诊断错误的方式终止操作。
对于协议:要宽进严出。
13、 经济原则:宁花机器一分,不花程序员一秒
应该采用更加高级的语言,让程序员从自习管理内存的负担重解放出来。
14、 生成原则:避免手工hack,尽量编写程序去生成程序
也就是教会机器去做更多低层次的编程工作。
一个方向就是DSL。
15、 优化原则:雕琢前先得有原型,跑前先学会走
过早优化时万恶之源,他会损害设计。
先给你的设计做个未优化的,运行缓慢的,很耗内存但是正确的实现,然后向进行系统调整,寻找那些可以牺牲最小的局部的简洁性而获得较大的性能提升的地方。
16、 多样原则:决不相信所谓的“不二法门”的断言
即使最出色的软件也常常会受限于设计者的想象力。
Unix奉行的是广泛采用多种语言、开发的可扩展机制和用户定制机制。
17、 扩展原则:设计着眼未来,未来总比预想快
设计协议或者文本格式时,应使其具有充分的自描述性以便扩展。
设计代码是,要有很好的组织,让将来的开发者增加新功能时无需拆毁或重建整个架构。
Unix哲学一言以蔽之:
KISS原则:Keep It Simple,stupid!
态度:
如果不确定什么是对的,那么就只做最少量的工作,确保完成任务就行,直到明白什么是对的。
软件设计是一门技艺。
我们应该不断追求卓越。
不要重复制造轮子。
善用工具,尽可能将一切都自动化。
下一步计划:
以前粗略的翻过这本书,一位是介绍Unix操作系统的。现在详细看看,原来就是介绍unix设计思想的,而且紧紧的围绕上面的原则。
这本书非常适合现在的我,因为我一看就爱不释手。所以决定最近系统的学习一下。先从数据驱动编程开始,这一块我有些经验,正好可以系统整理一下。
unix设计十七条原则之二(unix编程艺术笔记)
最新推荐文章于 2020-06-24 23:53:55 发布