C/C++編程語言必讀技術書單推薦入門到進階+技術書閱讀方法論(附網盤鏈接)

轉載自某大佬博客:https://pymlovelyq.github.io/2018/10/10/CC/

前言:技術書閱讀方法論

一.速讀一遍(最好在1~2天內完成)

人的大腦記憶力有限,在一天內快速看完一本書會在大腦裏留下深刻印象,對於之後複習以及總結都會有特別好的作用。
對於每一章的知識,先閱讀標題,弄懂大概講的是什麼主題,再去快速看一遍,不懂也沒有關係,但是一定要在不懂的地方做個記號,什麼記號無所謂,但是要讓自己後面再看的時候有個提醒的作用,看看第二次看有沒有懂了些。

二.精讀一遍(在2周內看完)

有了前面速讀的感覺,第二次看會有慢慢深刻了思想和意識的作用,具體爲什麼不要問我,去問30年後的神經大腦專家,現在人類可能還沒有總結出爲什麼大腦對記憶的完全方法論,但是,就像我們專業程序員,打代碼都是先實踐,然後就漸漸懂了過程,慢慢懂了原理,所以第二遍讀的時候稍微慢下來,2周內搞定。記住一句話:沒看完一個章節後,總結一下這個章節講了啥。很關鍵。

三.實踐(在整個過程中都要)

實踐的時候,要注意不用都去實踐,最好看着書,敲下代碼,把重點的內容敲一遍有個肌肉記憶就很不錯了。
以及到自己做過的項目中去把每個有涉及的原理的代碼,研究一遍,就可以了

一共四個系列整整32本電子書,找了好久終於齊了,如果都能看完看懂且科學的總結外加合理的實踐,相信未來你的技術路會更好走,當然阿里巴巴,騰訊,阿里這些的Offer不將是夢,除了多看點技術書,你覺得還有什麼能拿出來和985,211的朋友比呢?
最後 附上這32本書的電子版鏈接:

百度網盤鏈接:https://pan.baidu.com/s/1iYJ6Db8PSb1VsAmMWJ_uDg

密碼:hcx7

備註:裏面已經順便整理壓縮好,需要下載後纔可以打開,網盤直接打開可能會顯示損壞。**

資源圖示(下載鏈接如上):
0.png

以下是每本書的推薦語,清楚自己缺的是什麼,就下定決心去補吧,一個好工作意味着高收入,投資自己的時間換來更寶貴的東西。

一.C語言入門,初學,編程基礎系列

1.《C語言程序設計:現代方法》(第2版)

1.jpg

推薦理由:時至今日, C語言仍然是計算機領域的通用語言之一,但今天的 C語言已經和最初的時候大不相同了。本書最主要的一個目的就是通過一種「現代方法」來介紹 C語言,書中強調標準 C,強調軟件工程,不再強調「手工優化」。這一版中緊密結合了 C99標準,並與 C89標準進行對照,補充了 C99中的最新特性。本書分爲 C語言的基礎特性、 C語言的高級特性、 C語言標準庫和參考資料 4個部分。每章末尾都有一個「問與答」小節給出一系列與該章內容相關的問題及答案,此外還包含適量的習題。
本書是爲大學本科階段的 C語言課程編寫的教材,同時也非常適合作爲其他課程的輔助用書。

2.《C語言程序設計》(第2版)譚浩強版本

2.jpg

這本書堪稱經典之作初學者學習可以看看,這個就是零基礎入門學習C語言的,上手快。但也要堅持上機,要是隻看書,不在電腦上運行一下看看,是永遠學不會的。關鍵在實踐!堅持!

不過這本書被詬病的地方也不少,可以看完上面那本再看這本,很多東西就懂了。

3.《程序員修煉之道》

3.png

《程序員修煉之道》由一系列的獨立的部分組成,涵蓋的主題從個人責任、職業發展,直到用於使代碼保持靈活、並且易於改編和複用的各種架構技術。利用許多富有娛樂性的奇聞軼事、有思想性的例子以及有趣的類比,全面闡釋了軟件開發的許多不同方面的最佳實踐和重大陷阱。無論你是初學者,是有經驗的程序員,還是軟件項目經理,本書都適合你閱3讀。

4.《C和指針》

4.jpg

看到書名很讓人擔心翻譯的英語水平。實際不然,翻譯的很好。只能說標題黨了。看封面不難理解作者用pointers的意思吧,再說了書又不是隻講指針。書名用《C語言指導》更好些,
這是一本全面的C語言入門書。當然入門的深度和高度都比國內的教材高太多了。所以,如果你能直接從這本書開始學的話,起點會比較高,當然能學懂的話,說明你很有才。
一般情況下,本書的部分內容更適合有C基礎的人看。如ADT、遞歸、指針和數組的部分,書中所述的思想是國內教材所缺乏的。看完本書,能得到一個正確的C語言觀。

5.《C primer plus》(入門首選)

5.jpg

C prime Plus這本書看了兩遍,練習題基本上都自己獨立做完了。題目沒怎麼主動算法能力(畢竟不是算法的書),但是每個細節說的很清楚。初學者很容易找到信心的。學完c primer plus之後可以來看上面譚大爺的書找錯誤。

6.《高質量程序設計指南》(一定要看)

6.jpg

大一上學期的時候,一個偶然的機會接觸了本書的第一版,引發了對軟件工程的思考,讓我很早就意識到代碼規範的重要性,爲今後學習打下了堅實基礎,真的很感激這本書,雖然其內容都很簡單,但是在我迷茫的時候真的給了我很多啓迪。

7.《C/C++深層探索》

7.jpg

很早讀過的書,很不錯,姚的另外一本c標準:標準和實現也非常好。原創佳作~~語言的擴充成爲C++,我們知道C語言是一種程式語言,而C++則爲對象化語言,因此C++比C更加接近人類的語言,因此第四代語言就是人類語言,這就是說人類也是按照程式來行動的,也是一種程式動物或者程式生物。人類根據一定的世界的部分而創造的語言本不與世界一致或者總一致,因此纔有擴充,但是基本詞彙只有這麼多,因此沒辦法表述所有的事物,因此不得不將詞彙表擴充至一切聲響,這就是音樂的美麗,音樂就是現代語言的最終發展。可見音樂的重要性。

8.《從問題到程序》(最佳高校教材)

8.jpg

既適合初入門到的小子,也適合相見恨晚的匹夫.這裏不得不讚一下老裘借鑑得好,而且裏面又簡略提到不少CS裏面的概念:
講單詞計數的時候順帶介紹了有限狀態機;程序設計語言裏的副作用,前條件,後條件,短路求值.習題也是很不錯的,高斯消元,3n+1問題,約瑟夫環,實現一個簡單"虛擬機"和"彙編器"還要弄單步執行功能不少open problem.
風格嚴謹,十分強調程序的強健和安全,測試.越界訪問從頭到尾都在強調,後面還自己實現了個通用整數輸入檢查函數,還有通用錯誤信息處理函數,錯誤處理討論得很詳細.代碼簡練,命名規範.老早就講了函數,「強調通過函數抽象建立清晰結構的重要性」.提供大量的模式,實例和建議,教會初學者設計、權衡.內容不依賴任何具體C實現,討論IDE好處和壞處.
作爲第一本C語言是很合適的.

二.內核/驅動系列

1.《Linux C編程一站式學習》

9.jpg

此書內容涵蓋極廣:C的基本語法,簡單的數據結構,C與彙編的聯繫,計算機系統結構,操作系統,正則表達式,TCP/IP,無所不包。如此一來似乎樣樣通而樣樣不精。其實不是這麼回事。作者內容穿插得非常好,用十分簡單的方式把每個方面最重要的東西闡明瞭。所以,其實這是本入門書,當然也適合各個方面都瞭解之後總結用。看完這本書可能覺得什麼都懂一點但什麼都不完全會,不要緊,後面的參考文獻多數都是經典。入門書嘛,但求上手快。這本書上手就非常快。裏面幾乎一事一例,不多不少,恰到好處。而且例子基本都簡單小巧可愛,不會的地方複製代碼調試即可。
「我本來就是菜鳥一個,怎麼了?國內這破環境,真正的大家纔不稀罕寫書,都撈錢去了。」其實中文書水平普遍低下,主要就是缺少宋勁杉老師這樣的「菜鳥」。本書適合做零基礎的初學者學習C語言的第一本教材,幫助讀者打下牢固的基礎。有一定的編程經驗但知識體系不夠完整的讀者也可以對照本書查缺補漏,從而更深入地理解程序的工作原理。本書最初是爲北京亞嵌教育研究中心的嵌入式Linux系統工程師就業班課程量身定做的教材之一,也適合作爲高等院校程序設計基礎課程的教材。本書對於C語言的語法介紹得非常全面,對C99標準做了很多解讀,因此也可以作爲一本精簡的C語言語法參考書。

2.《Linux內核設計與實現》(第3版)

10.png

這書估計慕名而來的人都會在第一時間略感失望,首先書很薄,而且講解不求深入。如果一個人在第一次翻閱此書的時候有這樣的印象,那應該好好反省下自己是否太浮躁了。
其實這部書的定位有點不高不低,但也正因如此,它是最適合過渡階段的內核學習者閱讀的一部書。正確的閱讀順序或許應是這樣的:恐龍書or現代OS->LDK->情景分析之類的詳解書。
LDK很適合在你係統地學習了OS理論之後,直接看代碼詳解又覺得暫且還不夠功力的學習者,它可以帶你由理論學習階段逐漸過渡到實踐階段。對於這樣一部書,要是太厚就有點騙錢的嫌疑,要是太深入又會讓人覺得作者故意顯擺自己的學識。LDK算得上是恰到好處。
另外,本書後面的參考文獻十分值得一讀,要是您讀完本書之後覺得不錯,建議把它推薦的參考文獻也找來讀一讀,或許會讓您有更驚豔的感受。

3.《Linux設備驅動程序》(第3版)

11.jpg

適合中低水平的人。Linux 設備驅動模型真心複雜!對於寫Linux驅動的人來說, 這本書應該是教科書級別的吧, 必讀.

4.《深入Linux內核架構》

12.jpg

覺得是linux內核的一大作,坊間關於《深入理解linux內核》的傳說,本人用自己的拙學是這麼理解的。對於可以有較好的英文閱讀能力的人,可以不用看毛德操的老師的書,後者已經完全可以替代了。注意現在比較的邏輯,並沒有拿這本書去調戲《深入理解》,畢竟本人認爲本書閱讀時間該是有操作系統概念,然後還沒有深入代碼研究的階段。所以同樣還在摸索的你我,不要被本書的頁數給嚇到了,這本書我每天晚上花了3個小時,差不多花了45天閱讀完,建議一口氣看完,不然就打不到效果了,當然如果你是在校學生,我建議花一個學期對着源碼研究。現在這本書也已經被我成功推薦到我們的team了…

三.應用系列

1.《UNIX環境高級編程》

13.png

好書的妙處之一,就是能給你與作者交流的感覺。技術書籍常犯兩個毛病,一個是着眼點太低,堆砌細節(比如譚浩強的《C程序設計》),讀起來好像聽和尚唸經,無法交流。再一個就是着眼點太高,兜售哲學(比如ESR的《The Art of UNIX Programming》),讀起來好像聽於丹老師講論語,不敢交流。此書的經典性就在於不高不低不多不少,把UNIX系統編程的來龍去脈向你娓娓道來。很多地方都可以讓你感覺到,你的疑惑作者在寫書的時候已經瞭如指掌。從疑惑到頓悟的那一瞬間的暢快感是學習最大的快樂。所以,我們的口號就是:有問題,找APUE。

2.《UNIX網絡編程》

14.png

還是在大二就買了這本書,但一直沒拿起來看,各種拖延。瞭解 linux 下的網絡編程,這本很贊。其中講到了較爲底層的網絡編程系統調用和幾種網絡通信模式,譬如阻塞式,非阻塞式,I/O 多路複用等。但離實踐還是由於一定的距離,網絡編程中重點不在於系統調用,而是對具體的項目想要設計與之適應的網絡模式。W.Richard Stevens 爹爹的書,每本都可以是經典。薦!

四.高能來襲,C語言進階系列(學完就等着封神吧王者歸來BAT等你)

1.《C陷阱與缺陷》

15.png

這是一本小冊子,有讓人繼續讀下去的慾望,倒不是因爲頁數少好欺負,是因爲書中所說的幾乎所有需要注意的地方作爲一個程序員都有可能遇到,作者敘述起來很有意思,絲毫沒有說教的感覺,舉的例子很簡單卻一針見血。
此書作爲一本常備讀物是非常合適的,沒事經常翻翻加深印象。

2.《C專家編程》

16.png

一年前我翻了翻這本書就覺得很棒,但那是我並不「主修」C,也沒好好看,最近在認真讀這本書,真是讚歎不已。
它使你對C的使用有深入瞭解,最後還介紹了一些C++,如果你以前沒太多接觸過C++,只知道C,通過這本書打開通往C++之門也不錯。書中還提到了一些當年那些傳說中Hacker的的故事,挺風趣的。
但是看這本書還是要有些背景的。
你要學過編譯原理,雖然不需要學的太深太好,但至少對裏面的一些概念要有所瞭解,否則對裏面內存分配的部分(事實上很多是針對編譯器的),你會感到吃力。還有,你要有些Unix/Linux的文化背景,比如Unix的C編程風格,還有Unix裏的一些命令,工具。

3.《C語言程序設計》K&R版

17.jpg

拿到這本薄薄的書,很多人開始懷疑,C語言是這麼幾百頁能講清楚的麼。看完這本書,我想答案已經很明瞭,卻真的讓人感到震憾。什麼是好書?無法刪減的書纔是真正的好書。K&R的書一如C語言的設計理念:簡單而高效
裏面的習題建議都認真做一遍,而且是在linux下用vi來做,用makefile來編譯,用shell腳本來進行測試,本來第八章的題就是和linux相關的
計算機的大學生們不應只會在WINDOWS下用VC來編程,而都應該在linux環境下進行程序設計,因爲linux本身就是爲開發者準備的操作系統

4.《C語言解惑》

18.jpg

本書脫胎於作者在C語言的搖籃——貝爾實驗室教授C語言的講稿,幾乎涵蓋了C語言各個方面的難點,幷包含了一些其他書籍很少分析到的問題。在每個謎題後面都有詳盡的解題分析,使讀者能夠清晰地把握C語言的構造與含義,學會處理許多常見的限制和陷阱,是一本絕佳的C語言練習冊。

5.《你必須知道的495個C語言問題》

19.jpg

但比教材經典,最好手邊一本教材,一邊翻,一邊看本書。建議集中時間看,然後再重新複習!很實用的書,比c語言陷阱,c語言解惑要深刻!!!廣度還行,深度不足,適合查缺補漏。

6.《C語言參考手冊(原書第5版)》

20.jpg

這是C99確定發佈後出版的參考手冊。相比K&R要更加接近現在。K&R適合入門,而這本書不讀,恐怕不算」學過C語言「。

7.《C語言接口與實現》

21pg.jpg

另外,就我個人感覺而言,這本書的語言屬於那種簡單準確的風格,與原文的語義一致性很高,基本上沒有因炫耀文字而犧牲準確性之處。新手當做興趣書看或者老手老複習下也可以。可以加深對ADT的理解。

8.《深入理解計算機系統》(修訂版或第3版)

這本書是引導你如何練內功的,但是要是我來說的話,我個人認爲這本書是在你學完數據結構和導論之間去看,因爲這本書只是讓你去深入理解計算機導論裏面的一些概念,算是高配版本的計算機導論,目的是爲了引出來操作系統、組成原理這些專業核心的課程。你要是指望看完這本書你就能左手寫個App右手寫個Web動態網站的話就錯了,這本書的意義正在於他的這個英文版的名字,Computer System — A Programmer’s Perspective,一個程序員的修養,如何利用計算機的工作流程去優化自己寫的東西這個纔是這本書的目的。

10.《C語言的科學和藝術》

22.jpg

本書的作者因爲對本科生的教育做出了傑出的貢獻而獲得了Bing Award獎,而這本書也正體現了他作爲一名教師,深入淺出的教學方法和易於理解又引人入勝的行文風格。
文中所用的例子也都非常符合本節所要講述的內容,並且把不得以而用到的以後章節的知識以一種genlib庫的形式封裝了起來,隱藏了C的複雜性,從而避免了初學者的困惑。這樣,在讀完本書後,會發現,我們不僅僅學到了C的知識,而且把庫的編寫方法、習慣都潛移默化的留在了心中。在書中很多地方都會有作者關於軟件工程和優秀程序設計風格的見解,如接口的編寫等等,都對我們打下紮實基礎起到了積極的作用。
特別需要指出的一點是:這本書對於C語言中比較困難的部分:如指針、C風格字符串、數組和指針的關係、數組和字符串的關係,都有「一針見血」式的透徹分析,使初學者能夠容易的明白其中的知識,也使有經驗的讀者能夠抓住重點理解更加深入。對於這些比較精髓的知識,特別是指針和數組名的區別,會在文中多次被提醒:分配內存、左值!
初學者在編程中,很少接觸文件的操作,但是文件操作非常重要,無論初學者還是有一定經驗的讀者都應該對C標準庫中的文件函數熟練的掌握,這本書對文件的介紹會讓你有系統理解,而且對使用這些函數時常會犯的錯誤有先知一般的預見,從而避免了初學者遇到問題調試時的辛苦周折。
如果非要說說這本書的缺點,我想就是,沒有把genlib庫的代碼刻成cd附在書裏,這多少會給初學者上機調試造成了不便,好在網上有這本書中的源代碼和其他資源,而且書後也有完整的代碼。其實換種思路想,這也可以算是一件好事,國內學生的動手能力差,那就應該在敲代碼的同時把她理解了吧,呵呵,有點自虐傾向-_-b
最後,無論如何,如果你想學習C語言,那麼看看這本書吧,她很好的!(而且不必在乎什麼「C語言已死」這樣的胡說八道)作爲一種應用最廣的面向過程的語言,她會讓你對計算機程序設計形成一種必要的經典的思考模式!

11.《數據結構與算法分析C語言系列》

23.jpg

因爲最近需要複習數據結構與算法,所以網上搜索了下這方面的經典書籍。這本書的C語言版本高居榜首,獲得一致好評,正好該書又有Java語言的版本,就買來拜讀一下。前後大概花了1個月的時間將該書看了兩遍,書中的主要數據結構都敲代碼實現了一遍,現在算是將以前的數據結構課程都回憶了起來,對比當時上學用的譚浩強的那本數據結構教程,真是天壤之別。有時間的話可以在這本書的基礎上看一下<<算法導論>>。

這本書確實是很好的數據結構與算法分析的最佳入門教程,不過看這本書還是要有點數據結構的基礎。通過Java語言描述,討論了主要的數據結構:表、棧、隊列、樹、散列、優先隊列、不相交集合和圖;同時討論了經典的排序算法:插入排序、希爾排序、堆排序、歸併排序、快速排序;介紹了5種常用算法:貪婪算法、分治算法、動態規劃、隨機化算法、回溯算法;並討論了Java Collection中相關數據結構的實現:ArrayList、LinkedList、TreeSet、TreeMap、HashSet、HashMap、PriorityQueue。

12.《Linux程序設計》

24.jpg

《Linux程序設計》是我的Linux編程入門書籍,也是做爲教材使用了一整個學期,在閱讀和學習這本書的時候產生了很多的疑問,書裏也沒有對應的解答,直到……直到我看了APUE,帶着這些問題去學習APUE,產生了巨大的能量。總之,推薦這本書,但是這本書也只是入門書籍,站在《Linux程序設計》的肩膀上,學習APUE,在Linux的世界裏遨遊吧!

13.《現代編譯原理》

25.jpg

翻了這麼多本書,這是我看過的唯一一本講具體怎麼構建一個編譯器的書。同時這本書所構建的編譯器就像作者說的那樣,簡單但是並不平庸,擁有很多挺先進的特性。也能算是一個優化編譯器。

但是要跟着這本書做下來還是有一定難度的,需要紮實的C語言功底。

14.《重構-改善既有代碼的設計》

26.jpg

大師Martin Fowler的經驗之談,看後有種醍醐灌頂、欲罷不能的感覺。重構也是當今敏捷開發一項不可或缺的技藝,建議所有有設計和項目開發經驗的開發者都應讀一下。

15.《老碼識途-從機器碼到框架的系統觀逆向修煉之路》

27.jpg

我們《軟件開發環境》老師寫的書,先教你通過反彙編來分析、修改、自己寫底層機器碼,後面着重探討面向對象特性在底層的實現和體現。
知識點都是底層的乾貨,對理解高層封裝出來的一些概念的本質灰常有幫助。比如指針本質上就是個4字節的地址,指針類型只是由編譯器識別,然後體現在控制訪問多少個字節的CPU指令上;
比如函數是怎麼實現調用、傳參、返回的,傳參又有寄存器傳值、壓棧傳值、壓棧傳地址等方式,跨語言調用函數時調用慣例的協調。
總之弄懂了這些底層的機制,對高層語言的理解會透徹很多。
不過最好有一點彙編基礎再讀,否則略艱澀。
另一個特點是全書一直貫徹一種」猜測——實證」的思想,跟作者交流過這本書好幾次,感覺這種思想是他最想傳達的東西。

16.《C語言進階》

28.jpg

這本書應該適用於學過C,但是想溫習一下的人。裏面有一部分基礎語法,但是也有很多高級的東西。函數指針與指針函數,指針數組與數組指針,預定義,預編譯,調試之類。但是感覺最後一章的常用算法有種多餘的感覺。如果想應付面試,看這本書應該也沒有錯,裏面有很多筆試喜歡考的sizeof的東西。

17.《實用C語言編程》

29.jpg

很老的一本C語言書,可以說是我的C語言啓蒙書,裏面的資料,尤其是附錄是我現在還經常翻閱的原因,書寫的很樸實,也如書名,確實實用,易懂.把這本書吃透了,找個工作,那是再容易不過了,所以說一本好書需要時間來檢驗它,在歲月中沉澱下來…歲月檢驗過的好書,不解釋。

百度網盤鏈接:https://pan.baidu.com/s/1iYJ6Db8PSb1VsAmMWJ_uDg

密碼:hcx7

備註:裏面已經順便整理壓縮好,需要下載後纔可以打開,網盤直接打開可能會顯示損壞。

附java從入門SE到進階EE推薦書籍50+本:

https://pymlovelyq.github.io/2018/10/26/java/

附學習數據庫從入門到進階書籍pdf版吐血整理推薦(珍藏版):

https://pymlovelyq.github.io/2018/10/12/database/

附機器學習和python學習之路吐血整理技術書從入門到進階(珍藏版):

https://pymlovelyq.github.io/2018/10/15/machineLearning/

附算法與數據結構+一點點ACM從入門到進階吐血整理推薦書單(珍藏版):

https://pymlovelyq.github.io/2018/10/06/Algorithm/

附python從入門到進階推薦書籍最全整理pdf分享附網盤鏈接已拿BT豆瓣offer:

https://pymlovelyq.github.io/2018/10/20/python/

附安卓入門到進階推薦書籍整理pdf附網盤鏈接已拿阿里豆瓣offer(珍藏):

https://pymlovelyq.github.io/2018/09/04/An/

附C/C++語言推薦書籍從入門到進階帶你走上大牛之路(珍藏版):

https://pymlovelyq.github.io/2018/10/10/CC/

附Web前端書單從HTML到JS到AJAX到HTTP從框架到全棧過來人幫你走更少彎路(珍藏版):

https://pymlovelyq.github.io/2018/10/17/WebFont/

總結:天下沒有不勞而獲的果實,望各位年輕的朋友,想學技術的朋友,在決心扎入技術道路的路上披荊斬棘,把書弄懂了,再去敲代碼,把原理弄懂了,再去實踐,將會帶給你的人生,你的工作,你的未來一個美夢。