本书是Brian W. Kernighan和Rob Pike合著的最新力作。本书从排错、测试、性能、可移植性、设计、界面、风格和记法等方面,讨论了程序设计中实际的、又是非常深刻和具有广泛意义的思想、技术和方法,它的翻译出版将填补国内目前这方面书籍的空白。本书值得每个梦想并努力使自己成为优秀程序员的人参考,值得每个计算机专业的学生和计算机工作者阅读,也可作为程序设计高级课程的教材或参考书。
目 录
译者序
前言
第1章 风格 1
1.1 名字 2
1.2 表达式和语句 4
1.3 一致性和习惯用法 8
1.4 函数宏 14
1.5 神秘的数 15
1.6 注释 18
1.7 为何对此费心 22
第2章 算法与数据结构 23
2.1 检索 23
2.2 排序 25
2.3 库 27
2.4 一个Java快速排序 29
2.5 大O记法 31
2.6 可增长数组 33
2.7 表 35
2.8 树 39
2.9 散列表 43
2.10 小结 46
第3章 设计与实现 48
3.1 马尔可夫链算法 48
3.2 数据结构的选择 50
3.3 在C中构造数据结构 51
3.4 生成输出 54
3.5 Java 56
3.6 C++ 59
3.7 Awk和Perl 61
3.8 性能 63
3.9 经验教训 64
第4章 界面 67
4.1 逗号分隔的值 67
4.2 一个原型库 69
4.3 为别人用的库 72
4.4 C++实现 79
4.5 界面原则 82
4.6 资源管理 84
4.7 终止、重试或失败 86
4.8 用户界面 90
第5章 排错 93
5.1 排错系统 94
5.2 好线索,简单错误 95
5.3 无线索,难办的错误 98
5.4 最后的手段 101
5.5 不可重现的错误 103
5.6 排错工具 105
5.7 其他人的程序错误 107
5.8 小结 108
第6章 测试 110
6.1 在编码过程中测试 110
6.2 系统化测试 114
6.3 测试自动化 118
6.4 测试台 120
6.5 应力测试 123
6.6 测试秘诀 125
6.7 谁来测试 126
6.8 测试马尔可夫程序 127
6.9 小结 129
第7章 性能 130
7.1 瓶颈 130
7.2 计时和轮廓 135
7.3 加速策略 138
7.4 代码调整 140
7.5 空间效率 144
7.6 估计 145
7.7 小结 147
第8章 可移植性 149
8.1 语言 149
8.2 头文件和库 154
8.3 程序组织 156
8.4 隔离 159
8.5 数据交换 160
8.6 字节序 161
8.7 可移植性和升级 164
8.8 国际化 165
8.9 小结 167
第9章 记法 169
9.1 数据格式 169
9.2 正则表达式 174
9.3 可编程工具 180
9.4 解释器、编译器和虚拟机 182
9.5 写程序的程序 186
9.6 用宏生成代码 189
9.7 运行中编译 190
后记 195
附录:规则汇编 197
索引 200