Unix编程的艺术
Unix哲学与编程艺术的经典著作 作者:Eric Steven Raymond 页数:553页 文件大小:2.21MB
核心内容
本书总结了Unix社区多年的编程经验和哲学思想。
第一部分:背景
-
哲学
- Unix文化的持久性
- Unix的优缺点
- 开源软件
- Unix基础原则
核心规则:
- 模块化规则:写简单部分,通过清晰接口连接
- 清晰规则:清晰优于巧妙
- 组合规则:设计程序以相互连接
- 分离规则:策略与机制分离
- 简化规则:为简化而设计
- 节俭规则:无事证明必要,不写大程序
- 透明规则:设计可见性以方便检查调试
- 健壮规则:健壮是透明和简化的产物
- 表示规则:将知识折叠入数据,使程序逻辑简单健壮
- 最小惊奇规则:接口设计总是做最少惊奇的事
- 沉默规则:无惊奇时不应有输出
- 修复规则:能修复就修复,必须失败时尽早失败
- 经济规则:程序员时间昂贵,节省优先于机器时间
- 生成规则:避免手工Hack,写程序生成程序
- 优化规则:先原型后优化
- 多样性规则:不信任单一正确方式
- 扩展规则:为未来设计
-
历史
- Unix起源与历史(1969-1995)
- Hacker文化起源与历史(1961-1995)
- Unix历史的教训
-
对比
- VMS、MacOS、OS/2、Windows NT、BeOS、MVS、VM/CMS
- Linux
- 操作系统风格比较
第二部分:设计
-
模块化
- 封装与最优模块大小
- 紧凑性与正交性
- SPOT规则
- 软件的层次性
- 自上而下与自下而上
- 胶水层
- 库
- Unix与面向对象语言
- 为模块化编码
-
文本性
- 文本的重要性
- Unix密码文件格式
- .newsrc格式
- PNG图形文件格式
- 数据文件元格式
- DSV风格
- RFC 822格式
- Cookie-Jar格式
- Record-Jar格式
- XML
- Windows INI格式
- Unix文本文件格式约定
- 应用协议设计
- SMTP、POP3、IMAP
-
透明性
- 研究案例
- 设计透明性和可发现性
- 为可维护性设计
-
多道程序设计
- 复杂度控制与性能调优的分离
- Unix IPC方法分类
- 管道、重定向和过滤器
- 包装器
- 安全包装器
- 从属进程
- 对等进程间通信
- 需要避免的问题
- 进程设计层面的划分
-
微型语言
- 语言分类学
- 应用微型语言
- 设计微型语言
- 选择正确的复杂度级别
- 扩展和嵌入语言
- 编写自定义语法
- 宏 - 小心!
- 语言还是应用协议?
-
生成
- 数据驱动编程
- 临时代码生成
-
配置
- 什么应该是可配置的
- 配置存放位置
- 运行控制文件
- 环境变量
- 命令行选项
-
接口
- 最小惊奇规则
- Unix接口设计历史
- CLI与图形界面权衡
- Unix接口设计模式
- 语言基接口模式
- 沉默是金
-
优化
- 不要只是做点什么,站在那里
- 优化前先测量
- 非局部性有害
- 吞吐量vs延迟
- 批量操作
- 重叠操作
- 缓存操作结果
-
复杂度
- 谈论复杂度
- 复杂度的三个来源
- 接口复杂度与实现复杂度的权衡
- 本质、可选和偶然复杂度
- 映射复杂度
- 五个编辑器的故事
第三部分:实践
- C作为胶水语言
- X作为参考实现
- TCP/IP作为协议参考
- Perl作为工具语言
- Python作为胶水
- Java作为企业级平台
- XML作为数据格式
- 数据库作为状态管理
- Web作为接口
- 安全作为设计约束
- 测试作为质量保证
- 文档作为第一公民
- 版本控制作为协作基础
- 持续集成作为工程实践
- 敏捷开发作为方法论
- 设计模式作为解决方案
- 重构作为改进手段
附录
- A. 参考文献
- B. 贡献者
- C. Rootless Root(Unix禅)
核心哲学
Unix之道
- 做一件事并做好 - McIlroy箴言
- 预期输入成为另一个程序的输出 - 管道哲学
- 过滤文字流或字符串 - 文本导向
- 避免捕获用户心理 - 用户友好但非保姆式
- 使用脚本语言加速可移植性 - 便携性
- 容忍 inputData 以允许后续实验 - 灵活性
- 使用小、专一的程序 - 模块化
- 用纯文本保存数据 - 可移植性
- 在接口设计中使用最小惊奇 - 直觉性
设计原则
- 模块化:高内聚低耦合
- 文本性:纯文本格式优先
- 透明性:可检查可调试
- 组合性:程序间可连接
- 简洁性:保持简单
学习要点
-
理解Unix哲学
- 历史背景
- 核心原则
- 实际应用
-
掌握设计模式
- 管道模式
- 过滤器模式
- 配置模式
- 接口模式
-
应用文本导向
- 文件格式设计
- 协议设计
- 数据表示
与其他知识的关联
- 与《The C Programming Language》关联:C是Unix的实现语言
- 与《UNIX环境高级编程》关联:系统编程细节
- 与《代码大全》关联:软件工程实践
可行动点
- 深入理解Unix哲学17条规则
- 实践管道和过滤器模式
- 设计文本导向的接口
- 阅读附录中的Unix禅
原始路径
/田浩然上传的资料/电子书/Linux/[计算机科学经典着作].Addison.Wesley.Eric.Steven.Raymond.The.Art.of.UNIX.programming.pdf
处理信息
- 处理方式:PDF文本提取
- 提取时间:2026-09-30
- 文档状态:已完成