出版社: 人民邮电出版社
原作名: More Programming Pearls: Confessions of a Coder
译者: 钱丽艳 / 刘田 等
出版年: 2011-5
页数: 196
定价: 35.00 元
装帧: 平装
丛书: 图灵程序设计丛书·程序员修炼系列
ISBN: 9787115251510
内容简介 · · · · · ·
Jon Bentley编著的《编程珠玑(续)》是计算机科学方面的经典名著《编程珠玑》的姊妹篇,讲述了对于程序员有共性的知识。书中涵盖了程序员操纵程序的技术、程序员取舍的技巧、输入和输出设计以及算法示例,这些内容组成一个有机的整体,如一串串珠玑展示给程序员。《编程珠玑(续)》适合各级程序员阅读参考。
作者简介 · · · · · ·
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 章 性能监视工具 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
· · · · · · (收起)
丛书信息
喜欢读"编程珠玑(续)"的人也喜欢的电子书 · · · · · ·
喜欢读"编程珠玑(续)"的人也喜欢 · · · · · ·
编程珠玑(续)的话题 · · · · · · ( 全部 条 )



编程珠玑(续)的书评 · · · · · · ( 全部 53 条 )

这是一本有可能让我提前掉头发的书
这篇书评可能有关键情节透露
传说功力不强的人阅读高深的武功秘籍容易伤身甚至走火入魔。看来这本书已经逼近自己的极限。 不过好消息是挺过这个过程传说功力就能上一甲子。 我阅读本书的前两章是一个翻过-》退回去-》再翻过的痛苦过程,直到我把所有东西都搞懂。如同前言所说,不要急着看完它,多想想。... (展开)
Good Essays
> 更多书评 53篇
-
豆豆の爸爸 (不断突破重塑,连接一切可能)
作为 JavaScript程序员, 第3页中的用C语言编写的示例代码用JS重写了,只有printf语句中的 %d 就不知用 JS 该怎么来表达了。其余的全部都可以理解,并将缺省的花括号补全了: function prime(n) { var i; for(i = 2; i < n; ++i) { if (n % i == 0) { return 0; } } return 1; } function main() { var i, n; n = 1000; for (i = 2; i <= n; ++i) { if (prime(i)) { document.writeln(i + ' , '); } } } main(); 下面是... (1回应)2011-06-07 14:14
作为 JavaScript程序员, 第3页中的用C语言编写的示例代码用JS重写了,只有printf语句中的 %d 就不知用 JS 该怎么来表达了。其余的全部都可以理解,并将缺省的花括号补全了:
function prime(n) { var i; for(i = 2; i < n; ++i) { if (n % i == 0) { return 0; } } return 1; } function main() { var i, n; n = 1000; for (i = 2; i <= n; ++i) { if (prime(i)) { document.writeln(i + ' , '); } } } main();
下面是firebug的概况:
对JS程序的 profiler(性能监视工具)使用了一番下来,都是过程时间(procedure-time)的,不是行计数(line-count),不会对 function 的内部的行进行计数。。。而书上的是对C程序进行编译时带了性能监视选项,所以可以精确到函数的内部的每一行的语句了。。。JS哪可能会进行编译?!目前唯一号称是JS编译器的Google Closure Compiler 在官网上查了半天,也没发现有这一选项。。。
1回应 2011-06-07 14:14 -
大句哥哥 (make pie, or invent universe)
读后感:大学时试图写的robocup新版程序就是个基于「小语言」的设计,又比如厂里用的stylus scss 这也是一层「小语言」的封装。我想,最大的好处在于**友好**,抽象后的语言 语言构件变的更自然 更远离冯诺伊曼机器 更贴近自然思维。设计「小语言」最基础的是需要对领域知识的扩展 也需要对编译器的深刻理解。2013-02-23 14:34
-
大句哥哥 (make pie, or invent universe)
作者这段话写的很有意思: I/O人性化为程序员提供了可以和不同行业的有趣的人进行交流的好理由。 作者认为 在工作中会与化学家、制图工作者、统计学家和政治学者接触,对于他这种「成人后还不能决定自己该干什么的人」,编程是一个理想的工作。 读后感:可以像作者一样「为了写出化学式制图程序而看了一周的化学知识」,I/O 是程序员和其他工种对接的地方,有趣、新鲜。2013-02-23 12:00
-
邻家の打工人 (math,english,computer science)
第二题的C问中,O(nloglogn)的复杂度可以这么推出: p = 2; while (p <= n) { for (i = 2 * p; i <= n; i += p) x[i] = 0; do p++; while (!x[p]); } 这是经过处理后的代码,主要是便于分析。容易知道,只需要分析x[i] = 0;的运行次数即可。 T(n) = n/2 + n/3 + ... + n/p, 其中p为不大于n最大的素数。然后我们有 T(n) = n(1/2 + 1/3 +..+ 1/p) *fix:吃饭时突然想到刚才右半部分的证明是不对的,特此更正下。 右边的其实...2012-05-09 17:04
第二题的C问中,O(nloglogn)的复杂度可以这么推出:
p = 2; while (p <= n) { for (i = 2 * p; i <= n; i += p) x[i] = 0; do p++; while (!x[p]); }
这是经过处理后的代码,主要是便于分析。容易知道,只需要分析x[i] = 0;的运行次数即可。 T(n) = n/2 + n/3 + ... + n/p, 其中p为不大于n最大的素数。然后我们有 T(n) = n(1/2 + 1/3 +..+ 1/p) *fix:吃饭时突然想到刚才右半部分的证明是不对的,特此更正下。 右边的其实是有专业术语的,称之为:素数调和级数,渐进于O(loglogn).欧拉给出了一个下界(非函数增长上的渐进下界,不过可以由此得到Omega)。 http://en.wikipedia.org/wiki/Prime_harmonic_series 如果 log_{a}n = O(logn) => log_{b}n = O(logn),其中a,b均>1 对于d,目前已知最好的方法是进行素性测试。该测试基于费马小定理,并且可以在现行时间内完成测试,不过没有100%正确的概率。然后可以进行大量独立重复测试,将概率控制在接受范围之内。
回应 2012-05-09 17:04
-
豆豆の爸爸 (不断突破重塑,连接一切可能)
作为 JavaScript程序员, 第3页中的用C语言编写的示例代码用JS重写了,只有printf语句中的 %d 就不知用 JS 该怎么来表达了。其余的全部都可以理解,并将缺省的花括号补全了: function prime(n) { var i; for(i = 2; i < n; ++i) { if (n % i == 0) { return 0; } } return 1; } function main() { var i, n; n = 1000; for (i = 2; i <= n; ++i) { if (prime(i)) { document.writeln(i + ' , '); } } } main(); 下面是... (1回应)2011-06-07 14:14
作为 JavaScript程序员, 第3页中的用C语言编写的示例代码用JS重写了,只有printf语句中的 %d 就不知用 JS 该怎么来表达了。其余的全部都可以理解,并将缺省的花括号补全了:
function prime(n) { var i; for(i = 2; i < n; ++i) { if (n % i == 0) { return 0; } } return 1; } function main() { var i, n; n = 1000; for (i = 2; i <= n; ++i) { if (prime(i)) { document.writeln(i + ' , '); } } } main();
下面是firebug的概况:
对JS程序的 profiler(性能监视工具)使用了一番下来,都是过程时间(procedure-time)的,不是行计数(line-count),不会对 function 的内部的行进行计数。。。而书上的是对C程序进行编译时带了性能监视选项,所以可以精确到函数的内部的每一行的语句了。。。JS哪可能会进行编译?!目前唯一号称是JS编译器的Google Closure Compiler 在官网上查了半天,也没发现有这一选项。。。
1回应 2011-06-07 14:14 -
豆豆の爸爸 (不断突破重塑,连接一切可能)
程序P2和P3:直接上代码! function root(n) { return Math.sqrt(n); } function prime(n) { var i, bound; bound = root(n); for(i = 2; i <= bound; ++i) { if (n % i == 0) { return 0; } } return 1; } function main() { var i, n, html = ''; n = 1000; for (i = 2; i < n; ++i) { if (prime(i)) { html += i + ' , '; } } document.writeln(html); } main(); 偶然发现:在《高性能JS》书中将 profiler 这个术语译...2011-06-08 09:32
程序P2和P3:直接上代码!
function root(n) { return Math.sqrt(n); } function prime(n) { var i, bound; bound = root(n); for(i = 2; i <= bound; ++i) { if (n % i == 0) { return 0; } } return 1; } function main() { var i, n, html = ''; n = 1000; for (i = 2; i < n; ++i) { if (prime(i)) { html += i + ' , '; } } document.writeln(html); } main();
偶然发现:在《高性能JS》书中将 profiler 这个术语译为:性能分析工具,而这本书则译为:性能监视工具了。 由于JS程序的 profiler 工具都不能对函数内部走了多少次数进行统计,所以,只好自己编写统计次数的了:
var count = 0, count0 = 0,count1 = 0; function root(n) { count = count + 1; return Math.sqrt(n); } function prime(n) { var i, bound; bound = root(n); count0 = count0 + 1; for(i = 2; i <= bound; ++i) { count1 = count1 + 1; if (n % i == 0) { return 0; } } return 1; } function main() { var i, n, html = ''; n = 1000; for (i = 2; i < n; ++i) { if (prime(i)) { html += i + ' , '; } } document.writeln(html); console.log(count, count0, count1); } main();
最后的程序P5:
var count = 0, count0 = 0, count1 = 0; function root(n) { count = count + 1; return Math.sqrt(n); } function prime(n) { var i, bound; if (n % 2 == 0) { return (n == 2); } if (n % 3 == 0) { return (n == 3); } if (n % 5 == 0) { return (n == 5); } bound = root(n); count0 = count0 + 1; for(i = 7; i*i <= bound; i = i + 2) { count1 = count1 + 1; if (n % i == 0) { return 0; } } return 1; } function main() { var i, n, html = ''; n = 1000; for (i = 2; i < n; ++i) { if (prime(i)) { html += i + ' , '; } } document.writeln(html); console.log(count, count0, count1); } main();
从980次减少到了265次!近3/4!大幅提高了程序的性能!
回应 2011-06-08 09:32 -
邻家の打工人 (math,english,computer science)
第一段倒数第二句: 其他过程没有性能监视的库函数,完成各种输入/输出和清理工作 原文: The other procedures are unprofiled library routines that perform miscellaneous input/output and housekeeping functions 翻译明显拗口啊,用的google translation么?2012-05-09 16:18
-
大句哥哥 (make pie, or invent universe)
读后感:大学时试图写的robocup新版程序就是个基于「小语言」的设计,又比如厂里用的stylus scss 这也是一层「小语言」的封装。我想,最大的好处在于**友好**,抽象后的语言 语言构件变的更自然 更远离冯诺伊曼机器 更贴近自然思维。设计「小语言」最基础的是需要对领域知识的扩展 也需要对编译器的深刻理解。2013-02-23 14:34
-
大句哥哥 (make pie, or invent universe)
作者这段话写的很有意思: I/O人性化为程序员提供了可以和不同行业的有趣的人进行交流的好理由。 作者认为 在工作中会与化学家、制图工作者、统计学家和政治学者接触,对于他这种「成人后还不能决定自己该干什么的人」,编程是一个理想的工作。 读后感:可以像作者一样「为了写出化学式制图程序而看了一周的化学知识」,I/O 是程序员和其他工种对接的地方,有趣、新鲜。2013-02-23 12:00
-
邻家の打工人 (math,english,computer science)
第二题的C问中,O(nloglogn)的复杂度可以这么推出: p = 2; while (p <= n) { for (i = 2 * p; i <= n; i += p) x[i] = 0; do p++; while (!x[p]); } 这是经过处理后的代码,主要是便于分析。容易知道,只需要分析x[i] = 0;的运行次数即可。 T(n) = n/2 + n/3 + ... + n/p, 其中p为不大于n最大的素数。然后我们有 T(n) = n(1/2 + 1/3 +..+ 1/p) *fix:吃饭时突然想到刚才右半部分的证明是不对的,特此更正下。 右边的其实...2012-05-09 17:04
第二题的C问中,O(nloglogn)的复杂度可以这么推出:
p = 2; while (p <= n) { for (i = 2 * p; i <= n; i += p) x[i] = 0; do p++; while (!x[p]); }
这是经过处理后的代码,主要是便于分析。容易知道,只需要分析x[i] = 0;的运行次数即可。 T(n) = n/2 + n/3 + ... + n/p, 其中p为不大于n最大的素数。然后我们有 T(n) = n(1/2 + 1/3 +..+ 1/p) *fix:吃饭时突然想到刚才右半部分的证明是不对的,特此更正下。 右边的其实是有专业术语的,称之为:素数调和级数,渐进于O(loglogn).欧拉给出了一个下界(非函数增长上的渐进下界,不过可以由此得到Omega)。 http://en.wikipedia.org/wiki/Prime_harmonic_series 如果 log_{a}n = O(logn) => log_{b}n = O(logn),其中a,b均>1 对于d,目前已知最好的方法是进行素性测试。该测试基于费马小定理,并且可以在现行时间内完成测试,不过没有100%正确的概率。然后可以进行大量独立重复测试,将概率控制在接受范围之内。
回应 2012-05-09 17:04 -
邻家の打工人 (math,english,computer science)
第一段倒数第二句: 其他过程没有性能监视的库函数,完成各种输入/输出和清理工作 原文: The other procedures are unprofiled library routines that perform miscellaneous input/output and housekeeping functions 翻译明显拗口啊,用的google translation么?2012-05-09 16:18
这本书的其他版本 · · · · · · ( 全部18 )
-
人民邮电出版社 (2008)9.1分 2255人读过
-
Addison-Wesley Professional (1999)9.5分 188人读过
-
中国电力出版社 (2004)8.9分 1240人读过
-
人民邮电出版社 (2008 年10月)8.6分 677人读过
在哪儿借这本书 · · · · · ·
以下书单推荐 · · · · · · ( 全部 )
谁读这本书?
二手市场
订阅关于编程珠玑(续)的评论:
feed: rss 2.0
0 有用 minjingchen_0 2017-06-07
编程技术以及各种实用技巧。
0 有用 小兵 2013-07-02
前面一本讲的太细节了, 反倒看这本的时候有了字字珠玑的感觉
0 有用 Locke 2013-06-11
相对第一本来说内容更杂了一些
0 有用 fcicq 2012-03-13
高级入门书. 但是随着时间, 某些部分有了更大的提高. 现在的读者需要注意这一点.
0 有用 一只黑眼睛看着大千世界 2012-05-24
相比前著,更偏重抛砖引玉,引发思考……
0 有用 东边有座山 2020-05-11
剽窃即是最诚恳的恭维
0 有用 肘子 2018-05-14
没有第一本干货多。
0 有用 samozihu 2018-03-17
很多地方不知所谓 比第一本差多了
0 有用 千山暮雪 2018-01-03
找工作的必要书籍之一,基本上是程序员的必读之作,只不过自己找工作时没有用心,结果荒废了一本好书!里面有很多经典的案例和算法解说,找工作的必备书籍啊!
0 有用 minjingchen_0 2017-06-07
编程技术以及各种实用技巧。