編程珠璣

出版時間:2006-11  出版社:人民郵電出版社  作者:Jon Bentley  頁數(shù):239  
Tag標(biāo)簽:無  

內(nèi)容概要

  本書針對程序設(shè)計人員探討了一系列的實際問題,這些問題是對現(xiàn)實中常見問題的歸納總結(jié)。作者雖然沒有給出解決這些問題的具體代碼,但始終非常富有洞察力和創(chuàng)造力地圍繞著這些折磨程序員的實際問題展開討論,從而引導(dǎo)讀者理解問題并學(xué)會解決問題的技能,這些都是程序員實際編程生涯中的基本技能。為此,本書給出了一些精心設(shè)計的有趣而且頗具指導(dǎo)意義的程序,這些程序能夠為那些復(fù)雜的編程問題提供清晰而且完備的解決思路,書中還充滿了對實用程序設(shè)計技巧及基本設(shè)計原則的清晰而睿智的描述?! ”緯诘谝话娴幕A(chǔ)上增加了3個方面的新內(nèi)容:測試、調(diào)試和計量,集合表示,字符串問題,并對第一版的所有程序都進(jìn)行了改寫,生成了等量的新代碼?! ∽髡吆喗椋骸 on Bentley是位于新澤西州Murray Hill的朗訊貝爾實驗室計算機科學(xué)研究中心的技術(shù)委員會委員,Jon自1998年就成為Dr. Dobbs Joumal雜志的特約編輯,他的“編程珠璣”專欄多年來一直是頂級學(xué)術(shù)雜志Communications of the ACM最風(fēng)行的特色專欄之一,而本書正是建立在這些專欄的基礎(chǔ)之上。

作者簡介

  Jon Bentley是位于新澤西州Murray Hill的朗訊貝爾實驗室計算機科學(xué)研究中心的技術(shù)委員會委員,Jon自1998年就成為Dr. Dobbs Joumal雜志的特約編輯,他的“編程珠璣”專欄多年來一直是頂級學(xué)術(shù)雜志Communications of the ACM最風(fēng)行的特色專欄之一,而本書正是建立在這些專欄的基礎(chǔ)之上。

書籍目錄

Part I:PRELIMINARIESColumn 1:Cracking the OysterA Friendly Conversation·Precise Problem Statement·Program Design·Implementation Sketch·Principles·Problems·Further ReadingColumn 2:Aha! AlgorithmsThree Problems·Ubiquitous Binary Search·The Power of Primitives·Getting It Together: Sorting·Principles · Problems·Further Reading·Implementing an Anagram ProgramColumn 3:Data Structures ProgramsA Survey Program·Form-Letter Programming·An Array of Examples·Structuring Data·Powerful Tools for Specialized Data·Principles·Problems·Further ReadingColumn 4:Writing Correct ProgramsThe Challenge of Binary Search·Writing the Program·Understanding the Program·Principles·The Roles of Program Verification·Problems·Further ReadingColumn 5:A Small Matter of ProgrammingFrom Pseudocode to C·A Test Harness·The Art of Assertion·Automated Testing·Timing·The Complete Program·Principles·Problems·Further Reading·DebuggingPart II:PERFORMANCEColumn 6:Perspective on PerformanceA Case Study·Design Levels·Principles·Problems·Further ReadingColumn 7:The Back of the EnvelopeBasic Skills·Performance Estimates·Safety Factors·Littles Law·Principles·Problems·Further Reading·Quick Calculations in Everyday LifeColumn 8:Algorithm Design TechniquesThe Problem and a Simple Algorithm·Two Quadratic Algorithms·A Divide-and-Conquer Algorithm·A Scanning Algorithm·What Does It Matter?·Principles·Problems·Further ReadingColumn 9:Code TuningA Typical Story·A First Aid Sampler·Major Surgery—Binary Search·Principles·Problems·Further ReadingColumn 10:Squeezing SpaceThe Key—Simplicity·An Illustrative Problem·Techniques for Data Space·Techniques for Code Space·Principles·Problems·Further Reading·A Big SqueezePart III:THE PRODUCTColumn 11:SortingInsertion Sort·A Simple Quicksort·Better Quicksorts·Principles·Problems·Further ReadingColumn 12:A Sample ProblemThe Problem·One Solution·The Design Space·Principles·Problems·Further ReadingColumn 13:SearchingThe Interface·Linear Structures·Binary Search Trees·Structures for Integers·Principles·Problems·Further Reading·A Real Searching ProblemColumn 14:HeapsThe Data Structure·Two Critical Functions·Priority Queues·A Sorting Algorithm·Principles·Problems·Further ReadingColumn 15:Strings of PearlsWords·Phrases·Generating Text·Principles·Problems·Further ReadingEpilog to the First EditionEpilog to the Second EditionAppendix 1:a Catalog of AlgorithmsAppendix 2:An Second EditionAppendix 3:Cost Models for Time and SpaceAppendix 4:Rules for Code TuningAppendix 5:C++Classes for SearchingHints for Selected ProblemsSolutions to Setected ProblemsIndex

編輯推薦

  《編程珠璣》第一版是我早期職業(yè)生涯中閱讀過的對我影響較大的書籍之一,在書中首次接觸到的很多觀點都讓我長期受益。作者在這一版本中做了重要更新。新增加的很多例子讓我耳目一新。  ——Steve McConnell,《代碼大全》作者  如果讓程序員們列舉他們喜歡的書籍,Jon Bentley的《編程珠璣》一定可以歸于經(jīng)典之列。如同精美的珍珠出自飽受沙礫折磨的牡蠣,程序員們的精彩設(shè)計也來源于曾經(jīng)折磨他們的實際問題。Bentley的“珍珠”基于堅實的工程學(xué)基礎(chǔ),為那些麻煩的問題提供了富于智慧性和創(chuàng)造性的解決方案。本書通過一些有趣的具有指導(dǎo)意義的程序,對程序設(shè)計技巧和基本設(shè)計原理進(jìn)行了清晰而睿智的描述。因此本書對各個層次的程序員都具有很高的價值?! ≡谶@一版本中,作者對第一版本中的大多數(shù)素材進(jìn)行了徹底更新,以反映現(xiàn)在的程序設(shè)計方法和環(huán)境。此外還增加了三方面的新內(nèi)容:測試、調(diào)試和計時,集合表示,字符串問題。所有原始程序都重新進(jìn)行了改寫,并生成了等量的新代碼。讀者可以從本書網(wǎng)站獲取所有程序的C或C++實現(xiàn)。  在新版本中,作者對于程序設(shè)計問題本質(zhì)仍然保持了極大的關(guān)注,并針對這些問題給出了實用的解決方案。不論您是第一次閱讀這本經(jīng)典讀物,還是已經(jīng)閱讀過第一版,這本書都會成為您最喜愛的圖書之一。

圖書封面

圖書標(biāo)簽Tags

評論、評分、閱讀與下載


    編程珠璣 PDF格式下載


用戶評論 (總計32條)

 
 

  •     這本書介紹了很多小技巧,小手段。雖然都不是些什么了不起的東西,但也能讓讀者感受到編程的魅力。
      作者介紹的恰恰是入門程序員所應(yīng)該掌握的技巧——思考的技巧和算法的技巧——很簡單很巧妙的代碼段子,但掌握這些以后,卻可以去做大事,這恐怕就是珠璣的含義吧。
  •     不知道翻譯問題,還是本來太高深,竟然看不懂。
      比如:21頁(3.1調(diào)查程序)第三行中,“在實際問題中,共有25列,表示8個類別以及3個類似的輸出頁面……”這是毛呀,25列從何而來,輸出頁面有為何物。真是莫名其妙。既然是調(diào)查程序,這段程序的目標(biāo)是什么都沒有。。。(原諒我的無知,請辯駁解答)
  •     就中國電力出版社這個版本,翻譯真不是一般的爛。
      翻譯真不是一般的爛。
      翻譯真不是一般的爛。
      翻譯真不是一般的爛。
      翻譯真不是一般的爛。
      翻譯真不是一般的爛。
      翻譯真不是一般的爛。
      翻譯真不是一般的爛。
      翻譯真不是一般的爛。
      翻譯真不是一般的爛。
      翻譯真不是一般的爛。
      翻譯真不是一般的爛。
      翻譯真不是一般的爛。
      翻譯真不是一般的爛。
      
  •     一直追尋像以前閱讀組合數(shù)學(xué)時那種淋漓盡致的思維沖擊體驗,但要遇到一本對口味的書殊為不易。最近幾年漸漸失去了的閱讀的沖動,當(dāng)閱讀變成了填充知識庫的活動時,樂趣就殆盡了。
      這個作品給我?guī)砹藰啡?,同時能拓展視野,告訴我一些別的算法書籍上不會論及的事物。
  •     瀏覽了一遍,有亮點但是內(nèi)容少,試想一下1988左右寫的書里面舉的例子會是什么樣的。。。想學(xué)算法去看《算法導(dǎo)論》吧。希望看第二遍能有所收獲。想看項目管理可以去瞄瞄其他的。本書真不值得推薦。哎。各位高手勿噴,真心覺得不咋滴
  •     我以前教別人學(xué)習(xí)編程,這是我的愛好,也是我以前的工作,我也像每個喜歡編程的人推薦這本,每次看到它就想起里面的點點滴滴,從位圖排序到二分搜索,還是很多收獲的~唯一的敗筆是本書翻譯上問題不少,增加了閱讀本書的難度~另外我本人并不喜歡偽代碼~其他就沒什么了~每個人都該看的編程書~
  •     《編程珠璣》第一版是我早期職業(yè)生涯中閱讀過的對我影響較大的書籍之一,在書中首次接觸到的很多觀點都讓我長期受益。作者在這一版本中做了重要更新,新增加的很多例子讓我耳目一新。——Steve McConnell,《代碼大全》作者  如果讓程序員列舉出他們喜歡的書籍,Jon Bentley的《編程珠璣》一定可以歸于經(jīng)典之列。如同精美的珍珠出自飽受沙礫折磨的牡蠣,程序員們的精彩設(shè)計也來源泉于曾經(jīng)折磨他們的實際問題。Bentley的“珍珠”基于堅實的工程學(xué)基礎(chǔ),為那些麻煩的問題提供了富于智慧性和創(chuàng)造性的解決方案。本書通過一些有趣的具有指導(dǎo)意義的程序,對程序設(shè)計技巧和基本設(shè)計原理進(jìn)行了清晰而睿智的描述。因此本書對各個層次的程序員都具有很高的價值?! ”緯髡叩摹熬幊讨榄^”專欄多年來一直是頂級學(xué)術(shù)雜志Communications of the ACM最風(fēng)行的特色專欄之一,而本書正是建立在這些專欄的基礎(chǔ)之上。
  •     計算機的世界,只有苦B二字!原理計算機才是重點額!讀的過程真是一種享受。看到好的代碼,好的思想,總會忍不住默記幾遍。     看到覺得有點意味的地方最好多想想來龍去脈,想想為什么,因為緊接著的會是令人驚.........
      
  •      讀的過程真是一種享受??吹胶玫拇a,好的思想,總會忍不住默記幾遍。
        
         看到覺得有點意味的地方最好多想想來龍去脈,想想為什么,因為緊接著的會是令人驚喜的解說。 多寫寫書上的代碼,感覺不錯(寫完以后感覺忘了很久的算法又重新回來了)。 每章的“原理”部分是高度性的概括,"習(xí)題"是很好的,促使你去思考,做習(xí)題是很有必要的,不想“浪費”時間去“做習(xí)題”了的結(jié)果可能是以后會用更多的時間才能想清這些問題,還有不要只想著看答案,你會很失望,因為有些題目是沒有答案的 :) ps:有很多面試題來自其中的習(xí)題
        
         對一些算法有了更好的理解,也許是看第二遍的原因,也許是從不同的角度看會有不同的效果(所以好書要多讀,每重讀一次會有新的收獲)。比如:在動態(tài)規(guī)劃算法里,程序可以用遞歸算法和用表格化方法實現(xiàn)。遞歸算法的缺點是:有部分值會被重算,解決方法是用一個數(shù)組把已經(jīng)計算過的值存起來,這樣就不會重復(fù)計算了。表格化的算法是:沒有遞歸算法好理解,解決辦法是:在代碼開頭加個注釋,注釋就是那幾條遞歸規(guī)則,大不了再加上說明“此代碼用的是動態(tài)規(guī)劃”。 ps:linux里diff的基本算法就是動態(tài)規(guī)劃吧,感覺和最長公共子串類似。
        
         讀這本書收獲很多,列舉幾個吧:
         1. 書里的“程序驗證” 技術(shù)很靠譜,讓程序看起來清晰易懂,還能從一定程度保證正確性。
         2. “哨兵”(Sentinel value )被幾次用到了,感覺還不錯,代碼看起來更簡單了,還能帶來一點小小效率。
         3. 時空折中與雙贏。在原始設(shè)計的算法并非最佳方案時,通過改善算法是可以達(dá)到雙贏的。
         4. 用只分配一個較大內(nèi)存塊的方案來替換通用內(nèi)存分配,這樣就消除了很多 開銷較大的調(diào)用,而且也使用空間的利用更加有效。
         5. 數(shù)學(xué)模型的建立是很重要的。把數(shù)a想成用集合[a,a + 1)表示是第9章中二分查找代碼調(diào)優(yōu)的核心思想。數(shù)組旋轉(zhuǎn)那個算法也實在是太nb了。
      
  •     本人才疏學(xué)淺! 正如書名,珠璣編程中的精華部分!我必須承認(rèn)有句話叫仁者見仁智者見智!我不想駁斥任何人的觀點,所以不喜勿評!先說點題外話本人是個前端開發(fā)人員對C/C++這等底層語言很是崇拜,可能不如寫這類底層語言的大牛小牛你們專業(yè)。書回正傳,我曾google百度下這本書想真正的傳達(dá)什么思想?如果真的是本算法書籍!我想書名肯定不會這么叫,我發(fā)現(xiàn)很多評論或者讀后感都在講這書如何如何牛X,如何如何字字珠璣!我想正在看評論的你會問“樓主,你怎么看?”。
      本書三個部門,1、基礎(chǔ) 2、性能 3、應(yīng)用。別著急我慢慢分析書中內(nèi)容,咱先說基礎(chǔ)部分,基礎(chǔ)部分5章(開篇、啊哈算法、數(shù)據(jù)決定程序結(jié)構(gòu)、編寫正確程序、編程小事),當(dāng)我第一次看目錄的時候我也覺得每章之間沒有任何關(guān)系,可以挑你喜歡的看,但我本人的習(xí)慣就是從頭到尾,當(dāng)我讀完第一部分的時候,先不說里面有些算法如何精妙,我對第一部分最大的領(lǐng)悟就是它在教你怎么針對一個編程問題寫好一個正確不冗余的程序。開篇我們可以理解就是正確溝通前提下正確的理解問題,如果一個問題你理解有一點失誤可能導(dǎo)致的就是后續(xù)所有工作功虧一簣。在理解正確的前提下,你要考慮一個精妙的算法,‘懶’程序員往往不會先動手去編程,他們往往會想出至少兩個解決方案,第三部門就是明確算法之后我們要用一種數(shù)據(jù)結(jié)構(gòu)或者多種數(shù)據(jù)結(jié)構(gòu)的組合來設(shè)計程序結(jié)構(gòu)(數(shù)據(jù)結(jié)構(gòu)決定程序結(jié)構(gòu)),注意到現(xiàn)在我們還沒有開始具體的代碼實現(xiàn),一切可以用偽代碼勾勒在你的紙上,下一步就是寫代碼了(你最喜歡的一部分),第四章tell你如何寫出正確的程序(具體內(nèi)容例如斷言等技巧),既然寫完了初步程序你需要保證程序的正確性!第五章就講了如何利用腳手架測試你的程序,書中經(jīng)典的二分算法就是其中例子!第一部分到底講什么呢?自己總結(jié)下吧!
      第二部分,首先我還要說我是一個前端攻城師,性能這章我覺得就是告訴你在程序正確性保證的前提下,我們要考慮如何高性能的跑起來!老實說作者當(dāng)年所處的時代是個內(nèi)存低,CPU差的時期!性能這塊是個硬傷!在這個隨處可見8G內(nèi)存的時代(當(dāng)然32系統(tǒng)的用戶咱不敢恭維,當(dāng)初串個機器的時候見一哥們買了兩個4G內(nèi)存,說回家裝個XP,另外XP上的IE6容我fuck一下),CPU隨處可見雙核甚至4核(你電腦不是雙核你都不好意思出門跟人家打招呼)。性能已經(jīng)不是程序猿的主題了!加上商業(yè)時代,雇主也不會多花精力搞這個,趕緊賣出去就完事!不過你還是多看看怎么實現(xiàn)時間和空間雙盈的算反,沒準(zhǔn)microsoft、google讓你面試呢。
      第三部分,扯犢子扯了半天第三部門章節(jié)誤導(dǎo)了一些高人!他們看了目錄就認(rèn)定這就是TM的算法書籍你看看,11章排序(這不明顯是搞算法的嘛?)12章取樣問題(這不是算法跟數(shù)學(xué)的巧妙結(jié)合嗎?)13章搜索(這不也是算法問題嘛),等等。我想說第三部門主題是應(yīng)用!它告訴你用前面思考編程方式在具體每個章節(jié)實現(xiàn),用他前面教會你分析問題,定位問題,選擇一個實現(xiàn)過程和一個好的數(shù)據(jù)結(jié)構(gòu),編寫代碼,測試and so on。
      所以我認(rèn)為本書形散神不散。
  •      在青番茄上面借了這書,下班后閱讀和在公車上閱讀。話說很多看不懂啊??焖俚姆炅?,有印象的就是粗略估算了。學(xué)習(xí)到了72法則。還有個Litter定律,嘿嘿,這個在排隊等候中太有用了。誰叫中國排隊的隊伍都很長呢?
  •     那個數(shù)據(jù)結(jié)構(gòu)的加速,真是不錯,在Linux內(nèi)核中,使用了紅黑樹的EXT3文件系統(tǒng),和使用了B-,B+樹的btrfs.. 以及使用鏈表的數(shù)據(jù)結(jié)構(gòu),他們的效率,不在 一個水平線上。
      以前認(rèn)為效率就是在計算機里的執(zhí)行時間,沒有其他特別的意義,經(jīng)過這個物理學(xué)試驗之后,突然之間發(fā)現(xiàn),效率是如此的現(xiàn)實??梢詮?天變成1年。。 而且真切的發(fā)生在我們的身邊。 如果自己一生可以干完的事情,讓計算機幫個忙。。 一天搞定。。那余下的時候,我們是不是可以到處玩了。。。
  •     Rick Lemons 說在調(diào)試中他上過的最好的一堂課就是觀看魔術(shù)表演了。 魔術(shù)師耍了6個于理不通的戲法,Lemons 發(fā)現(xiàn)他自己也傾向于相信它們了。 然后他提醒自己這些于理不通的事情絕對是不可能的,他還仔細(xì)觀察每一個特技, 以便解開它明顯的矛盾。他先從他熟悉的基本原理--物理定律---開始,從那開始著手找出每一個戲法的簡單解釋。 這種態(tài)度使Lemons 成為我曾經(jīng)見過的最優(yōu)秀的調(diào)試員之一。
      
      作為一名C程序員, 看到這樣的段子,真得引人入勝。 這段文字真是一針見血的說出了調(diào)試的秘密。
  •      這本書最大的優(yōu)點是它描繪出了程序員編程活動的概貌,告訴大家關(guān)于編程的方方面面的知識。其他的優(yōu)點還包括給出了解決具體編程問題的各種方法,以及推薦了很多有價值的參考書目。
       我個人覺得理解清楚整本書的布局比知道具體的算法更加重要。
       第一部分介紹了編程活動的流程:首先分析清楚你遇到的是什么問題,能不能突破思維的框架來重新審視這個問題;其次是
      考慮用什么合適的算法來解決這個問題;再次是使用怎樣的結(jié)構(gòu)來描述問題中的數(shù)據(jù),這對于大型軟件開發(fā)來說是尤其重要的;
      然后是在編程細(xì)節(jié)上注意怎樣正確的編程以及最后怎么防御性編程,怎么測試代碼這些編程活動都會遇到的瑣碎的小事。
       第二部分介紹了怎么提高程序性能的各種技巧,這對于對速度要求很高的編程來說是很有參考價值的。第六章從各個層次上概括了性能優(yōu)化的各種方法,非常值得一讀。
       第三部分介紹了一些實際編程中會遇到的數(shù)據(jù)結(jié)構(gòu)方面的問題。
      總的來說,對于初級程序員來說,這本書是不可多得的珍寶;中高級程序員讀讀也會有不少的收獲。
      
  •      讀的過程真是一種享受??吹胶玫拇a,好的思想,總會忍不住默記幾遍。
      
       看到覺得有點意味的地方最好多想想來龍去脈,想想為什么,因為緊接著的會是令人驚喜的解說。 多寫寫書上的代碼,感覺不錯(寫完以后感覺忘了很久的算法又重新回來了)。 每章的“原理”部分是高度性的概括,"習(xí)題"是很好的,促使你去思考,做習(xí)題是很有必要的,不想“浪費”時間去“做習(xí)題”了的結(jié)果可能是以后會用更多的時間才能想清這些問題,還有不要只想著看答案,你會很失望,因為有些題目是沒有答案的 :) ps:有很多面試題來自其中的習(xí)題
      
       對一些算法有了更好的理解,也許是看第二遍的原因,也許是從不同的角度看會有不同的效果(所以好書要多讀,每重讀一次會有新的收獲)。比如:在動態(tài)規(guī)劃算法里,程序可以用遞歸算法和用表格化方法實現(xiàn)。遞歸算法的缺點是:有部分值會被重算,解決方法是用一個數(shù)組把已經(jīng)計算過的值存起來,這樣就不會重復(fù)計算了。表格化的算法是:沒有遞歸算法好理解,解決辦法是:在代碼開頭加個注釋,注釋就是那幾條遞歸規(guī)則,大不了再加上說明“此代碼用的是動態(tài)規(guī)劃”。 ps:linux里diff的基本算法就是動態(tài)規(guī)劃吧,感覺和最長公共子串類似。
      
       讀這本書收獲很多,列舉幾個吧:
       1. 書里的“程序驗證” 技術(shù)很靠譜,讓程序看起來清晰易懂,還能從一定程度保證正確性。
       2. “哨兵”(Sentinel value )被幾次用到了,感覺還不錯,代碼看起來更簡單了,還能帶來一點小小效率。
       3. 時空折中與雙贏。在原始設(shè)計的算法并非最佳方案時,通過改善算法是可以達(dá)到雙贏的。
       4. 用只分配一個較大內(nèi)存塊的方案來替換通用內(nèi)存分配,這樣就消除了很多 開銷較大的調(diào)用,而且也使用空間的利用更加有效。
       5. 數(shù)學(xué)模型的建立是很重要的。把數(shù)a想成用集合[a,a + 1)表示是第9章中二分查找代碼調(diào)優(yōu)的核心思想。數(shù)組旋轉(zhuǎn)那個算法也實在是太nb了。
  •      大概讀了下吧,英文版的,自己英文水平也不是很好,所以讀的也不是特別順。但是覺得這本書所講的東西,還是屬于比較初級的、科普性質(zhì)的東西吧,比如那些算法,并不是像算法教科書一樣分析算法復(fù)雜度什么的,所以感覺還是比較適合入門程序員來讀一下吧,不過里面的問題也不是那么簡單的。推薦計算機專業(yè)大一的學(xué)生好好讀一下。
  •     非常好的一本書,很少有人能把計算機類的書籍寫的這么引人入勝。雖然書中有些東西我還不是很明白(非計算機專業(yè)出身的就是這點悲劇啊...),但是這本書卻給我了一個方向,確實如封面上評論該書的那三句話一樣:"歷史上最偉大的計算機科學(xué)著作之一;融深邃思想、實戰(zhàn)技術(shù)與趣味軼事于一爐的奇書;帶你真正領(lǐng)略計算機科學(xué)之美"。
      書中有些例子,在讀的時候并沒有仔細(xì)的推敲,所以我對于這本書的解讀還很不夠;另外,本書中出現(xiàn)的源代碼都可以下載到,都是些非常非常精巧和實用的小函數(shù)。每個章節(jié)的課后題也都設(shè)計的非常巧妙,既讓人深入思考文中所涉及到的問題,又讓人開闊了視野。遺憾的是,我只是偶爾看了一下部分的問題,而且稍微有點難度的問題就被卡住了,只能求助于書后的答案。哎,算法(編程)真是一門既吸引人又需要詳細(xì)思考和大膽創(chuàng)新的藝術(shù)。
      另外,書中反復(fù)提到了Knuth和Sedgewick的算法教材,還專門提起,每個程序員都該在家里和辦公室都放一套Knuth的書。看來真是得花時間好好拜讀一下這些著作。
      本書后面的跋是作者自己采訪自己而寫成的,很有意思。程序員并不都是geek ^_^,或者說程序員也有很有意思的geek^_^
      很少寫這么多文字類的東西了,o(∩∩)o...哈哈,希望沒有耽誤你coding...
  •     溫故而知新
      
      第一遍閱讀的時候很策略,只是通讀了過去,很功利的想法,想盡快閱讀完,沒有實現(xiàn)書中的程序、課后的習(xí)題
      
      第二遍閱讀,踏實了許多,把每章感興趣的問題都自己實現(xiàn)了一遍,課后的習(xí)題也做了一部分
      
      但是還是有很多問題沒有徹底解決,有些內(nèi)容還是不能理解透,諸如第 13 章、第 15 章
      
      今天在 taobao 上買了本復(fù)印版的《編程珠璣 II》
  •     第7章的開頭:
      "那就是 Bob Martin 介紹的"封底計算工程技術(shù)的精彩(古怪)方式. 該思想在工程學(xué)校中是標(biāo)準(zhǔn)食糧, 但對大多數(shù)從業(yè)工程師來說, 則是面包和黃油了. 不幸的是, 忽視計算的現(xiàn)象太常見了"
      
      看到這里, 我被 "但對大多從業(yè)工程師來說" 里面的"但"字搞糊涂了, 這里明明是并列而不是轉(zhuǎn)折怎么用"但"呢?
      
      找出英文版的來對照了一下, 果然, 別人明明用的是 and:
      The idea is standary fare in engineering schools and is bread and butter for most practicing engineers.
      
      我暈, 太不負(fù)責(zé)了吧.
      
      后面這句也不對,
      原文是: "Unfortunately, it is too often neglected in computing"
      原文的意思是抱怨這種思想經(jīng)常被忽視, "idea"是主語.
      他的翻譯把"忽視計算的現(xiàn)象"當(dāng)主語, 完全牛頭不對馬嘴嘛.
      
      我不要求翻譯到達(dá)信雅達(dá)的程度, 至少要做到不要曲解原文的意思吧.
      
      這么一個好書, 被這樣粗制濫造, 痛惜啊.
  •     在卓越訂了有將近兩周了,先前早就見評論,相當(dāng)不錯,看了兩章,很合我胃口,著重訓(xùn)練讀者的思維,如何抽象問題-->羅列條件-->分析綜合-->求解?層層引入讀者,值得細(xì)細(xì)品嘗,可惜翻譯有點差,早知道就買本影印版了
  •     Programming pearls is essentially a collection of column articles written by author in the 80s. Each article delivers an insight to the practical problem every programmer will meet in their daily job. It differ from the introduction to algorithm that programming pearls does not aim at to providing a complete list of data structures and generic algorithms. On the contrary, it shows people how to code smart after spotting the right problem. It also provides some interesting discussions about tuning codes. I'd say if you need a book to sharpen you skill, you need it. And it is light and small. You can read anytime anywhere you like.
  •     首先,要對此書名的最初翻譯者表示敬意,“珠璣”二字是真無愧于“信雅達(dá)”。
      
      此書先前曾圖書館借來英文版,看過排序一章,而后就因故沒再翻動直到歸還,但那一章的精妙卻給我留下了深刻的印象。
      
      某日逛新華書店,發(fā)現(xiàn)此一中譯本,以為緣分便原價入手。
      
      閱畢,確實有趣,只恨相識過晚,如果在早期的時候碰上此書相信收益更多。
      
      這絕不是一本枯燥的書,里面有著許多的名人軼事,如求“最大連續(xù)子序列之和”,當(dāng)年在OJ上抓頭皮做類似的這道題時候不曾想再次以這樣的方式重遇,不忍小唏噓了下。
      
      書中還推薦了許多的經(jīng)典名著,本書的難度起點并不高,但是卻較能激發(fā)出你的興趣和好奇心,有深入了解的需要就可以按這些推薦書目求索了。
      
      關(guān)于書后習(xí)題,個人時間問題雖然沒有一一完成,但確實值得回味,僅是瀏覽問題也會引發(fā)思考。
      對照答案也不時會令人情不禁的發(fā)出 “啊哈“,”哈哈”
      
      書后的兩個版本的跋也相當(dāng)?shù)挠腥?,大濕們的生活態(tài)度和情趣也相當(dāng)值得學(xué)習(xí)~
      
      如果硬是要挑些刺兒的話...
      本書代碼的風(fēng)格有時候看著不甚舒服,不時的跳轉(zhuǎn)與不是很偽的偽代碼和帶有嚴(yán)重C風(fēng)格的C++,左花括號后沒有空行...
      
      不過我承認(rèn)是自己的原因,相較國內(nèi)的某些教材縮進(jìn)都亂七八糟的一坨坨Times New Roman代碼,面對這些簡潔明了的良好縮進(jìn)且是Courier New的代碼還能挑剔什么呢?
      
      還沒看的趕緊去拿本英文原版的開始旅程吧~
      
  •     傳說功力不強的人閱讀高深的武功秘籍容易傷身甚至走火入魔。看來這本書已經(jīng)逼近自己的極限。
      不過好消息是挺過這個過程傳說功力就能上一甲子。
      
      我閱讀本書的前兩章是一個翻過-》退回去-》再翻過的痛苦過程,直到我把所有東西都搞懂。如同前言所說,不要急著看完它,多想想。
      
      相比某些奇技淫巧華而不實的編程難題,書中列舉了許多現(xiàn)實中實實在在的困難需求,以及魔法一般的解決方法。這些方法在我看來是如此帥氣,以至于有的我即使看了答案,還要花1天甚至更久的時間來理解(感謝電力出版社那個爛爛爛的翻譯)。
      
      比如這個問題 編程珠璣(第二版)第二章 問題A
      
      給定一個包含32位整數(shù)的順序文件,它至多包含40億個這樣的整數(shù),并且次序是隨機的。請查找一個此文件不存在的32位整數(shù)(2^32>40億,所以必然有遺漏)。內(nèi)存空間只有上百字節(jié)以及若干備用文件的磁盤空間可以使用
      
      http://www.cs.cmu.edu/afs/cs.cmu.edu/academic/class/15750-s04/www/HW4_sol.txt
      
      天殺的這答案翻譯還翻譯錯了,我花了一天的時間想了一下,然后看了上面的鏈接,再想了半天,總算明白了。網(wǎng)上有網(wǎng)友的解釋跟代碼實現(xiàn),但我一看,錯了。作者明明白白的說明,這個解法,不需要對表進(jìn)行排序。而網(wǎng)友給出的答案,是對表進(jìn)行分割,然后分割到小文件可以放進(jìn)內(nèi)存以后,進(jìn)行排序,這不是作者答案的意思。
      
      我自己還在學(xué)習(xí)筆記里記下:二分查找法之前需要對表進(jìn)行排序?,F(xiàn)在看了這個問題以后,完全推翻了筆記中的結(jié)論。作者之前說明,只要給定一個范圍,并且能將這個范圍二分,并且保證答案就在這個更小的范圍里頭,或者原本就不存在就可以了。
      
      實際的答案意思是(如同大學(xué)里某些牛人教授,跳過了關(guān)鍵解題步驟,讓我這種一般人情和以堪):算法讀取所有記錄,將他們分為高位為1,以及高位為0兩類放到不同文件里(用低位也可以),這個過程不需要多少工作內(nèi)存,幾十個byte足夠。
      
      ok,書作者沒有說清楚的在這里。通過這次分揀,他就知道遺漏的數(shù)字在哪一堆,不需要排序。why?因為第32位為1的數(shù)字必定有2^31個,算法中必定有個計數(shù)器,做完跟2^31比較一下,比它小的話,那么遺漏的數(shù)字肯定就在這一堆。
      
      依次類推,在遺漏數(shù)字的這一堆,再二分為31位為1跟31位為0兩堆,再二分……
      
      
      剛剛發(fā)現(xiàn)這個東西,絮絮叨叨寫出來作為筆記,高手勿笑,謝謝觀看,再見!
      
  •   你把這本書讀完了嗎?我感覺怎么那么糟糕呀,不知道如何下手
  •   哈哈,曾經(jīng)學(xué)過編程,可是什么都看不懂
  •   不錯 看懂了 根據(jù)高位和地位實現(xiàn)
  •   高手,編程珠璣其他章節(jié)有研究過么?
  •   這本書已經(jīng)再讓我掉頭發(fā)了...
  •   看了一點,不敢再看了。。。
  •   看了你的筆記,讓我對這本書非常感興趣,準(zhǔn)備入手一本了。
  •   看明白了,應(yīng)對這種大牛級的書,功力還不夠啊
  •   mark回頭細(xì)細(xì)品味~
 

250萬本中文圖書簡介、評論、評分,PDF格式免費下載。 第一圖書網(wǎng) 手機版

京ICP備13047387號-7