本書(shū)是計(jì)算機(jī)科學(xué)方面的經(jīng)典名著《編程珠璣》的姊妹篇,講述了對(duì)于程序員有共性的知識(shí)。本書(shū)延續(xù)了《編程珠璣》的特色,通過(guò)一些精心設(shè)計(jì)的有趣而又頗具指導(dǎo)意義的程序,對(duì)實(shí)用程序設(shè)計(jì)技巧及基本設(shè)計(jì)原則進(jìn)行透徹而睿智的描述,為復(fù)雜的編程問(wèn)題提供清晰而完備的解決思路。書(shū)中涵蓋了程序員操縱程序的技術(shù)、程序員取舍的技巧、輸入和輸出設(shè)計(jì)以及算法示例,這些內(nèi)容結(jié)合成一個(gè)有機(jī)的整體,如一串串珠璣展示給程序員。
非常有影響力的計(jì)算機(jī)科學(xué)著作之一
融深邃思想、實(shí)戰(zhàn)技術(shù)與趣味軼事于一爐的奇書(shū)
帶你真正領(lǐng)略計(jì)算機(jī)科學(xué)之美
多年以來(lái),當(dāng)讓程序員推選喜愛(ài)的計(jì)算機(jī)圖書(shū)時(shí),《編程珠璣》總是位于前列。正如自然界里珍珠出自細(xì)沙對(duì)牡蠣的磨礪,計(jì)算機(jī)科學(xué)大師喬恩·本特利以其獨(dú)有的洞察力和創(chuàng)造力,從磨礪程序員的實(shí)際問(wèn)題中凝結(jié)出一篇篇編程“珠璣”,成為世界計(jì)算機(jī)界名刊《ACM通訊》歷史上*受歡迎的專(zhuān)欄,*終結(jié)集為兩部計(jì)算機(jī)科學(xué)經(jīng)典名著,影響和激勵(lì)著一代又一代程序員和計(jì)算機(jī)科學(xué)工作者。本書(shū)為第二卷,秉承了第一卷的風(fēng)格,但本書(shū)涉及的范圍更廣,包括文檔、小語(yǔ)言、性能監(jiān)視、圖形輸出等。
在書(shū)中,作者選取許多具有典型意義的復(fù)雜編程和算法問(wèn)題,生動(dòng)描繪了歷史上大師們?cè)谔剿鹘鉀Q方案中發(fā)生的軼事、走過(guò)的彎路和不斷精益求精的歷程,引導(dǎo)讀者像真正的程序員和軟件工程師那樣富于創(chuàng)新性地思考,并透徹闡述和總結(jié)了許多獨(dú)特而精妙的設(shè)計(jì)原則、思考和解決問(wèn)題的方法以及實(shí)用程序設(shè)計(jì)技巧。每章后所附習(xí)題極具挑戰(zhàn)性和啟發(fā)性,書(shū)末給出了簡(jiǎn)潔的解答。
作者簡(jiǎn)介
喬恩.本特利(Jon Bentley) 世界著名計(jì)算機(jī)科學(xué)家,被譽(yù)為影響算法發(fā)展的十位大師之一。他先后任職于卡內(nèi)基-梅隆大學(xué)(1976—1982)、貝爾實(shí)驗(yàn)室(1982—2001)和Avaya實(shí)驗(yàn)室(2001年至今)。在卡內(nèi)基-梅隆大學(xué)擔(dān)任教授期間,他培養(yǎng)了包括Tcl語(yǔ)言設(shè)計(jì)者John Ousterhout、Java語(yǔ)言設(shè)計(jì)者James Gosling、《算法導(dǎo)論》作者之一Charles Leiserson在內(nèi)的許多計(jì)算機(jī)科學(xué)大家。2004年榮獲Dr. Dobb's 程序設(shè)計(jì)卓越獎(jiǎng)。
\u007f
主要譯者簡(jiǎn)介
錢(qián)麗艷 北京大學(xué)信息科學(xué)技術(shù)學(xué)院基礎(chǔ)實(shí)驗(yàn)教學(xué)研究所軟件實(shí)驗(yàn)室主任、高級(jí)工程師,畢業(yè)于國(guó)防科技大學(xué),目前主要從事數(shù)值計(jì)算、程序設(shè)計(jì)方面的研究工作。
劉田 北京大學(xué)信息科學(xué)技術(shù)學(xué)院計(jì)算機(jī)系軟件研究所副教授,畢業(yè)于中國(guó)科學(xué)技術(shù)大學(xué),目前主要從事離散數(shù)學(xué)、計(jì)算機(jī)理論方面的教學(xué)和研究工作,翻譯出版了多部國(guó)外著名離散數(shù)學(xué)和計(jì)算機(jī)理論教材。
目錄
第 一部分 編程技術(shù)
第 1章 性能監(jiān)視工具 3
1.1 計(jì)算素?cái)?shù) 3
1.2 使用性能監(jiān)視工具 7
1.3 專(zhuān)用的性能監(jiān)視工具 9
1.4 開(kāi)發(fā)性能監(jiān)視工具 11
1.5 原理 12
1.6 習(xí)題 13
1.7 深入閱讀 14
第 2章 關(guān)聯(lián)數(shù)組 15
2.1 Awk 中的關(guān)聯(lián)數(shù)組 16
2.2 有窮狀態(tài)機(jī)模擬器 18
2.3 拓?fù)渑判颉?0
2.4 原理 23
2.5 習(xí)題 24
2.6 深入閱讀 25
第3章 程序員的懺悔 27
3.1 二分搜索 28
3.2 選擇算法 30
3.3 子程序庫(kù) 33
3.4 原理 35
3.5 習(xí)題 36
第4章 自描述數(shù)據(jù) 39
4.1 名字—值對(duì) 39
4.2 記錄來(lái)歷 42
4.3 排序?qū)嶒?yàn) 44
4.4 原理 45
4.5 習(xí)題 46
第二部分 實(shí)用技巧
第5章 劈開(kāi)戈?duì)柕现Y(jié) 49
5.1 小測(cè)驗(yàn) 49
5.2 解答 50
5.3 提示 51
5.4 原理 54
5.5 習(xí)題 55
5.6 深入閱讀 56
5.7 調(diào)試(邊欄) 56
第6章 計(jì)算機(jī)科學(xué)箴言集 59
6.1 編碼 60
6.2 用戶(hù)界面 61
6.3 調(diào)試 62
6.4 性能 63
6.5 文檔 64
6.6 軟件管理 65
6.7 其他 67
6.8 原理 67
6.9 習(xí)題 68
6.10 深入閱讀 69
第7章 粗略估算 71
7.1 頭腦熱身 71
7.2 性能的經(jīng)驗(yàn)法則 73
7.3 Little 定律 75
7.4 原理 76
7.5 習(xí)題 76
7.6 深入閱讀 78
7.7 日常速算(邊欄) 78
第8章 人員備忘錄 81
8.1 備忘錄 82
8.2 原理 83
8.3 深入閱讀 83
第三部分 人性化I/O
第9章 小語(yǔ)言 87
9.1 Pic 語(yǔ)言 88
9.2 視角 91
9.3 Pic 預(yù)處理器 94
9.4 用來(lái)實(shí)現(xiàn)Pic 的小語(yǔ)言 96
9.5 原理 100
9.6 習(xí)題 101
9.7 深入閱讀 103
第 10章 文檔設(shè)計(jì) 105
10.1 表格 106
10.2 三條設(shè)計(jì)原則 108
10.3 插圖 109
10.4 文本 111
10.5 合適的媒介 113
10.6 原理 116
10.7 習(xí)題 116
10.8 深入閱讀 117
10.9 次要問(wèn)題目錄(邊欄) 117
第 11章 圖形化輸出 119
11.1 實(shí)例研究 119
11.2 顯示結(jié)果取樣 122
11.3 原理 125
11.4 習(xí)題 126
11.5 深入閱讀 128
11.6 拿破侖遠(yuǎn)征莫斯科(邊欄) 128
第 12章 對(duì)調(diào)查的研究 131
12.1 有關(guān)民意調(diào)查的問(wèn)題 131
12.2 語(yǔ)言 132
12.3 圖片 135
12.4 原理 138
12.5 習(xí)題 139
第四部分 算法
第 13章 絕妙的取樣 143
13.1 取樣算法一瞥 143
13.2 Floyd 算法 144
13.3 隨機(jī)排列 146
13.4 原理 147
13.5 習(xí)題 147
13.6 深入閱讀 148
第 14 章 編寫(xiě)數(shù)值計(jì)算程序 151
14.1 問(wèn)題 151
14.2 牛頓迭代 152
14.3 良好的起點(diǎn) 154
14.4 代碼 155
14.5 原理 158
14.6 習(xí)題 158
14.7 深入閱讀 160
14.8 數(shù)值算法的力量(邊欄) 161
第 15章 選擇 163
15.1 問(wèn)題 163
15.2 程序 164
15.3 運(yùn)行時(shí)間分析 167
15.4 原理 171
15.5 習(xí)題 172
15.6 深入閱讀 174
附錄A C 和Awk 語(yǔ)言 175
附錄B 子程序庫(kù) 179
部分習(xí)題答案 187
索引 207