喜欢的可以收藏转发加关注
为有理想的计算机小白们整理推荐的一份书单:
世界上并不存在速成的终南捷径,但阅读好的技术书籍,尤其是阅读大师们的经典著作,总能收到事半功倍之效。一位优秀的程序员,或许就是一名好的阅读者。好的阅读者,总是知道如何选择好的书籍。
以下就给想要成为架构师的程序猿们推荐从事技术生涯这一辈子都要花时间去看的书单,以及一份技术书阅读方法论总结:
前言:技术书阅读方法论
一.速读一遍(最好在1~2天内完成)
人的大脑记忆力有限,在一天内快速看完一本书会在大脑里留下深刻印象,对于之后复习以及总结都会有特别好的作用。
对于每一章的知识,先阅读标题,弄懂大概讲的是什么主题,再去快速看一遍,不懂也没有关系,但是一定要在不懂的地方做个记号,什么记号无所谓,但是要让自己后面再看的时候有个提醒的作用,看看第二次看有没有懂了些。
二.精读一遍(在2周内看完)
有了前面速读的感觉,第二次看会有慢慢深刻了思想和意识的作用,具体为什么不要问我,去问30年后的神经大脑专家,现在人类可能还没有总结出为什么大脑对记忆的完全方法论,但是,就像我们专业程序员,打代码都是先实践,然后就渐渐懂了过程,慢慢懂了原理,所以第二遍读的时候稍微慢下来,2周内搞定。记住一句话:没看完一个章节后,总结一下这个章节讲了啥。很关键。
三.实践(在整个过程中都要)
实践的时候,要注意不用都去实践,最好看着书,敲下代码,把重点的内容敲一遍有个肌肉记忆就很不错了。这个过程最好结合”费曼思想”进行思考,反思,总结。当然如果能把刚刚学习到的内容结合现在做的项目‘注入’,即即学即用,效果甚佳。
以及到自己做过的项目中去把每个有涉及的原理的代码,研究一遍,就可以了
想要成为架构师的程序员一生必读的书,分为以下四个部分:
1.Coding Practice(编程实践系列)
2.Architecture Design(架构与设计系列)
3.Methodology(方法学系列)
4.Thought Leadership(思想与领导力系列)
5.奇门遁甲系列
6.互联网大佬奇迹传记系列:
架构师一生必读书籍推荐理由:
一.编程实践系列:
1 《代码整洁之道》
《代码整洁之道》讲述了一系列行之有效的整洁代码操作实践。软件质量,不但依赖于架构及项目管理,而且与代码质量紧密相关。
这一点,无论是敏捷开发流派还是传统开发流派,都不得不承认。《代码整洁之道》提出一种观念:代码质量与其整洁度成正比。
干净的代码,既在质量上较为可靠,也为后期维护、升级奠定了良好基础。作为编程领域的佼佼者,这些实践在《代码整洁之道》中体现为一条条规则(或称“启示”),并辅以来自现实项目的正、反两面的范例。只要遵循这些规则,就能编写出干净的代码,从而有效提升代码质量。
2 《卓有成效的程序员》
垂涎这本书很久,终于花了一天时间看完了。本书所介绍的最主要的不是工具和方法,而是思想,有助于我们提升工作效率的思想。
工具和方法是其次的,只要理解掌握这些思想,并在实际工作中运用到,就能够大大提升我们的工作效率了。
总的来说,这本书还是很优秀的,是一本「集大成」的书籍。里面很多想法和概念通过阅读其他书籍也能接触到,只不过在这本书里面,作者结合自己的亲身经验总结来介绍,更有助于理解这些想法。在我看来,整本书一直都在灌输着三个思想:
一、经典的还是好的
二、尽量把事情交给计算机来完成
作者有句话我是很赞同的:只要做过一次的事情,以后很大程度要重复做。
三、选择最合适的,而不是追求最好的。
3 《程序员的职业素养》
Robert C.Martin的大名咱就不说啥了。这本书写的深入浅出,感觉像读一本小说,流畅自然,但自然而然的就学到了很多东西。结合工作经验,常有种“确实如此”的感觉。
该书尤其适合初入职场,试图成为“专业人员”的人。其中永远不要说“我试试”和有关测试的章节给我留下了深刻印象。
4 《重构与模式》
只是看了一半,因为其中每个例子都含有作者实践过的真实代码,非常适合我们跟着作者的思路去思考,运用设计模式进行重构,解决眼前存在的难题!
5 《代码大全》
初见《代码大全》,还是该书的第一版,只从书名上看,还以为都是一些代码的示例。觉得还有很多的书需要读,这种实用主义的技巧书,可以先放一放,于是与之失之交臂。
及至后来,才发现原来被中文书名给骗了。只要将目录浏览一过,就会发现,这本书基本覆盖了软件构建的全过程,从需要分析、系统架构设计到具体的编码规范、编码技巧,程序员可以在其中找到所有想找到的内容。
而且每一个方面作者都进行了深入的探讨和详细的解说,同时也给出了想要更进一步学习的参考。可以说,这是一本对其出版之前的所有软件构建的知识的百科全书。
对于争论较多的方面,作者给出了较为合理、公允的折中方案,甚至在34章最后一节”汝当分离软件与信仰“,作者明确的阐述了这一思想。
这本书和《程序员修炼之道》一厚一薄,相映成趣,都是难得一见的好书,值得花时间和精心用心的阅读,并不时拿出来温习,可以肯定的是,每次翻开,必有收获!
6 《实现模式》
这是一本关注程序细节并具有浓厚实战意义的书籍, 它主要是来告诉我们如何写出容易让人理解的代码. 如果非要在书名前加一个限定词的话, “java实现模式”可能更贴切一些, 因为里面的代码都是以java作为例子来说明的. 作者是junit的贡献者之一, 因此里面的很多例子都是从junit中来的.
这本书也解决了很多自己在实际开发中的一些抉择困惑. 是一本非常值得常看的书籍. 另外翻译的也非常不错, 不像有些书让人看了云里雾里的, 不知所云.
本书按照方法, 行为, 类, 状态, 集合, 框架的顺序依次对相关的实现模式加以说明来阐述如何写出好的代码. 也是本书的重点, 集合主要是在讲java.util下的集合类的使用法则, 框架部分主要是框架的开发有自己的规则, 围绕兼容性, 扩展性方面在说事儿。
7 《程序员修炼之道》
很久以前买的这本书,忘记在哪里看到这部书的推荐了,有大牛很卖力的推荐,于是去买了一本。
坦白讲,那个时候自己是完完全全的菜鸟,从大学里出来,除了会编程啥也不懂,这本书在当时真的是指路明灯。
书中的道理很浅显,可是对于菜鸟却是至理名言。基本为你勾勒了一个成熟软件程序员专家所需要的所有特性。
我自觉地获益颇多,其中很多事情,要么在当时是自己没有想到的,要么是发生了,自己没有注意的等等。给我影响很大。
当然,有些自以为是的”大牛”是鄙视这些的,因为看起来不够高深,随便吧,反正它讲的是从小工到专家,我是从小工过来的,那些凭空冒出来的“专家”不看也罢。
8 《高性能MySQL》
书很厚,内容非常全面,基本涵盖了所有使用中需要了解的基础和进阶知识,认真看完基本就没有知识死角了
书的语言风格和内容编写都非常好,没有废话,全书无任何尿点,每一节每一段话都很重要,作者们是mysql DBA届的大牛,经验和知识水平没得说,尤其让人如沐春风的是作者的一些谆谆教诲,大师风范跃然纸上国内tb大牛翻译的也很棒。
非常好的一本书,五星力荐,即使你不是DBA也值得一读。
稍微美中不足的就是知识的深度上有所欠缺,很多知识点讲出来了,但是背后的原理却没有触及,当然这和本书偏向应用的定位有关
9 《修改代码的艺术》
这本书很薄,但是看起来还是很吃力,里面介绍了很多重构的知识,而且有很多c++的内容,有的地方也是似懂非懂的,如果了解设计模式和重构,就会轻松很多,可能艺术这东西,本身就不容易懂吧。
里面对单元测试的依赖性很强,其实还是一本不错的书,你完全可以领略到作者真的把代码的修改看成是一种艺术,软件工程师要做到匠人的地步也着实不容易。
看得出写代码不是一件简单的事情,是需要经验的,不像国内这样,写代码是年轻人的事情,其实没有时间的锤炼是写不出好的代码来的,即使写出来也不能谈得上是艺术了。
希望将来再次翻起这本书时会有更多的领悟。
10 《计算机程序的构造和解释》
这是一本很有趣的书,任何对编程真正感兴趣的人都应该看看。它讲了程序结构的很多方面,但始终围绕着一个主题,那就是从各个层次上来减少计算的复杂度。
这和我读过的另外几本书核心是一样的,只是维度不同。比如《代码大全》厚厚的一本书讲的也是管理复杂,但是它针对的是软件工程这门工作该从哪些方面来提高生产效率,减少沟通和维护的成本,比如变量名该怎样起,函数该多长,注释该怎么写。
而这本书的出发点是各种编程问题,重点放在该如何分层以减少程序的复杂度,有点像是《Head First设计模式》,讨论的也是如何封装变化,针对接口编程等等,不过《SICP》里的问题难得多而已,类似算法一样很费脑筋。
11 《重构:改善既有代码的设计(中文版)》
Martin Fowler 的《重构-改善既有代码的设计》这本书,是我大学老师推荐给我的。 当时我在撰写代码过程中,发现当代码量到某个数量级时候(1000+行), 就会逐渐失去对代码的控制能力。
这本书是2年前购买的,可惜以我当时的代码感知和撰写能力,看起来颇为吃力。 半途就看得云里雾里而中断了。最近我又重新拾起这本书, 将书中所写的境况与我这两年多来遇到的问题相互印证,才感受到这本经典的力量。
12 《调试九法——软硬件错误的排查之道》
一般当工程师把一个东西称为艺术甚至玄学的时候,说明这个东西难度很大,没有太多规律可以遵循,调试就属于此列。几乎每个程序员都有被bug搞到死去活来的经验,有时候颠来倒去,问题似乎解决了,但也不知道为什么,就把它当作不可解释的玄学现象,最烦人的一种bug是偶尔出现难以复现的,学名海森堡bug。
不过毕竟软件还是属于科学技术的范畴,调试也应当是门技术活。《调试九法》是一本少见的讲调试技术的书,九个普遍性的原则不仅适用于软硬件开发维护,甚至还能运用到日常生活,为了找到这本书我也是费了点神,幸好图灵社区还有正版的电子书卖。
说实话,作者举的很多例子偏硬件,所以理解起来有点隔膜,但是九个原则确实很实用,在我以前的开发调试经历中可能也不自觉的总结过一些,但是看了本书,还是有拿到武功心法的感觉。
13 《算法设计与分析基础第3版》
对算法做了一个很新颖的划分,可以看到它和我们经常看的算法书的知识点划分很不一样。作者得归类很不错。对一些常用思想做了分类。
比如作者对分治做了几个分类。纯思维层面的切入分析,而不像以前的分为一般算法和图论那样子。
书中有不错的习题。思想描述有一定的思维引导性质。
14 《实用J2EE设计模式编程指南》
从应用的层次看来。从价格和其本身的内容这个角度来比较的话,这本书还是很划算的。其前1/3的对设计模式的总结还是十分清晰的。而后面的相当多的关于EJB的内容就是根据读者的需要来看了。
15 《编写可读代码的艺术》
姑且不谈该书中提到的程序最优与否,本书在给广大的程序员上了一堂关键的编程品德学。就如同科学发展到一定程度出现对科学家应该具有什么品德展开讨论一样,本书也提出了作为一个出色的、有责任心的程序员应该具有的品质——让他人更容易看懂自己的代码。
从个人经验来谈,身边很多人编程时都是考虑如何完成程序的使命,很少有人去考虑别人是否看得懂。结果造成当别人看你程序时看不懂,问你你又不耐烦讲这种局面数不胜数。
本书从根本上——即编程的基本思想层面,告诉广大编程的人要具有编程的责任感,方便大家的同时才能方便自己。所以该书对程序员在思想启蒙上是一本不可多得的好书。
16 《大话设计模式(带目录完整版)》
用了三天时间把书看完了,确实是设计模式的入门书。虽然书中有些例子举得并不十分恰当,但基本上也把每个设计模式讲清楚了。
国内很多教材和教师讲述专业知识都是很枯燥的,如此则把很多初学者拒之门外,让一部分人丧失了学习的兴趣。而这本书则类似于少数名师一样,采用交互式及启发式地讲述方式,在不知不觉中向读者传授了知识。
就我个人而言,更倾向于如同专业论文一般严谨的表述方式,但如此以来在理解上就要多花一些工夫了。我们需要类似Gof《设计模式》的经典,但就目前而言,像本书一样,以大家所熟知的例子来描述问题,步步深入,具有中国特色风格的书,才是我们更加需要的。难得见到国人出的精品书籍,给5 分。
17 《程序设计方法》
这本书写得很nice,如果有人讲的话,小朋友是看得懂的。但是需要有小学数学的基础,否则的话开始的练习会不知所云。我想过,把开始的练习给改成字符串处理的话,会不会简单一点——最后觉得不会。
原因是为了说明白“嵌套”是怎么回事,小朋友一定先得有小学的算术表达式可以嵌套的这个观念才行。所以本书不推荐给国内五年级以下代数感觉不很好的小朋友。
18 《七周七语言:理解多种编程范型》
众所周知,每一种语言或复杂或简单,使用者想要使用到一定境界,都不是短短一周可以达成的。所以这本书从根本上就不是像副标题中描述的A Pragmatic Guide to Learning Programming Languages。
这本书更像是对“非主流”的语言界的一次全面概括。作者精挑细选的7门语言基本囊括了“非主流”界的各种范式,也不乏“非主流”界中的主流,名门望族。细致的描述了每一个语言的特性,以及多种语言之间的对比。
对于每一个喜欢language,想要了解language的计算机爱好者都不应该错过。有志想去独立的设计一个language的爱好者当然更不应该错过。
19 《程序设计语言——实践之路》
一句话,对于那些有兴趣了解程序设计语言的基本设计与功能的软件工程师而言,这是一本入门的好书。特别有助于深入了解某一种程序语言的特点,理解其优势与软肋,进而用好它,而不是迷失于世面上众多的语言的花哨的特性中。
20 《程序设计实践》
这是一本牢牢占据经典书架最起眼位置的小册子,也是最符合KISS之道的神作之一。
抛开已有的业界的best practices,这本书还修正了我记忆中的很多错误认识,Brian Kernighan、Rob Pike的大名自然是本书最好的招牌;但作者的求实态度更值得每一个认真的programmer学习。
整体上,全书采用一个实际问题作为切入点并且贯穿全书,涵盖了programming工作的各个方面,简明扼要却又发人深省。这个例子的选取本身就是非同谨慎的,规模不至于过大(100多行代码)但是又足以说明问题。
我最欣赏的是作者并没有特意偏袒C语言这个Unix的宠儿,而是兼顾了Java、C++、awk三种语言,并用事实揭示了如何更好的使用语言,如何在实际问题和应用场景中取舍。
读完全书,我特意从本书的网站上自习运行了作者的源程序,书中对于很多地方的分析和数据比较,在数年后技术突飞猛进的今天仍然没有发生本质变化。
21 《编码:隐匿在计算机软硬件背后的语言(美)佩措尔德》
当年参加计算机大赛的时候有个同学和我说计算机方面的东西,千万不要想太多……到今天我才明白他的意思。