标题：计算机编程珠玑
基本信息
作者：(美)Jon Bentley 
译者：钱丽艳 刘田
丛书名： 图灵程序设计丛书
出版社：人民邮电出版社
ISBN：9787115251510
出版日期：2011 年5月
开本：16开
页码：1
版次：1-1
编辑推荐
经久不衰的计算机科学名著
集深邃思想、实战技术与趣味轶事于一册
领略计算机科学之美
内容简介
《编程珠玑:续》是计算机科学方面的经典名著《编程珠玑》的姊妹篇，讲述了对于程序员有共性的知识。书中涵盖了程序员操纵程序的技术、程序员取舍的技巧、输入和输出设计以及算法示例，这些内容组成一个有机的整体，如一串串珠玑展示给程序员。本书适合各级程序员阅读参考。
作译者
Jon Bentley 世界著名计算机科学家，被誉为影响算法发展的十位大师之一。他先后任职于卡内基-梅隆大学（1976~1982）、贝尔实验室（1982~2001）和 Avaya实验室（2001年至今）。在卡内基-梅隆大学担任教授期间，他培养了包括Tcl语言设计者John Ousterhout、Java语言设计者James Gosling、《算法导论》作者之一Charles Leiserson在内的许多计算机科学大家。2004年荣获Dr. Dobb’s程序设计卓越奖。
目录
《计算机编程珠玑》
第一部分 编 程 技 术
第1 章 性能监视工具　　3
1 1 计算素数　　3
1 2 使用性能监视工具　　7
1 3 专用的性能监视工具　　 8
1 4 开发性能监视工具　　10
1 5 原理　　11
1 6 习题　　11
1 7 深入阅读　　12
第2 章 关联数组　　13
2 1 awk 中的关联数组　　 13
2 2 有穷状态机模拟器　　 16
2 3 拓扑排序　　17
2 4 原理　　20
2 5 习题　　21
2 6 深入阅读　　22
第3 章 程序员的忏悔　　 23
3 1 二分搜索　　24
3 2 选择算法　　26
3 3 子程序库　　28
3 4 原理　　30
3 5 习题　　31
第4 章 自描述数据　　33
4 1 名字—值对　　33
4 2 记录来历　　36
4 3 排序实验　　37
4 4 原理　　39
4 5 习题　　39
第二部分 实 用 技 巧
第5 章 劈开戈尔迪之结 43
5 1 小测验　　43
5 2 解答　　44
5 3 提示　　44
5 4 原理　　47
5 5 习题　　48
5 6 深入阅读　　49
5 7 调试（边栏） 　　49
第6 章 计算机科学箴言集 51
6 1 编码　　52
6 2 用户界面　　53
6 3 调试　　53
6 4 性能　　54
6 5 文档　　56
6 6 软件管理　　56
6 7 其他　　58
6 8 原理　　58
6 9 习题　　58
6 10 深入阅读　　60
第7 章 粗略估算　　61
7 1 头脑热身　　61
7 2 性能的经验法则　　62
7 3 little 定律　　64
7 4 原理　　65
7 5 习题　　66
7 6 深入阅读　　67
7 7 日常速算（边栏）　　 67
第8 章 人员备忘录　　69
8 1 备忘录　　69
8 2 原理　　71
8 3 深入阅读　　71
第三部分 人性化i/o
第9 章 小语言　　75
9 1 pic 语言　　76
9 2 视角　　79
9 3 pic 预处理器　　81
9 4 用来实现pic 的小语言83
9 5 原理　　87
9 6 习题　　88
9 7 深入阅读　　89
第10 章 文档设计　　91
10 1 表格　　92
10 2 三条设计原则　　94
10 3 插图　　94
10 4 文本　　96
10 5 合适的媒介　　98
10 6 原理　　100
10 7 习题　　101
10 8 深入阅读　　101
10 9 次要问题目录（边栏） 101
第11 章 图形化输出　　103
11 1 实例研究　　103
11 2 显示结果取样　　105
11 3 原理　　107
11 4 习题　　108
11 5 深入阅读　　110
11 6 拿破仑远征莫斯科（边栏） 110
第12 章 对调查的研究113
12 1 有关民意调查的问题113
12 2 语言　　114
12 3 图片　　117
12 4 原理　　119
12 5 习题　　120
第四部分 算 法
第13 章 绝妙的取样　　123
13 1 取样算法一瞥　　123
13 2 floyd 算法　　124
13 3 随机排列　　125
13 4 原理　　127
13 5 习题　　127
13 6 深入阅读　　128
第14 章 编写数值计算程序129
14 1 问题　　129
14 2 牛顿迭代　　130
14 3 良好的起点　　132
14 4 代码　　133
14 5 原理　　135
14 6 习题　　135
14 7 深入阅读　　137
14 8 数值算法的力量（边栏） 137
第15 章 选择　　141
15 1 问题　　141
15 2 程序　　142
15 3 运行时间分析　　145
15 4 原理　　148
15 5 习题　　149
15 6 深入阅读　　151
附录a c 和awk 语言　　153
附录b 子程序库　　157
部分习题答案　　165
索引　　　　181
译者序
本书作者Jon Bentley是美国著名的程序员和计算机科学家，他于20世纪70年代前后在很有影响力的《ACM通讯》（Communications of the ACM）上以专栏的形式连续发表了一系列短文，成功地总结和提炼了自己在长期的计算机程序设计实践中积累下来的宝贵经验。这些短文充满了真知灼见，而且文笔生动、可读性强，对于提高职业程序员的专业技能很有帮助，因此该专栏大受读者欢迎，成为当时该学术期刊的王牌栏目之一。可以想象当时的情形，颇似早年金庸先生在《明报》上连载其武侠小说的盛况。后来在ACM的鼓励下，作者经过仔细修订和补充整理，对各篇文章做了精心编排，分别在1986年和1988年结集出版了Programming Pearls（《计算机编程珠玑》）和More Programming Pearls（《计算机编程珠玑（续）》）这两本书，二者均成为该领域的名著。《计算机编程珠玑（第2版）》在2000年问世，书中的例子都改用C语言书写，并多处提到如何用C++和Java中的类来实现。《计算机编程珠玑（续）》虽未再版，例子多以Awk语言写成，但其语法与C相近，容易看懂。
作者博览群书，旁征博引，无论是计算机科学的专业名著，如《计算机程序设计艺术》，还是普通的科普名著，如《啊哈！灵机一动》，都在作者笔下信手拈来、娓娓道出，更不用说随处可见的作者自己的真知灼见了。如果说《计算机程序设计艺术》这样的巨著代表了程序员们使用的“坦克和大炮”一类的重型武器，这两本书则在某种程度上类似于鲁迅先生所说的“匕首与投枪”一类的轻型武器，更能满足职业程序员的日常需要。或者说前者是武侠小说中提高内力修为的根本秘籍，后者是点拨临阵招数的速成宝典，二者同样都是克敌制胜的法宝，缺一不可。在无止境地追求精湛技艺这一点上，程序员、数学家和武侠们其实是相通的。
在美国，这两本书不仅被用作大学低年级数据结构与算法课程的教材，还用作高年级算法课程的辅助教材。例如，美国著名大学麻省理工学院的电气工程与计算机科学开放式核心课程算法导论就将这两本书列为推荐读物。这两本书覆盖了大学算法课程和数据结构课程的大部分内容，但是与普通教材的侧重点又不一样，不强调单纯从数学上进行分析的技巧，而是强调结合实际问题来进行分析、应用和实现的技巧，因此可作为大学计算机专业的算法、数据结构、软件工程等课程的教师参考用书和优秀课外读物。书中有许多真实的历史案例和许多极好的练习题以及部分练习题的提示与解答，非常适合自学。正如作者所建议的那样，阅读这两本书时，读者需要备有纸和笔，最好还有一台计算机在手边，边读边想、边想边做，这样才能将阅读这两本书的收益最大化。
人民邮电出版社引进版权，同时翻译出版了《计算机编程珠玑（第2版）》和《计算机编程珠玑（续）》，使这两个中译本珠联璧合，相信这不仅能极大地满足广大程序员读者的需求，还有助于提高国内相关课程的授课质量和学生的学习兴趣。
本书主要由钱丽艳和刘田翻译，翻译过程中得到了严浩、李梁、任铁男三位研究生的帮助，在此一并表示感谢。由于本书内容深刻，语言精妙，而译者的水平和时间都比较有限，错误和不当之处在所难免，敬请广大读者批评指正。
前言
计算机计算机编程充满乐趣，有时候，它又是一门优雅的科学，还要靠它去开发和使用新的软件工具。计算机编程与人息息相关：客户实际想解决什么问题？如何让用户容易与程序沟通？是计算机编程让我接触到相当广泛的话题，从有机化学到拿破仑战争。本书描述了计算机编程的所有这些方面的知识，而且远不止这些。
这是一部短文集，每篇短文独立成章，但所有短文又依据逻辑分成了几组。第1章至第4章描述操纵程序的技术；第5章至第8章给出了一些程序员的实用技巧，这是本书技术性最低的部分；第9章至第12章讲解输入和输出设计；第13章至第15章介绍了3个有用的子程序。这些分类主题在每个部分的引言中进行了详细说明。
本书大多数章都是以我在《ACM通讯》杂志中的“计算机编程珠玑”（Programming Pearls）专栏文章为基础的。各部分的引言中描述了这些文章的发表历史。既然已经发表过，为什么我还要费劲写这本书呢？自首次发表以来，这些专栏文章发生了很大变化，有了数千处小改进：有了新的问题和解决方案，纠正了小错误，并采纳了很多读者的意见。与此同时，我删除了一些旧的内容以免重复，并加入了很多新的内容，其中有一章是全新的。
然而，写本书的最大理由是，我想把各章组成一个有机的整体，我想展示一整串珠玑。我1986年出版的《计算机编程珠玑》是类似的13篇短文的结集，围绕性能这个中心主题来组织，该主题在最早两年的《ACM通讯》专栏中占据了突出位置。本书中也有几章再次谈及效率的话题，但全书考察的计算机编程领域范围要大得多。
读者阅读本书时不要太快，一次一章，仔细地读。试解一下书中提出的问题——有些问题并不像看起来那样容易。有些章末尾的“深入阅读”并不是学术意义上的参考文献列表，而是我推荐的一些好书，这些书是我个人藏书的重要部分。
我很高兴能借此机会感谢许多人所作的重要贡献。Al Aho、Peter Denning、Brian Kernighan和Doug McIlroy对各章提出了详细意见。我还要感谢以下诸位提出有益的见解：Bill Cleveland、Mike Garey、Eric Grosse、Gerard Holzmann、Lynn Jelinski、David Johnson、Arno Penzias、Ravi Sethi、Bjarne Stroustrup、Howard Trickey和Vic Vyssotsky。感谢允许我引用他们信件的几个人，特别是Peter Denning、Bob Floyd、Frank Starmer、Vic Vyssotsky和Bruce Weide。我特别要感谢ACM鼓励我把专栏文章出版成书，还要感谢《ACM通讯》的许多读者，他们对原始专栏文章提出了不少意见，使得本书这个扩充版本的出版十分必要。贝尔实验室（特别是其计算科学研究中心）在我写这些专栏文章时，提供了极佳的支持环境。感谢所有的人。
媒体评论
“《计算机编程珠玑》是对我职业生涯影响最大的书之一，其中的许多真知灼见多年之后仍然使我受益匪浅。Jon在《计算机编程珠玑（续）》中组织了更多素材，诸多内容让我耳目一新。”
——Steve McConnell，软件工程大师，IEEE Software前主编，《代码大全》作者
“对每一位遇到的程序员，我都会毫不迟疑地建议他阅读并不断重读这部经典之作。”
——Slashdot