出版时间:2008 年10月 出版社:人民邮电出版社 作者:(美)Jon Bentley 页数:186 字数:289000 译者:钱丽艳;刘田
Tag标签:无
前言
本书作者Jon Bentley是美国著名的程序员和计算机科学家,他于20世纪70年代前后在很有影响力的《ACM通讯》(Communications of the ACM)上以专栏的形式连续发表了一系列短文,成功地总结和提炼了自己在长期的计算机程序设计实践中积累下来的宝贵经验。这些短文充满了真知灼见,而且文笔生动、可读性强,对于提高职业程序员的专业技能很有帮助,因此该专栏大受读者欢迎,成为当时该学术期刊的王牌栏目之一。可以想象当时的情形颇似早年金庸先生在《明报》上连载其武侠小说的盛况。后来在ACM的鼓励下,作者经过仔细修订和补充整理,对各篇文章的先后次序做了精心编排,分别在1986年和1988年结集出版了Programming Pearls(《编程珠玑》)和More Programming Pearls(《编程珠玑Ⅱ》)这两本书,二者均成为该领域的名著。《编程珠玑(第2版)》在2000年问世,书中的例子都改用C语言书写,并多处提到如何用C++和Java中的类来实现。《编程珠玑Ⅱ》虽未再版,例子多以Awk语言写成,但其语法与C相近,容易看懂。 作者博览群书,旁征博引,无论是计算机科学的专业名著,如《计算机程序设计艺术》,还是普通的科普名著,如《啊哈!灵机一动》,都在作者笔下信手拈来、娓娓道出,更不用说随处可见的作者自己的真知灼见了。如果说《计算机程序设计艺术》这样的巨著代表了程序员们使用的“坦克和大炮”一类的重型武器,这两本书则在某种程度上类似于鲁迅先生所说的“匕首与投枪”一类的轻型武器,更能满足职业程序员的日常需要。或者说前者是武侠小说中提高内力修为的根本秘籍,后者是点拨临阵招数的速成宝典,二者同样都是克敌制胜的法宝,缺一不可。在无止境地追求精湛技艺这一点上,程序员、数学家和武侠们其实是相通的。 在美国,这两本书不仅被用作大学低年级数据结构与算法课程的教材,还用作高年级算法课程的辅助教材。例如,美国著名大学麻省理工学院的电气工程与计算机科学开放式核心课程算法导论就将这两本书列为推荐读物。这两本书覆盖了大学算法课程和数据结构课程的大部分内容,但是与普通教材的侧重点又不一样,不强调单纯从数学上来进行分析的技巧,而是强调结合实际问题来进行分析、应用和实现的技巧,因此可作为大学计算机专业的算法、数据结构、软件工程等课程的教师参考用书和优秀课外读物。书中有许多真实的历史案例和许多极好的练习题以及部分练习题的提示与解答,非常适合自学。正如作者所建议的那样,阅读这两本书时,读者需要备有纸和笔,最好还有一台计算机在手边,边读边想、边想边做,这样才能将阅读这两本书的收益最大化。
内容概要
本书是计算机科学方面的经典名著《编程珠玑》的姊妹篇,讲述了对于程序员有共性的知识。书中涵盖了程序员操纵程序的技术、程序员取舍的技巧、输入和输出设计以及算法示例,这些内容结合成一个有机的整体,如一串串珠玑展示给程序员。本书适合各级程序员阅读参考。
作者简介
Jon Bentley,世界著名计算机科学家,被誉为影响算法发展的十位大师之一。他先后任职于卡内基—梅隆大学(P976-1982)、贝尔实验室(1982—2001)和Avaya实验室(2001年至今)。在卡内基—梅隆大学担任教授期间,他培养了包括Tcl语言设计者John Ousterhout、Java语言设计
书籍目录
第一部分 编程技术 第1章 性能监视工具 1.1 计算素数 1.2 使用性能监视工具 1.3 一个专用的性能监视工具 1.4 开发性能监视工具 1.5 原理 1.6 习题 1.7 深入阅读 第2章 关联数组 2.1 Awk中的关联数组 2.2 有穷状态机模拟器 2.3 拓扑排序 2.4 原理 2.5 习题 2.6 深入阅读 第3章 程序员的忏悔 3.1 二分搜索 3.2 选择算法 3.3 子程序库 3.4 原理 3.5 习题 第4章 自描述数据 4.1 名字—值对 4.2 记录来历 4.3 排序实验 4.4 原理 4.5 习题第二部分 实用技巧 第5章 劈开戈尔迪之结 5.1 小测验 5.2 解答 5.3 提示 5.4 原理 5.5 习题 5.6 深入阅读 5.7 调试(边栏) 第6章 计算机科学箴言集 6.1 编码 6.2 用户界面 6.3 调试 6.4 性能 6.5 文档 6.6 软件管理 6.7 其他 6.8 原理 6.9 习题 6.10 深入阅读 第7章 粗略估算 7.1 头脑热身 7.2 性能的经验法则 7.3 Little定律 7.4 原理 7.5 习题 7.6 深入阅读 7.7 日常速算(边栏) 第8章 人员备忘录 8.1 备忘录 8.2 原理 8.3 深入阅读 第三部分 人性化I/O 第9章 小语言 9.1 Pic语言 9.2 视角 9.3 Pic预处理器 9.4 用来实现Pic的小语言 9.5 原理 9.6 习题 9.7 深入阅读 第10章 文档设计 10.1 表格 10.2 三条设计原则 10.3 插图 10.4 文本 10.5 合适的媒介 10.6 原理 10.7 习题 10.8 深入阅读 10.9 次要问题目录(边栏) 第11章 图形化输出 11.1 实例研究 11.2 显示结果取样 11.3 原理 11.4 习题 11.5 深入阅读 11.6 拿破仑远征莫斯科(边栏) 第12章 对调查的研究 12.1 有关民意调查的问题 12.2 语言 12.3 图片 12.4 原理 12.5 习题 第四部分 算法 第13章 绝妙的取样 13.1 取样算法一瞥 13.2 Floyd算法 13.3 随机排列 13.4 原理 13.5 习题 13.6 深入阅读 第14章 编写数值计算程序 14.1 问题 14.2 牛顿迭代 14.3 良好的起点 14.4 代码 14.5 原理 14.6 习题 14.7 深入阅读 14.8 数值算法的力量(边栏) 第15章 选择 15.1 问题 15.2 程序 15.3 运行时间分析 15.4 原理 15.5 习题 15.6 深入阅读 附录A C和Awk语言 附录B 一个子程序库 部分习题答案 索引
章节摘录
第一部分 编程技术 第2章 关联数组 人类学家说,语言深刻地影响了世界观。一般把这个观察结果称为“Whorf假说”,也经常把它总结为“语言塑造了人的思想”。 跟大多数程序员一样,我使用的Algol系列的语言塑造了我的计算思维。对于像我这样的程序员来说,PL/1、C和Pascal看起来都很相似,我们不难把这样的代码翻译成COBOL或Fortran的代码。用这些语言能轻易地表达我们旧的、习以为常的思维模式。 另外一些语言则挑战了我们对于计算的看法。我们感到惊奇的是:Lisp用户们用S表达式和递归来神奇地工作,APL迷们用一组长向量的外积来为世界建模,Snobol程序员把任何问题都变成一个很大的字符串。我们这些Algol系列的程序员可能会发现,研究这些“异族文化”是痛苦的,但是这种体验一般会增长我们的见识。 本章讨论Algol传统之外的一种语言特性:关联数组(associative array)。我们熟悉的数组都用数值作下标,而关联数组则允许像count[“car”]这样的引用。这样的数据结构出现在Snobol和Rexx(一种IBM命令解释器)这样的语言中,它允许我们用简单的程序宋表达复杂的算法。这些数组与Algol相似到可以很快被理解的程度,又新到足以挑战我们思维习惯的程度。 本章将讨论Awk语言提供的关联数组。虽然Awk的大多数成分都来生Algol传统,但是关联数组和其他几个特性还是值得研究的。下面这一节介绍Awk的关联数组;后续几节描述两个重要的程序,这两个程序用大多数Algol系列的语言来写都是很麻烦的,却可以用Awk优雅地表达出来。
编辑推荐
历史上最伟大的计算机科学著作之一;融深邃思想、实战技术与趣味轶事于一炉的奇书;带你真正领略计算机科学之美。 “《编程珠玑》第1版是对我职业生涯早期影响最大的书之一,其中的许多真知灼见多年之后仍然使我受益匪浅。Jon在第2版中对素材进行了大量更新,许多新内容让我耳目一新。” ——Steve McConnell,软件工程大师,IEEE Software前主编。《代码大全》作者“对每一位遇到的程序员,我都会毫不迟疑地建议他阅读并不断重读这部经典之作。” ——Slashdot 多年以来,当程序员们推选出最心爱的计算机图书时,《编程珠玑》总是位于前列。正如自然界里珍珠出自细沙对牡蛎的磨砺,计算机科学大师Jon Bentley以其独有的洞察力和创造力,从磨砺程序员的实际问题中凝结出一篇篇不朽的编程“珠玑”,成为世界计算机界名刊《ACM通讯》历史上最受欢迎的专栏,最终结集为两部不朽的计算机科学经典名著,影响和激励着一代又一代程序员和计算机科学工作者。本书为第二卷,秉承了第一卷的风格,但本书涉及的范围更广,包括文档、小语言、性能监视、图形输出等。 在书中,作者选取许多具有典型意义的复杂编程和算法问题,生动描绘了历史上众大师们在探索解决方案中发生的轶事、走过的弯路和不断精益求精的历程,引导读者像真正的程序员和软件工程师那样富于创新性地思考,并透彻阐述和总结了许多独特而精妙的设计原则、思考和解决问题的方法以及实用程序设计技巧。每章后所附习题极具挑战性和启发性,书末给出了简洁的解答。
图书封面
图书标签Tags
无
评论、评分、阅读与下载