一、哲学

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++略逊

[心得]AUP Unix编程艺术知识整理相关推荐

  1. 【转载】Unix编程艺术——Unix哲学

    Unix编程艺术主要介绍了Unix系统领域中的设计和开发哲学.思想文化体系.原则与经验.此文大致摘录了Unix的哲学. web程序员也应该看看此书,软件开发和web开发很多地方都是相通的.看完之后,我 ...

  2. 读《UNIX编程艺术》随记

    2012-07-07 <UNIX编程艺术>这本书是人介绍的, 一看到这书的厚度,我有想打退堂鼓的冲动.好厚的说. 不过,听到可以不用细也可以,就硬着头接下这本书了. 先看它的书皮,一位师傅 ...

  3. Unix 哲学的一些原则——《Unix 编程艺术》

    Unix 哲学是在 Unix 先哲们和 Unix 本身所作出的榜样中体现出来的.可以概括为以下原则: 模块原则:使用简洁的接口拼合简单的部件. 用清晰的接口把若干简单的模块组合成一个复杂软件. 这样, ...

  4. [总结]Unix设计哲学 Unix编程艺术

    转载请注明出处:http://blog.csdn.net/horkychen 学习了<<Unix编程艺术>>第一章关于哲学的部分, 做个汇总. 现在对精简设计, 舍弃华而不实是 ...

  5. 《UNIX编程艺术》读书笔记

    <!-- /* Font Definitions */ @font-face {font-family:Wingdings; panose-1:5 0 0 0 0 0 0 0 0 0; mso- ...

  6. Unix编程艺术——Unix哲学

    题外话:一个月之前,刚刚读完<unix编程艺术>这本据说有些"愤青"的书,读书的过程,感觉是种享受,不但unix本身是艺术,连作者著书也是艺术,本想就本书写篇读感,但是 ...

  7. 三读《UNIX编程艺术》

                                              三读<UNIX编程艺术>           第一次读<UNIX编程 艺术>是2004年的夏 ...

  8. 《Unix 编程艺术》 理解

    一:机制, 而不是策略 Unix文化贯穿始终的一条设计主线, 被翻译为: 机制, 而不是策略(Mechanism, not policy), 这句话的英文解释如下: The distinction b ...

  9. Unix编程艺术和代码大全比较阅读

    最近在看Unix编程艺术,收获颇多,联想起以前看过的同样获益匪浅的代码大全,突然萌生出比较两者观点的想法,那就开始吧. Unix编程艺术:简称U. 代码大全:简称C. 1) 函数的长度 U ( 4.1 ...

  10. CUDA编程基础知识整理

    CUDA编程基础知识整理 CUDA编程和GPU架构基本概念 CUDA核函数调度方式 前言:最近在尝试通过CUDA加速Swin Transformer,第一次接触CUDA的相关知识,将这些天学习到的内容 ...

最新文章

  1. 使用runtime让button传递多个参数
  2. Android ndk 使用第三方so和头文件编译
  3. AI:2020年6月16日晚20点陆奇博士演讲《正视挑战把握创业创新机会》
  4. wamp httpd-vhosts.conf
  5. 【已解决】蓝桥杯 2017年C组第五题 杨辉三角(分析与总结)
  6. web前端url传递值 js加密解密
  7. c语言输入n个数按大小输出,输入n个整数并输出,用c语言表达
  8. Golang笔记—面向对象编程
  9. 福师《计算机应用基础》期末考试a卷数据是,2020年春福师《计算机应用基础》期末考试A卷附答案...
  10. 的ppt_PPT丨清新淡雅年终总结PPT模板
  11. 使用 Request.Form 集合之后,不能调用 BinaryRead
  12. Configure Log Shipping
  13. slid.es – 创建在线幻灯片和演示文稿的最佳途径
  14. Eclipse自动生成返回值对象的快捷键是什么?
  15. 算法突击训练营:开学第1课 听课总结
  16. 讯联智付:用户绑卡时“被签订”代扣协议 成借贷平台乱收费“帮凶”
  17. Java API(JDBC)连接操作数据库MySQL
  18. Jetson nano : PWM风扇调速。
  19. python生成拼音
  20. 【老生谈算法】matlab实现功率谱密度算法源码——功率谱密度

热门文章

  1. Python系统学习第二十四课
  2. 如何快速通过信息系统管理工程师考试
  3. JRebel-JVMTI [FATAL] Couldn‘t write to C:\Users\【完美解决方案】
  4. FFMPEG视频编码 NVIDIA 和 INTEL 硬件加速 x265 8bit 和 10bit
  5. 谷歌chrome浏览器突然不记录登录状态,怎么办
  6. Project组合项目案例分享
  7. linux命令中ll和ls的区别
  8. Android 手表WearOs 禁止滑动返回、监听滑动事件分发
  9. 我和你,不是影子一样的朋友,只在光明的日子里相随
  10. java 实现橡皮擦_基于canvas剪辑区域功能实现橡皮擦效果