[心得]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实践,看以下几条:
- 尽可能做成上下游无关的过滤器
- 数据流文本可视化可序列化以及反序列化
- 数据库部署和应用协议文本化
- 前端和后端分离
- 先让原型运转
- 尽可能降低复杂度 宽收严发 过滤保持最少损耗
- 模块单一职责
二、实践
Unix文本格式常用约定
- 一行一条记录
- 一行尽可能不超过80字符
- 使用#注释
- 支持反斜杠约定
- 冒号或者连续空白作分隔符
- 不严格区分tab和whitespace
- 使用16进制表示数值
- 不要对文件的一部分进行压缩或者二进制编码
Unix从-a 2 -z的命令行选项常用含义
- -a 所有项
- -b 缓冲区或者块的大小
- -c 参数选项
- -d 调试
- -D define
- -e 执行或者编辑
- -f 文件或者强制
- -h 表头或者帮助
- -i 初始化或者交互
- -I 包含
- -k 保留
- -l 列表或者加载,登陆
- -m 消息
- -n 数字或者否定
- -o 输出
- -p 端口或者协议
- -q 安静
- -r 递归
- -s 静音或者主题
- -t 标记
- -u 用户
- -v 显示输出过程或者版本
- -V 版本
- -w 宽度或者警告
- -x启用调试
- -y 确认
- -z 启用压缩
Unix接口常用设计模式
- 过滤器模式 例子:grep/cat
- cantrip模式:无入无出,只被调用一次,产生退出状态码 例子:clear/rm/touch
- 源模式:无入有出 例子:ls/ps
- 阱模式:无出有入 例子:lpr/spooler
- 编译器模式:无入,无标准输出,但有错误输出 例子:cc/gcc
- ed模式:启动传入控制信息,同数据分离,之后与用户交互
- roguelike模式:通常单键触发而且不回显发出的命令,每项一行,带有模式行 例子:vim
- 引擎和接口分离模式:例子 MVC
- CLI服务器模式:前端出发,有界面io 例子:POP和http服务器
各主流语言优缺点点评
- C 优点:最接近硬件效率的高级语言 缺点:内存管理
- C++ 优点:编译效率,OO和STL,范型 缺点:非常复杂
- shell 优点:小清新 缺点:大了不好移植
- python 优点:清新易读好上手 缺点:低效
- java 优点:内存管理 缺点:效率比C/C++略逊
[心得]AUP Unix编程艺术知识整理相关推荐
- 【转载】Unix编程艺术——Unix哲学
Unix编程艺术主要介绍了Unix系统领域中的设计和开发哲学.思想文化体系.原则与经验.此文大致摘录了Unix的哲学. web程序员也应该看看此书,软件开发和web开发很多地方都是相通的.看完之后,我 ...
- 读《UNIX编程艺术》随记
2012-07-07 <UNIX编程艺术>这本书是人介绍的, 一看到这书的厚度,我有想打退堂鼓的冲动.好厚的说. 不过,听到可以不用细也可以,就硬着头接下这本书了. 先看它的书皮,一位师傅 ...
- Unix 哲学的一些原则——《Unix 编程艺术》
Unix 哲学是在 Unix 先哲们和 Unix 本身所作出的榜样中体现出来的.可以概括为以下原则: 模块原则:使用简洁的接口拼合简单的部件. 用清晰的接口把若干简单的模块组合成一个复杂软件. 这样, ...
- [总结]Unix设计哲学 Unix编程艺术
转载请注明出处:http://blog.csdn.net/horkychen 学习了<<Unix编程艺术>>第一章关于哲学的部分, 做个汇总. 现在对精简设计, 舍弃华而不实是 ...
- 《UNIX编程艺术》读书笔记
<!-- /* Font Definitions */ @font-face {font-family:Wingdings; panose-1:5 0 0 0 0 0 0 0 0 0; mso- ...
- Unix编程艺术——Unix哲学
题外话:一个月之前,刚刚读完<unix编程艺术>这本据说有些"愤青"的书,读书的过程,感觉是种享受,不但unix本身是艺术,连作者著书也是艺术,本想就本书写篇读感,但是 ...
- 三读《UNIX编程艺术》
三读<UNIX编程艺术> 第一次读<UNIX编程 艺术>是2004年的夏 ...
- 《Unix 编程艺术》 理解
一:机制, 而不是策略 Unix文化贯穿始终的一条设计主线, 被翻译为: 机制, 而不是策略(Mechanism, not policy), 这句话的英文解释如下: The distinction b ...
- Unix编程艺术和代码大全比较阅读
最近在看Unix编程艺术,收获颇多,联想起以前看过的同样获益匪浅的代码大全,突然萌生出比较两者观点的想法,那就开始吧. Unix编程艺术:简称U. 代码大全:简称C. 1) 函数的长度 U ( 4.1 ...
- CUDA编程基础知识整理
CUDA编程基础知识整理 CUDA编程和GPU架构基本概念 CUDA核函数调度方式 前言:最近在尝试通过CUDA加速Swin Transformer,第一次接触CUDA的相关知识,将这些天学习到的内容 ...
最新文章
- 使用runtime让button传递多个参数
- Android ndk 使用第三方so和头文件编译
- AI:2020年6月16日晚20点陆奇博士演讲《正视挑战把握创业创新机会》
- wamp httpd-vhosts.conf
- 【已解决】蓝桥杯 2017年C组第五题 杨辉三角(分析与总结)
- web前端url传递值 js加密解密
- c语言输入n个数按大小输出,输入n个整数并输出,用c语言表达
- Golang笔记—面向对象编程
- 福师《计算机应用基础》期末考试a卷数据是,2020年春福师《计算机应用基础》期末考试A卷附答案...
- 的ppt_PPT丨清新淡雅年终总结PPT模板
- 使用 Request.Form 集合之后,不能调用 BinaryRead
- Configure Log Shipping
- slid.es – 创建在线幻灯片和演示文稿的最佳途径
- Eclipse自动生成返回值对象的快捷键是什么?
- 算法突击训练营:开学第1课 听课总结
- 讯联智付:用户绑卡时“被签订”代扣协议 成借贷平台乱收费“帮凶”
- Java API(JDBC)连接操作数据库MySQL
- Jetson nano : PWM风扇调速。
- python生成拼音
- 【老生谈算法】matlab实现功率谱密度算法源码——功率谱密度
热门文章
- Python系统学习第二十四课
- 如何快速通过信息系统管理工程师考试
- JRebel-JVMTI [FATAL] Couldn‘t write to C:\Users\【完美解决方案】
- FFMPEG视频编码 NVIDIA 和 INTEL 硬件加速 x265 8bit 和 10bit
- 谷歌chrome浏览器突然不记录登录状态,怎么办
- Project组合项目案例分享
- linux命令中ll和ls的区别
- Android 手表WearOs 禁止滑动返回、监听滑动事件分发
- 我和你,不是影子一样的朋友,只在光明的日子里相随
- java 实现橡皮擦_基于canvas剪辑区域功能实现橡皮擦效果