[心得]AUP Unix编程艺术知识整理

一、哲学

Unix哲学:
一个程序只做好一件事
程序要能处理文本流

归纳起来一句话:
Kiss:keep it simple,stupid

展开是以下原则:

1.模块单一职责:编程本质是控制复杂度,新闻服务端模块化就是这样一种例子
2.清晰胜于机巧
3.策略同机制分离,接口同引擎分离,MVC就是这样一个例子
4.简洁至上
5.设计考虑过滤器拼接组合,serving模块里面process设计就是这样一个例子
6.慎写大程序
7.设计要可见
8.健壮缘于可见和简洁
9.把知识叠入数据以求逻辑质朴而健壮
10.选项遵循常识习惯:最少立异。c++不重载常见运算符
11.保持输出交互清爽
12.出现异常,马上退出并给出足够错误信息,宽容接收,谨慎发出。现在的程序加上了异常处理,不会马上退出,但会进行异常处理
13.程序员时间比机器时间宝贵
14.避免手工hack,让代码去干基础的活
15.先建能运转起来的模型,而不是上来就码代码追求产出
16.考虑多语言,开放可扩展和移植性

转到UNIX实践,看以下几条:

  1. 尽可能做成上下游无关的过滤器
  2. 数据流文本可视化可序列化以及反序列化
  3. 数据库部署和应用协议文本化
  4. 前端和后端分离
  5. 先让原型运转
  6. 尽可能降低复杂度 宽收严发 过滤保持最少损耗
  7. 模块单一职责

二、实践

Unix文本格式常用约定

  1. 一行一条记录
  2. 一行尽可能不超过80字符
  3. 使用#注释
  4. 支持反斜杠约定
  5. 冒号或者连续空白作分隔符
  6. 不严格区分tab和whitespace
  7. 使用16进制表示数值
  8. 不要对文件的一部分进行压缩或者二进制编码

Unix从-a 2 -z的命令行选项常用含义

  1. -a 所有项
  2. -b 缓冲区或者块的大小
  3. -c 参数选项
  4. -d 调试
  5. -D define
  6. -e 执行或者编辑
  7. -f 文件或者强制
  8. -h 表头或者帮助
  9. -i 初始化或者交互
  10. -I 包含
  11. -k 保留
  12. -l 列表或者加载,登陆
  13. -m 消息
  14. -n 数字或者否定
  15. -o 输出
  16. -p 端口或者协议
  17. -q 安静
  18. -r 递归
  19. -s 静音或者主题
  20. -t 标记
  21. -u 用户
  22. -v 显示输出过程或者版本
  23. -V 版本
  24. -w 宽度或者警告
  25. -x启用调试
  26. -y 确认
  27. -z 启用压缩

Unix接口常用设计模式

  1. 过滤器模式 例子:grep/cat
  2. cantrip模式:无入无出,只被调用一次,产生退出状态码 例子:clear/rm/touch
  3. 源模式:无入有出 例子:ls/ps
  4. 阱模式:无出有入 例子:lpr/spooler
  5. 编译器模式:无入,无标准输出,但有错误输出 例子:cc/gcc
  6. ed模式:启动传入控制信息,同数据分离,之后与用户交互
  7. roguelike模式:通常单键触发而且不回显发出的命令,每项一行,带有模式行 例子:vim
  8. 引擎和接口分离模式:例子 MVC
  9. CLI服务器模式:前端出发,有界面io 例子:POP和http服务器

各主流语言优缺点点评

  1. C 优点:最接近硬件效率的高级语言 缺点:内存管理
  2. C++ 优点:编译效率,OO和STL,范型 缺点:非常复杂
  3. shell 优点:小清新 缺点:大了不好移植
  4. python 优点:清新易读好上手 缺点:低效
  5. java 优点:内存管理 缺点:效率比C/C++略逊

你可能感兴趣的:(技术笔记)