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