书籍推荐 | 低并发编程读者群 | 第一期
读者群里有位大神,居家大小姐。很多时候读者的提问,她都能给出十分专业的观点。后来的聊天中发现,她博览群书,而且记得十分牢固。
也正因为她真的读过很多书,她经常会对自己所看过的一些书进行评价,而且观点十分犀利,经常会说一些被我们程序员奉为经典的书籍的缺点。
有一天我说,要不你每天推荐一本书吧,我觉得会很有价值,于是,她真的连续推荐了一周多,而且每次写的都非常用心。
所以再后来,我觉得这是件有意义的事,于是我发动读者自愿报名,推荐书籍,每天一本,积攒得差不多时我会整理成一期书籍推荐文章,如今天这篇。我会保留读者原汁原味的推荐文字,不会去做任何修改,
所以,第一期书籍推荐,就这样,由读者自发地开启了!让我们看看它会持续多久吧!
以下是推荐的正文内容。
第一期全部由居家大小姐推荐,底层书籍较多。
C++ Primer
居家大小姐
今天要推荐的书籍是这本《C++ Primer》及其习题集。这本书对于我来说有很多个最,这是我看过的最好的技术书籍,是我精读次数最多的书籍,笔记最多的书籍。。。我对这本书的超级推荐程度自然无需多言。C++是一门难学易用的语言,个人认为,C++是最值得学习的语言。学习C++能够让一个人对其他各种语言的各种特性均具有更透彻的理解,这是我在学了十门以上语言后得出的深刻结论。这本书对于C++的讲解十分全面,清晰且透彻,难度适中。从新手入门到更广袤的C++世界,内容应有尽有。多次、彻底的精读这本书,我认为能让个人的C++水平达到约70分的水平。这是我斟酌良久才得到的评价。70分,意味着在及格之上,你的C++水平至少已经超越了很多浅尝辄止的人,同时,你也获得了足够的准备和能力,去探索更深奥的C++世界。所以,这本《C++ Primer》是我推荐的,你最适合阅读的第一本C++书籍,也是你最适合多次,长期精读的一本神作。
汇编语言程序设计
居家大小姐
今天要推荐的书是这本《汇编语言程序设计》。前面说过,王爽老师的书虽然内容非常不错,但刻意避开了“从高级语言到汇编语言”这一重要话题,这本书能弥补这一缺憾。这本书侧重于讲解C语言和GNU ASM之间的等价关系,编码方案,以及编译器行为,也讲述了诸如SIMD等的高级汇编技术,以及诸如内联汇编等C语言技术。这本书推荐给已有一定基础,希望继续学习汇编的读者。但需要补充的是,个人认为,汇编语言文字游戏太多,非专业学者实际上无需过度专注于细枝末节,掌握汇编的思想,并培养,训练将高级语言与汇编一一对应的能力,才是最重要的。
Inside the C++ Object Model
居家大小姐
今天要推荐的书是这本《Inside the C++ Object Model》。正如译者侯捷老师(在另一本书的序言中)所述,这本书“磕掉了多少C++老手的牙”。确实,这是一本非常深奥的书,全书仅区区三百多页,却向我们完整的讲述了一个很复杂的话题:面向对象编程的底层是如何实现的?这个问题非常复杂,其牵扯出很多的问题,如:到底什么是类?虚函数是如何实现的?继承是如何实现的?多重继承和单继承有什么区别?什么是虚继承?类成员指针的本质是什么?(这个问题在《C++ Primer》的第19章早已埋下伏笔)。。。所有这些问题,都将在本书中得到解答。这本书不仅内容详实,更优秀的地方在于:其中的配图十分清晰明了,往往使得读者能够在纷繁复杂的内存模型世界中恍然大悟,从而理解其中奥义。我将这本书推荐给具有一定面向对象语言基础,希望深入了解的读者。此外,就这本书而言,“具有一定面向对象语言基础”不仅限于C++语言,这本书讲解的技术是通用的。
STL源码剖析
居家大小姐
今天我要推荐的书籍是侯捷老师的著作《STL源码剖析》。这本书也许不用我多加推荐,“懂的都懂”。作为C++领域著名学者,侯捷老师的这本著作是久负盛名的,全书所讲述内容也十分明了:STL的源码实现。这里,我仅仅谈一谈我读这本书的体验,以供大家参考。正如序言所述,这是一本各种“不适合各种人”的书,不适合初学者,不适合学习OOP。。。故显然,这是一本深奥的书。在某些方面,STL的源码实现确实远比我们想象的要复杂,比如sort,比如deque,我持有的观点是:这部分内容无需过深入的研究;但在另一方面,STL的很多实现又是非常值得我们去学习的,如用环链表实现双链表,如利用模板实现迭代器分派(另见我著《C++模板沉思录》5.1节),再如大量的type traits实现(另见我著《C++模板沉思录》第三章)。此外,STL的大局观和通用性思想同样也十分值得我们去学习。我仅将此书推荐给:对C++具有一定了解,对STL具有一定使用经验,并希望继续学习其实现的读者。
编译原理及实践
居家大小姐
今天我要推荐的书是这本《编译原理及实践》。说到编译原理,我的整个学习的经历和心路历程是相当多的。总的来说:编译原理的书籍大多很差,故弄玄虚,极其不适合新手学习。对于编译原理的新手,其往往关注的是如何实作一个真正能用的编译器,而市面上的大多数书差劲之处在于:1. 极为注重所谓的“元编译器”,即:能够自动产出一个编译器的程序。这些技术非常难,且对于新手而言毫无价值。2. 代码写的极差,极为诡异(如《虎书》),要么就根本没有代码(如《龙书》、《编译器设计》等)。我推荐这本似乎在网上根本没人提的书,原因是:这本书相对而言,没有那么差,结合理论和实践进行讲解,是我认为最适合新手入门的编译原理书籍。这本书的前端讲解是比较好的,清晰明了,但必须要指出的是,这本书的后端讲解个人认为也很差,事实上我在读这本书后端的时候,是以一个几乎不怎么看的状态读完的,我自己编译器的后端完全是后来我空想了很长时间设计出来的。此外,这本书的代码只能说相对而言算是比较好的。不管怎么样,我仍然把这本书推荐给:具有一定C语言基础,希望学习编译原理,希望能够最终实作出一个编译器的读者。
并行程序设计导论
居家大小姐
今天我要推荐的书是这本《并行程序设计导论》。这本书顾名思义:1. 讲并行程序设计的。2. 是一本导论(虽然国外的导论都不是导论)。各位大多都是Java编程者,可能不太接触到并行编程(更多的是并发)。但这本书我的推荐理由是:写的真的很好。既有系统的理论知识的讲解,亦有三大并行编程技术:MPI、pthread、OpenMP的讲解及实战演练。可以说,对于需要进行并行编程的读者来说,这是一本极好的枕边书。并行程序设计以提高性能为目标,其需要编程者思考如何拆分任务细节,又如何汇集任务细节,再如何负载均衡,最终设计出一个最合理,最高效的程序。同时:OpenMP与MPI分别又是两个完全不同的编程模型:共享内存模型和分布式内存模型的典型体现。通过这本书的学习,可以充分体会到并行编程的强大威力,并快速上手,诉诸实践。我将这本书推荐给:具有一定C语言基础,算法基础,希望学习并行编程的读者。
算法导论
居家大小姐
今天我要推荐的书籍是这本大名鼎鼎的《算法导论》。首先给个结论:《算法导论》是我认为的你唯一需要读的算法书籍。没错,我的评价就是这么高。这个评价是在我读了很多的算法书籍以后才得出的。算法导论这本书呢,网上的评价褒贬不一,在知乎上投反对票的人占多数。我个人认为,算法作为一门独立的学科,并不是每个人都需要理论性的,系统性的学习的。但矛盾在于,现在我们的招聘出于某种原因,对算法的要求莫名其妙的高,这就产生了两种人:1. 专门学算法的。2. 只是为了通过面试而被迫学算法的。并且甚至进一步导致网络上产生了“不会算法就不配做程序员”这样的非常过激,错误的言论。对于第二类人,个人认为是不需要读这本书的,多做题目即可。这本书适合第一类,即希望专门学习算法的人阅读。这本书的优点在于:首先内容丰富且完整,涵盖了各式你值得学习算法及数据结构理论,从排序到图论,从栈到rbtree,从贪心算法到dp,应有尽有;此外,这本书的讲解也非常的清晰明了,认真阅读定能理解;且完全不会纠结于某一处细节,让读者偏离方向,而是努力的引发读者“知其所以然”的思考,这样的阅读过程,是非常棒的。但同时我也要指出的是这本书的一些缺点:首先这本书使用伪码实现,阅读起来稍显困难,但这本书的伪码并不是那种“不负责任的伪码”,是比较完备的;其次,这本书充斥着大量数学问题,个人认为,如果对算法的理论性部分不感兴趣,完全可以跳过或泛读一切数学问题的讨论篇章,这丝毫不会影响读者对于算法的学习。综上,我将这本书推荐给:希望系统的,全面学习算法理论的读者,但不推荐给只是为了面试做准备而学习算法的读者。
C和指针
居家大小姐
今天我要推荐的书是这本《C和指针》。C语言是一门没有多少语法的,很极简的语言。但是极简的语言也是有门道的。这本书虽名为指针,但却是一本真正务实的去讨论和讲解各式C语言细节问题的书籍。这些细节问题,在C语言的入门书籍中往往不会提及,在其他讨论别的话题的书籍中更不会提及,但却是一个C语言编码者所需要掌握的,所谓“扎实的基本功”。这本书全面而清晰,尤其是对指针部分话题的讲解很透彻,其中部分示例在我阅读的过程中甚至令我感到震惊,这是很奇妙的体验。我将这本书推荐给:具有一定C语言基础,希望全面巩固C语言基础,查漏补缺,地毯式学习和通关C语言的读者。
Mastering Regular Expressions
居家大小姐
今天我要推荐的书是这本《Mastering Regular Expressions》。RE呢就我周边的朋友来看,基本上大家都认为,这是一个冷门的领域,都不太会用,但有时候又因为种种原因需要,此时,往往就只能求助他人。在我看来,re并不是一个很复杂,很深奥的领域,并不需要花多少时间就能基本通关。此外,如果大家学习编译原理的话,就会发现,re实际上也是lexer的“终极形态”之一。这本书是一本很有名的经典书籍,我在很多本书的附注、旁注、参考文件中都见过这本书的身影。名副其实,这本书是一本很优秀的书,讲解很清晰全面,适合系统学习re。全书由通用理论部分+各种语言re的特化,两部分组成。精读本书,能够让读者确实达到“精通re”的水平。我将本书推荐给:希望系统学习re的读者。
Fluent Python
居家大小姐
今天我要推荐的书是这本《Fluent Python》。Python的书我实际上读了很多,但很可惜的是,鲜有我认为比较好的。所以,Python的书我只打算推荐这一本。这本书只看其名字,似乎是讲Python高性能编程的(当然这是不可能的),实际上,这本书的Fluent有“充分使用”之意。即:这本书是讲:如何充分理解并使用Python的一本书。说得简单些,这本书是讨论Python的一些最深奥部分的书。但读者不要被“最深奥”吓到,我推荐这本书的原因,正是因为这本书的讲解很好,我阅读时,常有“戳中要害”之感;此外,这本书的内容选择也非常的精当,全书没有任何的更低层次书籍会做的铺垫,而全程在讲述各类高级话题,以及一些新手不会注意到,但却很重要或很容易犯错误的点。个人认为,这是任何一个学习Python的读者的必读书目。我将这本书推荐给:具有一定的Python基础,希望深入学习Python的读者。
C++沉思录
居家大小姐
不出意外的话今天是我推荐的最后一本书了。今天我要推荐的书是《C++沉思录》,以这本书收尾是有用意的。在学习的过程中,我们往往会浮,会钻牛角尖。而这是一本让人平静,沉思的书籍。这本书没有讲各种语法,技巧,而是侧重思考,让读者慢慢领悟。通过一个个的案例,带领和引发读者解决一个个似乎“很简单”的问题。我不想对这本书继续进行更多的评价了,我觉得我在字里行间表达的意思足矣。希望大家在学习之余,也能平静一下心态,多进行思考,定能有所收获。
以上书籍推荐保留推荐者原汁原味的文字,未经任何修改