《編程珠璣(續)》是2011年05月01日Addision Wesle出版的圖書,作者Jon Bentley。本書主要介紹了和程式設計師有關的知識。
基本介紹
- 書名:編程珠璣(續)
- 作者:Jon Bentley
- 原版名稱:More Programming Pearls: Confessions of a Coder
- 譯者:錢麗艷、劉田
- 類別:計算機
- 頁數:196
- 出版社:Addision Wesle
- 出版時間: 2011-05-01
- 開本:16開
- 叢書名:圖靈原版計算機科學系列
摘要,譯序,目錄,
摘要
本書是計算機科學方面的經典名著《編程珠璣》的姊妹篇,講述了對於程式設計師有共性的知識。書中涵蓋了程式設計師操縱程式的技術、程式設計師取捨的技巧、輸入和輸出設計以及算法示例,這些內容組成一個有機的整體,如一串串珠璣展示給程式設計師。本書適合各級程式設計師閱讀參考。
譯序
本書作者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 章 性能監視工具 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