跳到主要内容

UNIX编程艺术

哲学

unix 之失

Unix文件在字节层次以上再无结构可言。文件删除了就没法恢复。

Unix的安全模型公认地太过原始。

作业控制有欠精致。

命名方式非常混乱。

或许拥有文件系统本身就是一个错误。

X 致力于提供 一套“机制,而不是策略”

设计的信念:最终用户永远比操作系统设计人员更清楚他们究竟需要什么。

因为“用错误的方式解决正确的问题总比用正确的方法解决错误的问题好”。

unix 哲学基础

  1. 模块原则
  2. 清晰原则 // 代码是给人看的。优雅而清晰的代码不仅不容易崩溃,更容易让后来者理解 。
  3. 组合原则 (如果程序彼此之间不能有效通信,那么软件就难免会陷入复杂度的泥淖)
  4. 分离原则 (实现同设计分离,接口同引擎分离-前端、后端)
  5. 简洁原则
  6. 吝啬原则 (除非别无它法,不要编写庞大的程序)
  7. 最小原则
  8. 透明原则 (设计要可见,透明性-知道要做啥,显见性-自带监视和显示 内部状态的功能)
  9. 健壮原则 (健壮源于简洁与透明)
  10. 表示原则 (将知识叠入数据,以求逻辑质朴而健壮)
  11. 通俗原则 (最易用的程序是让用户需要学习最少的东西)
  12. 缄默原则 (如果一个程序没什么好说的,就保护沉默,想象一下,早期字符终端,启动时刷屏,什么都有,什么都没有)
  13. 补救原则
  14. 经济原则 宁花机器一分,不花程序员一秒
  15. 生成原则 (让程序生成程序)
  16. 优化原则 (先走会跑)
  17. 多样原则
  18. 扩展原则
  19. 态度

历史

1969-1995

1980 uucp --> usenet

​ sun 公司,unix 商业化造成源码贡献的枯竭,差异化和碎片化

开发者、工程师市场,商用 、家用市场

Larry Wall patch 实用程序 ,让1990 的协作开发成为可能 。 Perl

1985 intel 386 4G memory

1985 GNU

1991 linus Torvalds

1993-1994 互联网大爆炸

1998 开源运动

教训

在Unix历史中,最大的规律就是:距开源越近就越繁荣。任何将Unix专有化的企图,只能陷入停滞和衰败。

另一个教训是:别和低价而灵活的方案较劲。或者,换句话说,低档的硬件只要数量足够,就能爬上性能曲线而最终获胜。

最后,旧学派的Unix社区因采用了传统的公司组织、财务和市场等命令机制而最终未能实现“职业化”。只有痴迷的“极客”和具有创造力的怪人结成的反叛联盟才能把我们从愚蠢中拯救出来——他们接着教导我们,真正的专业和奉献精神,正是我们在屈服于世俗观念的“合理商业做法”之前的所作所为。

比较

如果你不知道怎样表现得高人一等,找个Unix用户,让他做给你看。

5 文本化

INI 格式

unix 文件格式约定

  • 一行一记录
  • 每行不超 80 字符
  • "# " 注释
  • : 分隔
  • \ 转义
  • HEX First
  • no tab , white space
  • 记录多行 节格式 %%\n

应用协议设计实例分析-SMTP

应用协议设计实例分析-POP3

应用协议设计实例分析-IMAP

18 文档概念

20 Plan 9

但是在2003年,看起来Plan 9的失败仅仅是它的改进尚不足以取代它的前任。对比Plan 9,Unix似乎明显嘎吱作响,锈迹斑斑,但是 Unix 的工作完成得很棒足以保持它的地位。这是个教训,提示雄心勃勃的系统架构师:更优秀解决方案的最危险敌人,就是一个现存的、足够优秀的代码库。

无名师的Unix心传