出版時間:2011-5 出版社:人民郵電出版社 作者:[美] Jon Bentley 譯者:錢麗艷,劉田 等
Tag標簽:無
內容概要
多年以來,當程序員們推選出最心愛的計算機圖書時,《編程珠璣》總是位于前列。正如自然界里珍珠出自細沙對牡蠣的磨礪,計算機科學大師Jon
Bentley以其獨有的洞察力和創(chuàng)造力,從磨礪程序員的實際問題中凝結出一篇篇不朽的編程“珠璣”,發(fā)表在《ACM通訊》最受歡迎的專欄中,最終結集為兩部不朽的計算機科學經(jīng)典名著,影響和激勵著一代又一代程序員和計算機科學工作者。本書為續(xù)集,秉承了《編程珠璣》的風格,但涉及的主題更廣,包括文檔、小語言、性能監(jiān)視、圖形輸出等。
作者選取許多具有典型意義的復雜編程和算法問題,生動描繪了計算機大師們在探索解決方案過程中發(fā)生的軼事、走過的彎路和不斷精益求精的歷程,引導讀者像真正的程序員和軟件工程師那樣富有創(chuàng)新性地思考,并透徹闡述和總結了許多獨特而精妙的設計原則、思考和解決問題的方法以及實用程序設計技巧。每章后所附習題極具挑戰(zhàn)性和啟發(fā)性,書末給出了簡潔的解答。
作者簡介
Jon Bentley 世界著名計算機科學家,被譽為影響算法發(fā)展的十位大師之一。他先后任職于卡內基-梅隆大學(1976~1982)、貝爾實驗室(1982~2001)和 Avaya實驗室(2001年至今)。在卡內基-梅隆大學擔任教授期間,他培養(yǎng)了包括Tcl語言設計者John Ousterhout、Java語言設計者James Gosling、《算法導論》作者之一Charles Leiserson在內的許多計算機科學大家。2004年榮獲Dr. Dobb’s程序設計卓越獎?! ″X麗艷 北京大學信息科學技術學院基礎實驗教學研究所軟件實驗室主任、高級工程師,畢業(yè)于國防科技大學,目前主要從事數(shù)值計算、程序設計等方面的研究工作。
書籍目錄
第一部分 編 程 技 術
第1 章 性能監(jiān)視工具
1.1 計算素數(shù)
1.2 使用性能監(jiān)視工具
1.3 專用的性能監(jiān)視工具
1.4 開發(fā)性能監(jiān)視工具
1.5 原理
1.6 習題
1.7 深入閱讀
第2 章 關聯(lián)數(shù)組
2.1 Awk 中的關聯(lián)數(shù)組
2.2 有窮狀態(tài)機模擬器
2.3 拓撲排序
2.4 原理
2.5 習題
2.6 深入閱讀
第3 章 程序員的懺悔
3.1 二分搜索
3.2 選擇算法
3.3 子程序庫
3.4 原理
3.5 習題
第4 章 自描述數(shù)據(jù)
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 性能的經(jīng)驗法則
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 用來實現(xiàn)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 章 編寫數(shù)值計算程序
14.1 問題
14.2 牛頓迭代
14.3 良好的起點
14.4 代碼
14.5 原理
14.6 習題
14.7 深入閱讀
14.8 數(shù)值算法的力量(邊欄)
第15 章 選擇
15.1 問題
15.2 程序
15.3 運行時間分析
15.4 原理
15.5 習題
15.6 深入閱讀
附錄A C 和Awk 語言
附錄B 子程序庫
部分習題答案
索引
章節(jié)摘錄
然后我跑回我的終端前,很興奮地看到這次二分搜索成功地通過了n從1到9的測試。然而當n=10的時候,程序再次失敗了,我的心都快碎了。那個時候,bign=10。我實在想不出為什么程序會在n-10的時候失敗,又按照bign=9和bign=11各運行了一次,希望問題的產生是因為那是最后一次測試。不幸的是,代碼總是一直到9都能正確運行,然后運行10或者11就會出錯。從9到10,到底出了什么問題? Awk變量既可以是數(shù)值,也可以是字符串。Awk的說明書中說,如果比較的雙方都是數(shù)值,那么就按照數(shù)值比較的規(guī)則來比較,否則就按照字符串的規(guī)則來比較。由于這個程序涉及函數(shù)調用的特殊情況,解釋器誤認為字符串“10”先于字符串“5”。我寫了6行的小程序捕捉到了這個錯誤,Kernighan在次日解決了這個問題?! ?.4原理 本章觸及了程序員日常工作中的一些常見任務。它們可能不是那么吸引人,但是絕對很重要?! ∧_手架。本章介紹了程序原型、在程序中加入輸出以觀察運行過程、度量代碼以及組件測試等方法。其他的腳手架方法還有測試數(shù)據(jù)(虛擬的文件和數(shù)據(jù)結構)以及使用“殘樁”代碼模擬未完成的程序從而方便自頂向下的測試?! S谜Z言。合適的編程語言可以使代碼的長度減少一個量級,清晰程度上升一個量級。請大家自己發(fā)掘各語言的優(yōu)勢和特性。Awk是一種構造算法原型的極好的語言:其內建的關聯(lián)數(shù)組可以使你模擬許多常用的數(shù)據(jù)結構,它的字段、隱式循環(huán)、模式一動作對等設計極大地簡化了輸入輸出過程,隱式的變量聲明和初始化也使得程序更加簡潔。AWK Programming Language一書(見2.6節(jié))的第7章中還有關于用Awk進行算法實驗的更多資料。13.2節(jié)和答案14.6給出了兩個小型算法中應用的Awk腳手架?! y試與調試。本章專注于測試和調試小的程序。先用白盒測試的方法觀察程序是否按照我們預想的方法運行,然后再用黑盒測試來增加自己對于程序正確性的信心。錯誤報告。對于子程序庫的組件測試不經(jīng)意間變成了對于Awk最近新引入特性的一次系統(tǒng)測試。Kernighan把這種現(xiàn)象稱作“新用戶現(xiàn)象”:新系統(tǒng)的每一個新用戶都能夠發(fā)現(xiàn)一系列的新錯誤。相比于之前的用戶,我對函數(shù)的鉆研更深。在這個300行的程序兩次遇到Awk的錯誤時,我都是先用一段小的程序(一個是15行,一個只有6行)重現(xiàn)這一奇異的現(xiàn)象,然后才報告錯誤的。貝爾通信研究院的Stu Feldman這樣描述他多年來維護一個Fortran編譯器的經(jīng)驗: 當你在錯誤報告附上25000行代碼的時候,無論是程序作者、支持機構還是你的朋 友,都會選擇無視你的報告。我花了幾年時間來教會他這一點(為了保護當事人,把姓名隱去了)。采用的技術包括凝視代碼、發(fā)揮直覺、用二分法(試著扔掉子程序的后半部分)等等。如果你發(fā)現(xiàn)了一個錯誤,請使用最小的測試用例來報告它?! 〕绦蝌炞C的角色。為了保證自己的程序是正確的,我會使用任何可用的方法。非正式的驗證方法可以幫助我編寫代碼,并在實現(xiàn)前就檢驗我的想法,一旦實現(xiàn)了代碼,測試就變成了最關鍵的問題。我在程序驗證方面有了些經(jīng)驗后,再也不會對于一個復雜的小程序第一次運行就正常工作而感到驚訝。如果程序不能工作,我會通過測試和調試的方法找到?jīng)]有被滿足的斷言,并修改相應的代碼?! ?/pre>媒體關注與評論
《編程珠璣》是對我職業(yè)生涯影響最大的書之一,其中的許多真知灼見多年之后仍然使我受益匪淺。Jon在《編程珠璣(續(xù))》中組織了更多素材,諸多內容讓我耳目一新。” ——Steve McConnell,軟件工程大師,IEEE Software前主編,《代碼大全》作者 “對每一位遇到的程序員,我都會毫不遲疑地建議他閱讀并不斷重讀這部經(jīng)典之作。” ——Slashdot編輯推薦
經(jīng)久不衰的計算機科學名著! 集深邃思想、實戰(zhàn)技術與趣味軼事于一冊! 領略計算機科學之美!圖書封面
圖書標簽Tags
無評論、評分、閱讀與下載