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