插入篇 |程序员进阶之推荐书目
針對入門的趣味書
入門的同學,我建議你不要過度追求上去就看經典書。像《算法導論》《算法》這些書,雖然比較經典、比較權威,但是非常厚。初學就去啃這些書肯定會很費勁。而一旦啃不下來,挫敗感就會很強。所以,入門的同學,我建議你找一些比較容易看的書來看,比如《大話數據結構》和《算法圖解》。不要太在意書寫得深淺,重要的是能不能堅持看完。
《大話數據結構》 這本書最大的特點是,它把理論講得很有趣,不枯燥。而且每個數據結構和算法,作者都結合生活中的例子進行了講解, 能讓你有非常直觀的感受。雖然這本書有 400 多頁,但是花兩天時間讀完,應該是沒問題的。如果你之前完全不懂數據結構和算法,可以先從這本書看起。
《算法圖解》 跟《大話數據結構》走的是同樣的路線,就像這本書副標題寫的那樣,“像小說一樣有趣的算法入門書”,主打“圖解”,通俗易懂。它只有不到 200 頁,所以內容比較少。作為入門,看看這本書,能讓你對數據結構和算法有個大概的認識。
這些入門書共同的問題是,缺少細節,不夠系統,也不夠嚴謹。所以,如果你想要系統地學數據結構和算法,看這兩本書肯定是不夠的。
針對特定編程語言的教科書
講數據結構和算法,肯定會跟代碼實現掛鉤。所以,很多人就很關心,某某書籍是用什么語言實現的,是不是自己熟悉的語言。市面大部分數據結構和算法書籍都是用 C、C++、Java 語言實現的,還有些是用偽代碼。而使用 Python、Go、PHP、JavaScript、Object-C 這些編程語言實現的就更少了。
我這里推薦《數據結構和算法分析》。國內外很多大學都拿這本書當作教材。這本書非常系統、全面、嚴謹,而且又不是特別難,適合對數據結構和算法有些了解,并且掌握了至少一門編程語言的同學。而且,這個作者也很用心。他用了三種語言,寫了三個版本,分別是:《數據結構與算法分析 :C 語言描述》《數據結構與算法分析:C++ 描述》《數據結構與算法分析:Java 語言描述》。
如果你熟悉的是 Python 或者 JavaScript,可以參考《數據結構與算法 JavaScript 描述》《數據結構與算法:Python 語言描述》 。至于其他語言的算法書籍,確實比較少。如果你有推薦,可以在留言區補充一下。
面試必刷的寶典
算法對面試很重要,很多人也很關心。我這里推薦幾本有益于面試的書籍,分別是:《劍指 offer》《編程珠璣》《編程之美》。
從《劍指 offer》這本書的名字就可以看出,作者的寫作目的非常明確,就是為了面試。這本書幾乎包含了所有常見的、經典的面試題。如果能搞懂這本書里的內容,應付一般公司的面試應該不成問題。
《編程珠璣》這本書的豆瓣評分非常高,有 9 分。這本書最大的特色就是講了很多針對海量數據的處理技巧。這個可能是其他算法書籍很少涉及的。面試的時候,海量數據處理的問題也是經常會問的,特別是校招面試。不管是開拓眼界,還是應付面試,這本書都很值得一看。
《編程之美》這本書有多位作者,其中絕大部分是微軟的工程師,所以書的質量很有保證。不過,這里面的算法題目稍微有點難,也不是很系統,這也是我把它歸到面試這一部分的原因。如果你有一定基礎,也喜歡鉆研些算法問題,或者要面試 Google、Facebook 這樣的公司,可以拿這本書里的題,先來自測一下。
經典大部頭
很多人一提到算法書就會搬出《算法導論》和《算法》。這兩本確實非常經典,但是都太厚了,看起來比較費勁,我估計很少有人能堅持全部看下來。如果你想更加深入地學一學數據結構和算法,我還是強烈建議你看看。
我個人覺得,《算法導論》這本書的章節安排不是循序漸進的,里面充斥著各種算法的正確性、復雜度的證明、推導,數學公式比較多,一般人看起來會比較吃力。所以,作為入門書籍,并不
是很推薦。
《算法》這本書也是一本經典大部頭,不過它比起《算法導論》來要友好很多,更容易看懂,更適合初學者入門。但是這本書的缺點也很明顯,就是內容不夠全面,比如動態規劃這么重要的知識點,這本書就沒有講。對于數據結構的東西,它講的也不多,基本就是偏重講算法。
#殿堂級經典
說到殿堂級經典書,如果《計算機程序設計藝術》稱第二,我想沒人敢稱第一。這本書包括很多卷。說實話,我也只看過比較簡單的幾卷,比如《基本算法》《排序和查找》。
這套書的深度、廣度、系統性、全面性是其他所有數據結構和算法書籍都無法相比的。但是,如果你對算法和數據結構不是特別感興趣,沒有很好的數學、算法、計算機基礎,想要把這套書讀完、讀懂是比較難的。你可以把它當作你算法學習的終極挑戰。
閑暇閱讀
算法無處不在。我這里再推薦幾本適合閑暇時間閱讀的書:《算法帝國》《數學之美》《算法之美》。
這些書共同的特點是,都列舉了大量的例子,非常通俗易懂。夸張點說,像《算法帝國》,文科生都能讀懂。當你看這些書的時候,你常常會深深感受到算法的力量,被算法的優美之處折服。即便不是從事 IT 工作的,看完這幾本書也可以開拓眼界。
每節課中有需要代碼實現的數據結構和算法,我都另外用 Java 語言實現一遍,然后放到 Github 上,供你參考。Github 的地址我放在這里,你可以收藏一下:代碼實現。
至于其他語言的同學,比如 C、C++、Python、Go、PHP、JavaScript、Object-C 等,我想了一個 crowd sourcing 的方法。
我希望基礎較好的同學,參照我的 Java 實現,用你熟悉的編程語言再實現一遍,并且將代碼留言給我。如果你寫得正確,我會將你的代碼上傳到 Github 上,分享給更多人。
留言區經典評論
老師推薦的書80以上都看過,總結一下:
1:《算法第四版》Java語言寫的,不過動態規劃(沒記錯的話)沒有涉及、很厚!這本書挺推薦的、特別是javaer!
2:《劍指offer》個人覺得題目經典都是老題!但是難度好像很一般啊(還是學生 不太清楚面試內容)、然后里面確實講了一些很細的東西值得學習!還有本書所有題目作者都提供了C代碼和大量的測試案例!nice;
3:編程珠璣:國外作者,這本書我看了不多 但是初步覺得好像是對超大量數據處理的算法!
4:編程之美:微軟的書、難度較高、題目很深!這本書里面的題 代碼不超過2頁的估計作者都不會選上!!!!書不厚 、一般般
5:數據結構和算法分析:我們大學教材!我們老師教的書里都有、代碼是偽代碼!
6:算法導論:這本書我用來墊電腦!很厚 很無聊0.0!!!
老師推薦的書大部分我都了解過,寫一寫我個人的感受吧。
如果是Java程序員的話,強烈推薦《算法》,書中的代碼特別的簡潔,水準特別高。書的配套資源也相當不錯,B站有教學視頻、Github有官方代碼、還有專門的測試數據。
至于輕松一些的《大話數據結構》,代碼和書的基本源于嚴蔚敏老師的《數據結構》。代碼是C語言,但因為作者沒有考慮工程上的抽象,代碼的水準并不是特別高,至少,我個人是不太喜歡那種編碼方式。
《算法圖解》很薄,圖的風格我也很喜歡,非常基礎,小白入門首選。代碼實現是基于Python。
《算法導論》能啃下來,就夠了。但是全書偽代碼,如果能把公式搞懂、代碼自己實現一次,基本上足以秒殺絕大多人了。如果想讀懂這本書,必要的級數、概率還是要學一下的。
接下來,墊筆記本電腦的《計算機程序設計藝術》。這套書非常偉大,據說高德納老爺子剛寫了兩卷就拿到了圖靈獎。時間復雜度理論分析算法也是高德納老爺子奠定的,大半個算法領域的結論幾乎都是高德納老爺子證明的。如果你真想讀這本書,首先我要告訴你,書中代碼是古老的MIX匯編,其次,你可能需要更多的數學基礎。就如同書中所說,必要的復變函數的基礎是必要的。
如果你想提高一下個人的計算機數學功底,為了算法的話,可以讀《離散數學及其應用》。當然,如果你想要啃《算法導論》或者近距離膜拜《計算機程序設計藝術》,推薦高德納老爺子參與編著的《具體數學》。
我自己覺得,掌握《算法導論》一書的90%,就已經是非常、非常優秀的程序員了。殿堂級的書買回來收藏、墊筆記本電腦或者顯示屏,實在不行,鎮宅辟邪也是極好的,就沒必要費力地讀了。?
總結
以上是生活随笔為你收集整理的插入篇 |程序员进阶之推荐书目的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: k8s加固 hardening
- 下一篇: mips linux 编译,Linux环