出版時(shí)間:2011-5 出版社:人民郵電出版社 作者:[美] Jon Bentley 譯者:錢(qián)麗艷,劉田 等
Tag標(biāo)簽:無(wú)
內(nèi)容概要
多年以來(lái),當(dāng)程序員們推選出最心愛(ài)的計(jì)算機(jī)圖書(shū)時(shí),《編程珠璣》總是位于前列。正如自然界里珍珠出自細(xì)沙對(duì)牡蠣的磨礪,計(jì)算機(jī)科學(xué)大師Jon
Bentley以其獨(dú)有的洞察力和創(chuàng)造力,從磨礪程序員的實(shí)際問(wèn)題中凝結(jié)出一篇篇不朽的編程“珠璣”,發(fā)表在《ACM通訊》最受歡迎的專(zhuān)欄中,最終結(jié)集為兩部不朽的計(jì)算機(jī)科學(xué)經(jīng)典名著,影響和激勵(lì)著一代又一代程序員和計(jì)算機(jī)科學(xué)工作者。本書(shū)為續(xù)集,秉承了《編程珠璣》的風(fēng)格,但涉及的主題更廣,包括文檔、小語(yǔ)言、性能監(jiān)視、圖形輸出等。
作者選取許多具有典型意義的復(fù)雜編程和算法問(wèn)題,生動(dòng)描繪了計(jì)算機(jī)大師們?cè)谔剿鹘鉀Q方案過(guò)程中發(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)?! ″X(qián)麗艷 北京大學(xué)信息科學(xué)技術(shù)學(xué)院基礎(chǔ)實(shí)驗(yàn)教學(xué)研究所軟件實(shí)驗(yàn)室主任、高級(jí)工程師,畢業(yè)于國(guó)防科技大學(xué),目前主要從事數(shù)值計(jì)算、程序設(shè)計(jì)等方面的研究工作。
書(shū)籍目錄
第一部分 編 程 技 術(shù)
第1 章 性能監(jiān)視工具
1.1 計(jì)算素?cái)?shù)
1.2 使用性能監(jiān)視工具
1.3 專(zhuān)用的性能監(jiān)視工具
1.4 開(kāi)發(fā)性能監(jiān)視工具
1.5 原理
1.6 習(xí)題
1.7 深入閱讀
第2 章 關(guān)聯(lián)數(shù)組
2.1 Awk 中的關(guān)聯(lián)數(shù)組
2.2 有窮狀態(tài)機(jī)模擬器
2.3 拓?fù)渑判颉 ?br /> 2.4 原理
2.5 習(xí)題
2.6 深入閱讀
第3 章 程序員的懺悔
3.1 二分搜索
3.2 選擇算法
3.3 子程序庫(kù)
3.4 原理
3.5 習(xí)題
第4 章 自描述數(shù)據(jù)
4.1 名字—值對(duì)
4.2 記錄來(lái)歷
4.3 排序?qū)嶒?yàn)
4.4 原理
4.5 習(xí)題
第二部分 實(shí) 用 技 巧
第5 章 劈開(kāi)戈?duì)柕现Y(jié)
5.1 小測(cè)驗(yàn)
5.2 解答
5.3 提示
5.4 原理
5.5 習(xí)題
5.6 深入閱讀
5.7 調(diào)試(邊欄)
第6 章 計(jì)算機(jī)科學(xué)箴言集
6.1 編碼
6.2 用戶(hù)界面
6.3 調(diào)試
6.4 性能
6.5 文檔
6.6 軟件管理
6.7 其他
6.8 原理
6.9 習(xí)題
6.10 深入閱讀
第7 章 粗略估算
7.1 頭腦熱身
7.2 性能的經(jīng)驗(yàn)法則
7.3 Little 定律
7.4 原理
7.5 習(xí)題
7.6 深入閱讀
7.7 日常速算(邊欄)
第8 章 人員備忘錄
8.1 備忘錄
8.2 原理
8.3 深入閱讀
第三部分 人性化I/O
第9 章 小語(yǔ)言
9.1 Pic 語(yǔ)言
9.2 視角
9.3 Pic 預(yù)處理器
9.4 用來(lái)實(shí)現(xiàn)Pic 的小語(yǔ)言
9.5 原理
9.6 習(xí)題
9.7 深入閱讀
第10 章 文檔設(shè)計(jì)
10.1 表格
10.2 三條設(shè)計(jì)原則
10.3 插圖
10.4 文本
10.5 合適的媒介
10.6 原理
10.7 習(xí)題
10.8 深入閱讀
10.9 次要問(wèn)題目錄(邊欄)
第11 章 圖形化輸出
11.1 實(shí)例研究
11.2 顯示結(jié)果取樣
11.3 原理
11.4 習(xí)題
11.5 深入閱讀
11.6 拿破侖遠(yuǎn)征莫斯科(邊欄)
第12 章 對(duì)調(diào)查的研究
12.1 有關(guān)民意調(diào)查的問(wèn)題
12.2 語(yǔ)言
12.3 圖片
12.4 原理
12.5 習(xí)題
第四部分 算 法
第13 章 絕妙的取樣
13.1 取樣算法一瞥
13.2 Floyd 算法
13.3 隨機(jī)排列
13.4 原理
13.5 習(xí)題
13.6 深入閱讀
第14 章 編寫(xiě)數(shù)值計(jì)算程序
14.1 問(wèn)題
14.2 牛頓迭代
14.3 良好的起點(diǎn)
14.4 代碼
14.5 原理
14.6 習(xí)題
14.7 深入閱讀
14.8 數(shù)值算法的力量(邊欄)
第15 章 選擇
15.1 問(wèn)題
15.2 程序
15.3 運(yùn)行時(shí)間分析
15.4 原理
15.5 習(xí)題
15.6 深入閱讀
附錄A C 和Awk 語(yǔ)言
附錄B 子程序庫(kù)
部分習(xí)題答案
索引
章節(jié)摘錄
然后我跑回我的終端前,很興奮地看到這次二分搜索成功地通過(guò)了n從1到9的測(cè)試。然而當(dāng)n=10的時(shí)候,程序再次失敗了,我的心都快碎了。那個(gè)時(shí)候,bign=10。我實(shí)在想不出為什么程序會(huì)在n-10的時(shí)候失敗,又按照bign=9和bign=11各運(yùn)行了一次,希望問(wèn)題的產(chǎn)生是因?yàn)槟鞘亲詈笠淮螠y(cè)試。不幸的是,代碼總是一直到9都能正確運(yùn)行,然后運(yùn)行10或者11就會(huì)出錯(cuò)。從9到10,到底出了什么問(wèn)題? Awk變量既可以是數(shù)值,也可以是字符串。Awk的說(shuō)明書(shū)中說(shuō),如果比較的雙方都是數(shù)值,那么就按照數(shù)值比較的規(guī)則來(lái)比較,否則就按照字符串的規(guī)則來(lái)比較。由于這個(gè)程序涉及函數(shù)調(diào)用的特殊情況,解釋器誤認(rèn)為字符串“10”先于字符串“5”。我寫(xiě)了6行的小程序捕捉到了這個(gè)錯(cuò)誤,Kernighan在次日解決了這個(gè)問(wèn)題?! ?.4原理 本章觸及了程序員日常工作中的一些常見(jiàn)任務(wù)。它們可能不是那么吸引人,但是絕對(duì)很重要?! ∧_手架。本章介紹了程序原型、在程序中加入輸出以觀察運(yùn)行過(guò)程、度量代碼以及組件測(cè)試等方法。其他的腳手架方法還有測(cè)試數(shù)據(jù)(虛擬的文件和數(shù)據(jù)結(jié)構(gòu))以及使用“殘樁”代碼模擬未完成的程序從而方便自頂向下的測(cè)試。 專(zhuān)用語(yǔ)言。合適的編程語(yǔ)言可以使代碼的長(zhǎng)度減少一個(gè)量級(jí),清晰程度上升一個(gè)量級(jí)。請(qǐng)大家自己發(fā)掘各語(yǔ)言的優(yōu)勢(shì)和特性。Awk是一種構(gòu)造算法原型的極好的語(yǔ)言:其內(nèi)建的關(guān)聯(lián)數(shù)組可以使你模擬許多常用的數(shù)據(jù)結(jié)構(gòu),它的字段、隱式循環(huán)、模式一動(dòng)作對(duì)等設(shè)計(jì)極大地簡(jiǎn)化了輸入輸出過(guò)程,隱式的變量聲明和初始化也使得程序更加簡(jiǎn)潔。AWK Programming Language一書(shū)(見(jiàn)2.6節(jié))的第7章中還有關(guān)于用Awk進(jìn)行算法實(shí)驗(yàn)的更多資料。13.2節(jié)和答案14.6給出了兩個(gè)小型算法中應(yīng)用的Awk腳手架?! y(cè)試與調(diào)試。本章專(zhuān)注于測(cè)試和調(diào)試小的程序。先用白盒測(cè)試的方法觀察程序是否按照我們預(yù)想的方法運(yùn)行,然后再用黑盒測(cè)試來(lái)增加自己對(duì)于程序正確性的信心。錯(cuò)誤報(bào)告。對(duì)于子程序庫(kù)的組件測(cè)試不經(jīng)意間變成了對(duì)于Awk最近新引入特性的一次系統(tǒng)測(cè)試。Kernighan把這種現(xiàn)象稱(chēng)作“新用戶(hù)現(xiàn)象”:新系統(tǒng)的每一個(gè)新用戶(hù)都能夠發(fā)現(xiàn)一系列的新錯(cuò)誤。相比于之前的用戶(hù),我對(duì)函數(shù)的鉆研更深。在這個(gè)300行的程序兩次遇到Awk的錯(cuò)誤時(shí),我都是先用一段小的程序(一個(gè)是15行,一個(gè)只有6行)重現(xiàn)這一奇異的現(xiàn)象,然后才報(bào)告錯(cuò)誤的。貝爾通信研究院的Stu Feldman這樣描述他多年來(lái)維護(hù)一個(gè)Fortran編譯器的經(jīng)驗(yàn): 當(dāng)你在錯(cuò)誤報(bào)告附上25000行代碼的時(shí)候,無(wú)論是程序作者、支持機(jī)構(gòu)還是你的朋 友,都會(huì)選擇無(wú)視你的報(bào)告。我花了幾年時(shí)間來(lái)教會(huì)他這一點(diǎn)(為了保護(hù)當(dāng)事人,把姓名隱去了)。采用的技術(shù)包括凝視代碼、發(fā)揮直覺(jué)、用二分法(試著扔掉子程序的后半部分)等等。如果你發(fā)現(xiàn)了一個(gè)錯(cuò)誤,請(qǐng)使用最小的測(cè)試用例來(lái)報(bào)告它?! 〕绦蝌?yàn)證的角色。為了保證自己的程序是正確的,我會(huì)使用任何可用的方法。非正式的驗(yàn)證方法可以幫助我編寫(xiě)代碼,并在實(shí)現(xiàn)前就檢驗(yàn)我的想法,一旦實(shí)現(xiàn)了代碼,測(cè)試就變成了最關(guān)鍵的問(wèn)題。我在程序驗(yàn)證方面有了些經(jīng)驗(yàn)后,再也不會(huì)對(duì)于一個(gè)復(fù)雜的小程序第一次運(yùn)行就正常工作而感到驚訝。如果程序不能工作,我會(huì)通過(guò)測(cè)試和調(diào)試的方法找到?jīng)]有被滿(mǎn)足的斷言,并修改相應(yīng)的代碼?! ?/pre>媒體關(guān)注與評(píng)論
《編程珠璣》是對(duì)我職業(yè)生涯影響最大的書(shū)之一,其中的許多真知灼見(jiàn)多年之后仍然使我受益匪淺。Jon在《編程珠璣(續(xù))》中組織了更多素材,諸多內(nèi)容讓我耳目一新。” ——Steve McConnell,軟件工程大師,IEEE Software前主編,《代碼大全》作者 “對(duì)每一位遇到的程序員,我都會(huì)毫不遲疑地建議他閱讀并不斷重讀這部經(jīng)典之作。” ——Slashdot編輯推薦
經(jīng)久不衰的計(jì)算機(jī)科學(xué)名著! 集深邃思想、實(shí)戰(zhàn)技術(shù)與趣味軼事于一冊(cè)! 領(lǐng)略計(jì)算機(jī)科學(xué)之美!圖書(shū)封面
圖書(shū)標(biāo)簽Tags
無(wú)評(píng)論、評(píng)分、閱讀與下載
- 還沒(méi)讀過(guò)(82)
- 勉強(qiáng)可看(593)
- 一般般(101)
- 內(nèi)容豐富(4201)
- 強(qiáng)力推薦(344)
250萬(wàn)本中文圖書(shū)簡(jiǎn)介、評(píng)論、評(píng)分,PDF格式免費(fèi)下載。 第一圖書(shū)網(wǎng) 手機(jī)版