加个“星标”,每天带你看好文,读好书!
> 来自:网络
今天大雄给大家分享的是一些,程序员在掌握每个关键概念所需的入门书籍和必读书籍。
其实,最近这段时间,真的很适合阅读,相信很多小伙伴在之前的阅读都是碎片式的,所以这段待在家的时间,真的建议小伙伴们可以好好读一本书,或者认真地钻研一件事。
今天的分享主要分为程序设计、软件开发、以及个人成长三大类。
程序设计
1. 基础理论
编码
编码:隐匿在计算机软硬件背后的语言,这本书其实不应该叫编码——它更应该叫“Petzold教你造计算机”——作者 Charles Petzold。
创造性的以编码为主题,从电报机和手电筒讲到数字电路,然后利用数字电路中的逻辑门构造出加法器和触发器,最后构造出一个完整的存储程序计算机 。
不要被这些电路概念吓到—— 编码使用大量形象贴切的类比简化了这些概念,使其成为最精彩最通俗易懂的计算机入门读物。
深入理解计算机系统
深入理解计算机系统(第2版) 这本书的全名是:Computer Systems:A Programmer’s Perspective,所以它又被称为 CSAPP。
如果想打下扎实的计算机基础又不想把操作系统计算机结构编译原理这些书统统读一遍,阅读深入理解计算机系统是最有效率的方式。
2. 编程语言
编程语言是程序员必不可少的日常工具。工欲善其事,必先利其器。
C程序设计语言
尽管C程序设计语言这本书是二十多年前的书籍,但它仍然是C语言——以及计算机科学中最重要的书籍之一。
它的重要性不仅仅在于它用清晰的语言和简练的代码描述了 C 语言全貌,而且在于它为之后的计算机书籍——尤其是编程语言书籍树立了新的标杆。
C++ 程序设计原理与实践
作为C++的发明者,没有人能比 Bjarne Stroustrup 更理解C++。
Bjarne在Texas A&M大学任教时使用C++为大学新生讲授编程,从而就有了 C++ 程序设计原理与实践这本书。
它面向编程初学者,既包含 C++ 教程,也包含大量程序设计原则。
** C++**
同样是 Bjarne Stroustrup 的作品, C++ 程序设计语言是 C++ 最权威且最全面 的书籍。第4版相对于之前的版本进行了全面的更新,覆盖了第二新的C++ 11标准,并砍掉了部分过时的内容。
Java
平心而论Java核心技术 (即Core Java)并不算是一本特别出色的书籍:
示例代码不够严谨,充斥着很多与C/C++的比较,语言也不够简洁——问题在于Java并没有一本很出色的入门书籍,与同类型的Java编程思想相比,Java核心技术至少做到了与时俱进。
Effective Java
尽管Java没有什么出色的入门书籍,但这不代表 Java 没有出色的必读书籍。Effective Java包含大量的优秀Java编程实践,并对泛型和并发这两个充满陷阱的Java特性给出了充满洞察力的建议。
以至于Java之父 James Gosling为这本书作序:“我很希望 10 年前就拥有这本书。可能有人认为我不需要任何 Java 方面的书籍,但是我需要这本书。”
C#
C#的语言特性非常丰富,很难用简短的篇幅概括这些特性。
精通 C#之所以有近 1200 页的篇幅,是因为它不但全面介绍了 C# 语言,而且还覆盖了 ADO.NET,WCF,WF,WPF,以及 ASP.NET 这些 .Net 框架。
CLRviaC#
CLRviaC#是C#/.Net最重要的书籍,没有之一。
它全面介绍了.Net 的基石—— CLR的运行原理,以及构建于CLR之上的 C# 类型系统,运行时关系,泛型,以及线程/并行等高级内容。任何一个以 C# 为工作内容的程序员都应该阅读此书。
JavaScript
JavaScript DOM编程艺术系统的介绍了如何使用JavaScript,HTML,以及 CSS 创建可用的 Web 页面,是一本前端入门佳作。
JavaScript语言
JavaScript语言包含大量的陷阱和误区,但它却又有一些相当不错的特性,这也是为什么 Douglas Crockford 称JavaScript为 世界上最被误解的语言 ,并编写了 JavaScript 语言精粹 一书来帮助前端开发者绕开JavaScript中的陷阱。
和同类书籍不同, JavaScript 语言精粹用精炼的语言讲解了JavaScript语言中好的那部分(例如闭包,函数是头等对象,以及对象字面量)。
Python
Python 的入门书籍很多,而且据说质量大多不错,而Python这本入门读物——简洁,全面,代码质量很不错,而且有几个很有趣的课后作业,可以快速上手。
Python 参考手册
权威且实用 Python 书籍,覆盖 Python 2和 Python 3。尽管它名为参考手册,但 Python 参考手册 在 Python 语法和标准库基础之上对其实现机制也给出了深入的讲解,不容错过。
3.编程语言理论
编程语言实现模式
大多数程序员并不需要从头编写一个编译器或解释器,因此龙书(编译原理) 就显得过于重量级;然而多数程序员还是需要解析文本,处理配置文件,或者写一个小语言,编程语言实现模式很好的满足了这个需求。
它把常用的文本解析/代码生成方法组织成一个个模式,并为每个模式给出了实例和应用场景。这本书既会提高你的动手能力,也会加深你对编程语言的理解。
Python发明者Guido van Rossum甚至为这本书给出了_“Throw away your compiler theory book!”_ 这样的超高评价。
程序设计语言——实践之路
程序员每天都要和编程语言打交道,但是思考编程语言为什么会被设计成这个样子的程序员并不多, 程序设计语言—实践之路这本书完美的回答了这个问题。
4. 程序设计
程序设计方法
现代编程语言的语法大多很繁杂,初学者使用这些语言学习编程会导致花大量的时间在编程语言语法(诸如指针,引用和类型定义)而不是程序设计方法(诸如数据抽象和过程抽象)之上。
程序设计方法解决了这个问题——它专注于程序设计方法,使得读者无需把大量时间花在编程语言上。
计算机程序的构造与解释
计算机程序的构造与解释这本书和程序设计方法有很多共同点——都使用 Scheme 作为教学语言;都专注于程序设计方法而非编程语言本身;都拥有相当出色的课后题。
5. 算法与数据结构
** 算法**
算法这本书的使用更为容易的Java语言作为教学语言;覆盖所有常用的数据结构和算法,并均给出其完整实现;包含大量的图示用于可视化算法,这也是被称为最好的算法入门书籍的原因。
编程珠玑(第 2 版)
编程珠玑(第 2 版)是一本少见的实践型算法书籍——它并非一一介绍数据结构/算法的教材,而是实践性极强的算法应用手册。
作者( Jon Bentley )从他多年的实际经验精选出一些有趣而又实用的问题,然后展示了他解决这些问题的过程(分析问题,选择合适的算法,解决问题,以及验证答案)。任何程序员都可以从中获益。
6. 程序调试
调试九法
调试九法这本书的作者是一个具有丰富实战经验的硬件工程师,他把他多年的调试经验总结成九条调试法则,并对每一条法则都给对应的实际案例。
任何程序员都应通过阅读这本书改善调试效率,即便是非程序员,也可以从这本书中学到系统解决问题的方法。
软件开发
1. 编程实践
程序设计实践
Brian Kernighan 是这个星球上最好的计算机书籍作者:从上古时期的 Software Tools ,到早期的 Unix编程环境 和 C 程序设计语言,再到这本程序设计实践 ,每本书都是必读之作。
尽管程序设计实践只有短短 200 余页,但它使用精炼的代码和简要的原则覆盖了程序设计的所有关键概念(包括编程风格,算法与数据结构,API 设计,调试,测试,优化,移植,以及领域特定语言等概念)。
代码大全
无论在哪个版本的程序员必读书单,代码大全都会高居首位。
和其它程序设计书籍不同, 代码大全这本书用通俗清晰的语言覆盖了软件构建(Software Construction)中各个层次上所有的重要概念。
2. 面向对象程序设计
** Head First**
无论是在Amazon还是在Google上搜索设计模式相关书籍,Head First设计模式都会排在首位——它使用风趣的语言和诙谐的图示讲述了观察者、装饰者,抽象工厂,和单例等关键设计模式,使得初学者可以迅速的理解并掌握设计模式。
设计模式
设计模式作为设计模式领域的开山之作,Erich Gamma,Richard Helm,Ralph Johnson等四位作者将各个领域面向对象程序开发的经验总结成三大类23种模式。
并给出了每个模式的使用场景,变体,不足,以及如何克服这些不足。
需要注意:设计模式不适合初学者阅读——它更像是一篇博士论文而非技术书籍,加上它的范例都具有很强的领域背景(诸如 GUI 窗口系统和富文本编辑器),缺乏实际经验的程序员很难理解这本书。
3. 重构
重构
任何产品代码都不是一蹴而就,而是在反复不断的修改中进化而来。重构这本书正是这样一本介绍如何改进代码的书籍——如何在保持代码行为的基础上,提升代码的质量(这也是重构的定义)。
修改代码的艺术
这里再重复一遍重构的定义——在保持代码行为的基础上,提升代码的质量。 重构 专注于第二步,即如何提升代码的质量,而修改代码的艺术专注于第一步,即如何保持代码的行为。
4. 软件测试
How to Break Software
关于软件测试的书籍很多,但很少有一本测试书籍能像How to Break Software这般既有趣又实用。
How to Break Software这本书非常实际——它从程序员的心理出发,分析软件错误/Bug最可能产生的路径,然后针对这些路径进行残酷的测试,以保证软件质量。
注意:如果你是一个测试工程师,那么在阅读这本书前请三思——因为阅读它之后你会让你身边的程序员苦不堪言,甚至连掐死你的心都有 。
xUnit Test Patterns
How to Break Software 注重黑盒测试,而这本 xUnit Test Patterns 则注重白盒测试。
正如书名所示, xUnit Test Patterns 覆盖了单元测试的每个方面:从如何编写良好的单元测试,到如何设计可测试(Testable)的软件,再到如何重构测试——可以把它看作为单元测试的百科全书。
5. 项目管理
极客与团队
极客与团队是一本写给程序员的如何在团队中工作的绝好书籍,它围绕着 HRT 三大原则(Humility 谦逊,Respect 尊重,和Trust信任),系统的介绍了如何融入团队,如何打造优秀的团队,如何领导团队,以及如何应对团队中的害群之马(Poisonous People)。
人月神话
尽管人月神话成书于40年前,但它仍是软件项目管理最重要的书籍。人月神话源自作者Fred Brooks领导并完成System/360和OS/360这两个即是放到现在也是巨型软件项目的里程碑项目的经验总结。
6. 专业开发
程序员修炼之道
这本书并不局限于特定的编程语言或框架,而是提出了一套切实可行的实效(Pragmatic)开发哲学,并通过程序设计,测试,编程工具,以及项目管理等方面的实例展示了如何应用这套开发哲学,从而使得程序员更加高效专业。
程序员职业素养
程序员修炼之道指出了如何成为专业程序员,这本程序员职业素养则指出了专业程序员应该是什么样子——
承担责任;知道自己在做什么;知道何时说不/何时说是;在正确的时间编写正确的代码;懂得自我时间管理和工期预估;知道如何应对压力。
如果想成为专业程序员(Professional Developer)(而不是码农(Code Monkey),这本书会为小伙伴指明前进的方向。
7. 大师之言
奇思妙想
奇思妙想:15 位计算机天才及其重大发现。
奇思妙想把计算机科学分为四大领域:编程语言;算法;架构;人工智能。并选取了每个领域下最具代表性的计算机科学家进行访谈。
因为这些计算机科学家都是其所在领域的开拓者,因此他们能给出常人无法给出的深刻见解。
编程人生
同样是访谈录,同样访谈 15 个人, 编程人生把重点放在程序员(Coders at work)上。
它从各个领域选取了15位顶尖的程序员,这些程序员既包括 Ken Thompson 和 Jamie Zawinski 这些老牌Unix黑客,也包括 Brad Fitzpatrick 这样的80后新生代,还包括 Frances Allen 和 Donald Knuth 这样的计算机科学家。
8. 界面设计
写给大家看的设计书
书如其名, 写给大家看的设计书是一本面向初学者的快速设计入门。
它覆盖了版式,色彩,和字体这三个设计中的关键元素,并创造性的为版式设计总结出CRAP四大原则(Contrast 对比,Repetition 重复,Alignment 对齐,Proximity 亲密)。
认知与设计
写给大家看的设计书强调实践,即如何做出好的设计;认知与设计:理解 UI 设计准则 强调理论,即为什么我们会接受这样的设计而反感那样的设计。
9. 交互设计
通用设计法则
书如其名, 通用设计法则给出了重要的 125 个设计原则,并用简练的语言和范例展示了这些原则的实际应用。每个原则都有对应的参考文献,以便读者进一步学习。
交互设计精髓
交互设计精髓这本书是交互设计领域的圣经级著作。
交互设计专家(以及 VB 之父) Alan Cooper 在这本书中详细介绍了交互设计的原则,流程,以及方法,然后通过各种范例(主要来自桌面系统)展示了如何应用这些原则。
个人成长
1. 职业规划
软件开发者路线图
软件开发者路线图是一本优秀且实用的程序员职业规划手册。这本书由若干个模式组成,每个模式都对应于程序员职业生涯中的特定阶段。
通过这本书,读者可以很方便的找到自己目前所处的模式(阶段),应该做什么,目标是什么,以及下一个模式(阶段)会是什么。
2. 思维方式
程序员的思维修炼
作为程序员,我们需要不断地学习——既要学习新技术,也要学习如何解决各种领域的问题。
为了提升学习效率,我们需要学习如何学习。程序员的思维修炼正是这样一本讲如何学习的书,它集合了认知科学,神经学,以及行为理论的最新研究成果,并系统的介绍了大脑的工作机制。
为什么同样资质的人,大多数人会碌碌无为,而只有极少数能做到登峰造极?如何在领域内做到顶尖?如何克服通往顶尖之路上的重重险阻?
阅读这本书不会让你立刻脱胎换骨,但它会指引你走向正确的道路——通往登峰造极之路。
3. 求职面试
金领简历
知己知彼,百战不殆。
金领简历:敲开苹果微软谷歌的大门是程序员求职的必读书籍,它覆盖了程序员求职的方方面面。
程序员面试金典
同样是来自金领简历作者的作品, 程序员面试金典(第 5 版) 专注于技术面试题,它既包含了 IT 企业(诸如微软,Google,和苹果)的面试流程以及如何准备技术面试,也包含了大量(超过200道)常见技术面试题题目以及解题思路。
4. 英语写作
词汇量决定阅读能力,语法决定写作能力。
计算机专业词汇并不多,但精确性非常重要,因此每个程序员都应具备良好的英语语法,但程序员并不需要过于专业的英语语法——掌握常用语法并把它用对就可以。
既是最畅销的英语写作书籍,也是计算机书籍中引用最多的非计算机书籍。
风格的要素用极其简练的语言讲述了如何进行 严肃,精确,清楚的英语写作。
从这本书中,不仅可以学到英语写作,更可以学到一种严谨至简的处事态度,而这正是专业开发所必需的。
今天的分享就到这里啦,是不是超全!
以上书单覆盖了软件开发各个关键领域的入门书籍和必读书籍,它可以满足绝大多数程序员的需求,无论小伙伴是初学者,还是进阶者,都可以从中获益。
小伙伴都读过哪些呢?
****— 【 THE END 】—