書籍推薦 | 低并發(fā)編程讀者群 | 第一期
讀者群里有位大神,居家大小姐。很多時候讀者的提問,她都能給出十分專業(yè)的觀點(diǎn)。后來的聊天中發(fā)現(xiàn),她博覽群書,而且記得十分牢固。
也正因?yàn)樗娴淖x過很多書,她經(jīng)常會對自己所看過的一些書進(jìn)行評價,而且觀點(diǎn)十分犀利,經(jīng)常會說一些被我們程序員奉為經(jīng)典的書籍的缺點(diǎn)。
有一天我說,要不你每天推薦一本書吧,我覺得會很有價值,于是,她真的連續(xù)推薦了一周多,而且每次寫的都非常用心。
所以再后來,我覺得這是件有意義的事,于是我發(fā)動讀者自愿報(bào)名,推薦書籍,每天一本,積攢得差不多時我會整理成一期書籍推薦文章,如今天這篇。我會保留讀者原汁原味的推薦文字,不會去做任何修改,
所以,第一期書籍推薦,就這樣,由讀者自發(fā)地開啟了!讓我們看看它會持續(xù)多久吧!
以下是推薦的正文內(nèi)容。
第一期全部由居家大小姐推薦,底層書籍較多。
C++ Primer
居家大小姐
今天要推薦的書籍是這本《C++ Primer》及其習(xí)題集。這本書對于我來說有很多個最,這是我看過的最好的技術(shù)書籍,是我精讀次數(shù)最多的書籍,筆記最多的書籍。。。我對這本書的超級推薦程度自然無需多言。C++是一門難學(xué)易用的語言,個人認(rèn)為,C++是最值得學(xué)習(xí)的語言。學(xué)習(xí)C++能夠讓一個人對其他各種語言的各種特性均具有更透徹的理解,這是我在學(xué)了十門以上語言后得出的深刻結(jié)論。這本書對于C++的講解十分全面,清晰且透徹,難度適中。從新手入門到更廣袤的C++世界,內(nèi)容應(yīng)有盡有。多次、徹底的精讀這本書,我認(rèn)為能讓個人的C++水平達(dá)到約70分的水平。這是我斟酌良久才得到的評價。70分,意味著在及格之上,你的C++水平至少已經(jīng)超越了很多淺嘗輒止的人,同時,你也獲得了足夠的準(zhǔn)備和能力,去探索更深奧的C++世界。所以,這本《C++ Primer》是我推薦的,你最適合閱讀的第一本C++書籍,也是你最適合多次,長期精讀的一本神作。
匯編語言程序設(shè)計(jì)
居家大小姐
今天要推薦的書是這本《匯編語言程序設(shè)計(jì)》。前面說過,王爽老師的書雖然內(nèi)容非常不錯,但刻意避開了“從高級語言到匯編語言”這一重要話題,這本書能彌補(bǔ)這一缺憾。這本書側(cè)重于講解C語言和GNU ASM之間的等價關(guān)系,編碼方案,以及編譯器行為,也講述了諸如SIMD等的高級匯編技術(shù),以及諸如內(nèi)聯(lián)匯編等C語言技術(shù)。這本書推薦給已有一定基礎(chǔ),希望繼續(xù)學(xué)習(xí)匯編的讀者。但需要補(bǔ)充的是,個人認(rèn)為,匯編語言文字游戲太多,非專業(yè)學(xué)者實(shí)際上無需過度專注于細(xì)枝末節(jié),掌握匯編的思想,并培養(yǎng),訓(xùn)練將高級語言與匯編一一對應(yīng)的能力,才是最重要的。
Inside the C++ Object Model
居家大小姐
今天要推薦的書是這本《Inside the C++ Object Model》。正如譯者侯捷老師(在另一本書的序言中)所述,這本書“磕掉了多少C++老手的牙”。確實(shí),這是一本非常深奧的書,全書僅區(qū)區(qū)三百多頁,卻向我們完整的講述了一個很復(fù)雜的話題:面向?qū)ο缶幊痰牡讓邮侨绾螌?shí)現(xiàn)的?這個問題非常復(fù)雜,其牽扯出很多的問題,如:到底什么是類?虛函數(shù)是如何實(shí)現(xiàn)的?繼承是如何實(shí)現(xiàn)的?多重繼承和單繼承有什么區(qū)別?什么是虛繼承?類成員指針的本質(zhì)是什么?(這個問題在《C++ Primer》的第19章早已埋下伏筆)。。。所有這些問題,都將在本書中得到解答。這本書不僅內(nèi)容詳實(shí),更優(yōu)秀的地方在于:其中的配圖十分清晰明了,往往使得讀者能夠在紛繁復(fù)雜的內(nèi)存模型世界中恍然大悟,從而理解其中奧義。我將這本書推薦給具有一定面向?qū)ο笳Z言基礎(chǔ),希望深入了解的讀者。此外,就這本書而言,“具有一定面向?qū)ο笳Z言基礎(chǔ)”不僅限于C++語言,這本書講解的技術(shù)是通用的。
STL源碼剖析
居家大小姐
今天我要推薦的書籍是侯捷老師的著作《STL源碼剖析》。這本書也許不用我多加推薦,“懂的都懂”。作為C++領(lǐng)域著名學(xué)者,侯捷老師的這本著作是久負(fù)盛名的,全書所講述內(nèi)容也十分明了:STL的源碼實(shí)現(xiàn)。這里,我僅僅談一談我讀這本書的體驗(yàn),以供大家參考。正如序言所述,這是一本各種“不適合各種人”的書,不適合初學(xué)者,不適合學(xué)習(xí)OOP。。。故顯然,這是一本深奧的書。在某些方面,STL的源碼實(shí)現(xiàn)確實(shí)遠(yuǎn)比我們想象的要復(fù)雜,比如sort,比如deque,我持有的觀點(diǎn)是:這部分內(nèi)容無需過深入的研究;但在另一方面,STL的很多實(shí)現(xiàn)又是非常值得我們?nèi)W(xué)習(xí)的,如用環(huán)鏈表實(shí)現(xiàn)雙鏈表,如利用模板實(shí)現(xiàn)迭代器分派(另見我著《C++模板沉思錄》5.1節(jié)),再如大量的type traits實(shí)現(xiàn)(另見我著《C++模板沉思錄》第三章)。此外,STL的大局觀和通用性思想同樣也十分值得我們?nèi)W(xué)習(xí)。我僅將此書推薦給:對C++具有一定了解,對STL具有一定使用經(jīng)驗(yàn),并希望繼續(xù)學(xué)習(xí)其實(shí)現(xiàn)的讀者。
編譯原理及實(shí)踐
居家大小姐
今天我要推薦的書是這本《編譯原理及實(shí)踐》。說到編譯原理,我的整個學(xué)習(xí)的經(jīng)歷和心路歷程是相當(dāng)多的??偟膩碚f:編譯原理的書籍大多很差,故弄玄虛,極其不適合新手學(xué)習(xí)。對于編譯原理的新手,其往往關(guān)注的是如何實(shí)作一個真正能用的編譯器,而市面上的大多數(shù)書差勁之處在于:1. 極為注重所謂的“元編譯器”,即:能夠自動產(chǎn)出一個編譯器的程序。這些技術(shù)非常難,且對于新手而言毫無價值。2. 代碼寫的極差,極為詭異(如《虎書》),要么就根本沒有代碼(如《龍書》、《編譯器設(shè)計(jì)》等)。我推薦這本似乎在網(wǎng)上根本沒人提的書,原因是:這本書相對而言,沒有那么差,結(jié)合理論和實(shí)踐進(jìn)行講解,是我認(rèn)為最適合新手入門的編譯原理書籍。這本書的前端講解是比較好的,清晰明了,但必須要指出的是,這本書的后端講解個人認(rèn)為也很差,事實(shí)上我在讀這本書后端的時候,是以一個幾乎不怎么看的狀態(tài)讀完的,我自己編譯器的后端完全是后來我空想了很長時間設(shè)計(jì)出來的。此外,這本書的代碼只能說相對而言算是比較好的。不管怎么樣,我仍然把這本書推薦給:具有一定C語言基礎(chǔ),希望學(xué)習(xí)編譯原理,希望能夠最終實(shí)作出一個編譯器的讀者。
并行程序設(shè)計(jì)導(dǎo)論
居家大小姐
今天我要推薦的書是這本《并行程序設(shè)計(jì)導(dǎo)論》。這本書顧名思義:1. 講并行程序設(shè)計(jì)的。2. 是一本導(dǎo)論(雖然國外的導(dǎo)論都不是導(dǎo)論)。各位大多都是Java編程者,可能不太接觸到并行編程(更多的是并發(fā))。但這本書我的推薦理由是:寫的真的很好。既有系統(tǒng)的理論知識的講解,亦有三大并行編程技術(shù):MPI、pthread、OpenMP的講解及實(shí)戰(zhàn)演練??梢哉f,對于需要進(jìn)行并行編程的讀者來說,這是一本極好的枕邊書。并行程序設(shè)計(jì)以提高性能為目標(biāo),其需要編程者思考如何拆分任務(wù)細(xì)節(jié),又如何匯集任務(wù)細(xì)節(jié),再如何負(fù)載均衡,最終設(shè)計(jì)出一個最合理,最高效的程序。同時:OpenMP與MPI分別又是兩個完全不同的編程模型:共享內(nèi)存模型和分布式內(nèi)存模型的典型體現(xiàn)。通過這本書的學(xué)習(xí),可以充分體會到并行編程的強(qiáng)大威力,并快速上手,訴諸實(shí)踐。我將這本書推薦給:具有一定C語言基礎(chǔ),算法基礎(chǔ),希望學(xué)習(xí)并行編程的讀者。
算法導(dǎo)論
居家大小姐
今天我要推薦的書籍是這本大名鼎鼎的《算法導(dǎo)論》。首先給個結(jié)論:《算法導(dǎo)論》是我認(rèn)為的你唯一需要讀的算法書籍。沒錯,我的評價就是這么高。這個評價是在我讀了很多的算法書籍以后才得出的。算法導(dǎo)論這本書呢,網(wǎng)上的評價褒貶不一,在知乎上投反對票的人占多數(shù)。我個人認(rèn)為,算法作為一門獨(dú)立的學(xué)科,并不是每個人都需要理論性的,系統(tǒng)性的學(xué)習(xí)的。但矛盾在于,現(xiàn)在我們的招聘出于某種原因,對算法的要求莫名其妙的高,這就產(chǎn)生了兩種人:1. 專門學(xué)算法的。2. 只是為了通過面試而被迫學(xué)算法的。并且甚至進(jìn)一步導(dǎo)致網(wǎng)絡(luò)上產(chǎn)生了“不會算法就不配做程序員”這樣的非常過激,錯誤的言論。對于第二類人,個人認(rèn)為是不需要讀這本書的,多做題目即可。這本書適合第一類,即希望專門學(xué)習(xí)算法的人閱讀。這本書的優(yōu)點(diǎn)在于:首先內(nèi)容豐富且完整,涵蓋了各式你值得學(xué)習(xí)算法及數(shù)據(jù)結(jié)構(gòu)理論,從排序到圖論,從棧到rbtree,從貪心算法到dp,應(yīng)有盡有;此外,這本書的講解也非常的清晰明了,認(rèn)真閱讀定能理解;且完全不會糾結(jié)于某一處細(xì)節(jié),讓讀者偏離方向,而是努力的引發(fā)讀者“知其所以然”的思考,這樣的閱讀過程,是非常棒的。但同時我也要指出的是這本書的一些缺點(diǎn):首先這本書使用偽碼實(shí)現(xiàn),閱讀起來稍顯困難,但這本書的偽碼并不是那種“不負(fù)責(zé)任的偽碼”,是比較完備的;其次,這本書充斥著大量數(shù)學(xué)問題,個人認(rèn)為,如果對算法的理論性部分不感興趣,完全可以跳過或泛讀一切數(shù)學(xué)問題的討論篇章,這絲毫不會影響讀者對于算法的學(xué)習(xí)。綜上,我將這本書推薦給:希望系統(tǒng)的,全面學(xué)習(xí)算法理論的讀者,但不推薦給只是為了面試做準(zhǔn)備而學(xué)習(xí)算法的讀者。
C和指針
居家大小姐
今天我要推薦的書是這本《C和指針》。C語言是一門沒有多少語法的,很極簡的語言。但是極簡的語言也是有門道的。這本書雖名為指針,但卻是一本真正務(wù)實(shí)的去討論和講解各式C語言細(xì)節(jié)問題的書籍。這些細(xì)節(jié)問題,在C語言的入門書籍中往往不會提及,在其他討論別的話題的書籍中更不會提及,但卻是一個C語言編碼者所需要掌握的,所謂“扎實(shí)的基本功”。這本書全面而清晰,尤其是對指針部分話題的講解很透徹,其中部分示例在我閱讀的過程中甚至令我感到震驚,這是很奇妙的體驗(yàn)。我將這本書推薦給:具有一定C語言基礎(chǔ),希望全面鞏固C語言基礎(chǔ),查漏補(bǔ)缺,地毯式學(xué)習(xí)和通關(guān)C語言的讀者。
Mastering Regular Expressions
居家大小姐
今天我要推薦的書是這本《Mastering Regular Expressions》。RE呢就我周邊的朋友來看,基本上大家都認(rèn)為,這是一個冷門的領(lǐng)域,都不太會用,但有時候又因?yàn)榉N種原因需要,此時,往往就只能求助他人。在我看來,re并不是一個很復(fù)雜,很深奧的領(lǐng)域,并不需要花多少時間就能基本通關(guān)。此外,如果大家學(xué)習(xí)編譯原理的話,就會發(fā)現(xiàn),re實(shí)際上也是lexer的“終極形態(tài)”之一。這本書是一本很有名的經(jīng)典書籍,我在很多本書的附注、旁注、參考文件中都見過這本書的身影。名副其實(shí),這本書是一本很優(yōu)秀的書,講解很清晰全面,適合系統(tǒng)學(xué)習(xí)re。全書由通用理論部分+各種語言re的特化,兩部分組成。精讀本書,能夠讓讀者確實(shí)達(dá)到“精通re”的水平。我將本書推薦給:希望系統(tǒng)學(xué)習(xí)re的讀者。
Fluent Python
居家大小姐
今天我要推薦的書是這本《Fluent Python》。Python的書我實(shí)際上讀了很多,但很可惜的是,鮮有我認(rèn)為比較好的。所以,Python的書我只打算推薦這一本。這本書只看其名字,似乎是講Python高性能編程的(當(dāng)然這是不可能的),實(shí)際上,這本書的Fluent有“充分使用”之意。即:這本書是講:如何充分理解并使用Python的一本書。說得簡單些,這本書是討論P(yáng)ython的一些最深奧部分的書。但讀者不要被“最深奧”嚇到,我推薦這本書的原因,正是因?yàn)檫@本書的講解很好,我閱讀時,常有“戳中要害”之感;此外,這本書的內(nèi)容選擇也非常的精當(dāng),全書沒有任何的更低層次書籍會做的鋪墊,而全程在講述各類高級話題,以及一些新手不會注意到,但卻很重要或很容易犯錯誤的點(diǎn)。個人認(rèn)為,這是任何一個學(xué)習(xí)Python的讀者的必讀書目。我將這本書推薦給:具有一定的Python基礎(chǔ),希望深入學(xué)習(xí)Python的讀者。
C++沉思錄
居家大小姐
不出意外的話今天是我推薦的最后一本書了。今天我要推薦的書是《C++沉思錄》,以這本書收尾是有用意的。在學(xué)習(xí)的過程中,我們往往會浮,會鉆牛角尖。而這是一本讓人平靜,沉思的書籍。這本書沒有講各種語法,技巧,而是側(cè)重思考,讓讀者慢慢領(lǐng)悟。通過一個個的案例,帶領(lǐng)和引發(fā)讀者解決一個個似乎“很簡單”的問題。我不想對這本書繼續(xù)進(jìn)行更多的評價了,我覺得我在字里行間表達(dá)的意思足矣。希望大家在學(xué)習(xí)之余,也能平靜一下心態(tài),多進(jìn)行思考,定能有所收獲。
以上書籍推薦保留推薦者原汁原味的文字,未經(jīng)任何修改
