作者丨莫奇

审校丨云昭

一年之计在于春,新年正是读书时!假期的喧嚣过后,大家不妨静下心来开始自己的新年读书计划,多读书,读好书。

为了满足大家对知识的渴望,今天分享一些程序员(媛)们的必读书籍,豆瓣评分都在 8.5 分之上,包括程序设计、软件开发,以及个人成长类的书籍,帮助大家在新的一年获取更大的进步。

一、开发者经典永不过时✦

1、基础理论

《编码》

隐匿在计算机软硬件背后的语言,这本书其实不应该叫编码——它更应该叫“Petzold 教你造计算机”——作者 Charles Petzold。

这本书创造性的以编码为主题,从电报机和手电筒讲到数字电路,然后利用数字电路中的逻辑门构造出加法器和触发器,最后构造出一个完整的存储程序计算机。

如果你是技术初学者,也不用担心看不懂。《编码》使用了大量生动形象的类比,将复杂的概念描述得通俗易懂,深入浅出,随着基础知识的不断增加,有“难度的”知识越来越快地呈现。用电路构造逻辑门,一步一步地构造起一个完整的内存和 ALU、计数器之类的元件的内容,非常有吸引力。

《深入理解计算机系统》

这本书的全名是Computer Systems:A Programmer’s Perspective,所以它又被称为 CSAPP。

这本书也非常值得一看,被称为计算机科学的两本圣经之一。作为一本计算机系统导论型作品,它的把操作系统,计算机组成结构,数字电路,以及编译原理这些计算机基础学科中的核心概念汇集在一起,从而覆盖了指令集体系架构,汇编语言,代码优化,计算机存储体系架构,链接,装载,进程,以及虚拟内存这些程序员所需了解的关键计算机系统知识。

如果想打下扎实的计算机基础,又不想把操作系统、计算机结构、编译原理这些书统统读一遍,阅读这本书是最有效率的方式。不夸张地说,这本书每年读一遍,每遍都会有新的收获。

2、编程语言

编程语言是程序员必不可少的日常工具。正所谓“工欲善其事,必先利其器”。

《C 程序设计语言》

《C 程序设计语言》可以称得上是 C 语言,甚至是计算机科学中最重要的书籍之一。虽然是二十多年前的书籍了,但它运用清晰的语言和简练的代码描述了 C 语言全貌,为之后的编程语言书籍树立了新的标杆。

不过需要做个提醒,读这本书光看不练是不行的,习题必须要做,当被书后的习题折腾得死去活来时,恭喜你,C 语言入门了!

《C++ 程序设计原理与实践》

作为 C++ 的发明者,没有人能比 Bjarne Stroustrup 更理解 C++。

Bjarne 在 Texas A&M 大学任教时使用 C++ 为大学新生讲授编程,从而就有了 《C++ 程序设计原理与实践》这本书。它面向编程初学者,既包含 C++ 教程,也包含大量程序设计原则。入门 + 实战,技巧讲得很多,例子也很实际。

《Effective Java(第 2 版)》

《Effective Java》一书中列出了关于 Java 编程实践的大量优秀内容,并针对泛型和并发这两个充满陷阱的 Java 特性给出了充满洞察力的建议。学 Java 必看,对 Java 进阶提升很有帮助。

Java 之父 James Gosling 也为这本书作序:“我很希望 10 年前就拥有这本书。可能有人认为我不需要任何 Java 方面的书籍,但是我需要这本书。”有读者反馈,虽然这本书的中文翻译略显不足,但还是很适合有一定经验基础的人看,是 Java 的“最佳实践”。

《C# 图解教程(第 4 版)》

《C# 图解教程》运用了一种全新的可视化叙述方式,用图形并茂的形式,朴实简洁的文字,并辅以大量表格和代码示例,全面阐述了 C# 语言的各种特性。读者能够快速、深入理解 C#,为自己的编程生涯打下良好的基础。入门一定要看这本,这本讲解了基础语法,对于理解类型和引用类型有很大的帮助。有读者认为,看完书再配合网上视频看一遍,效果更好。

3、编程语言理论

《编程语言实现模式》

大多数程序员不需要从头编写一个编译器或解释器,因此编译原理就显得尤其重要;然而多数程序员还是需要解析文本,处理配置文件,或者写一个小语言,《编程语言实现模式》很好的满足了这个需求。

它把常用的文本解析 / 代码生成方法组织成一个个模式,并为每个模式给出了实例和应用场景。这本书不仅能够加深你对编程语言的理解,还能提高你的动手能力。可以说是一本给初学者打开眼界和获取灵感的好书。

4、程序设计

《程序设计方法》

现代编程语言的语法多数都比较繁杂,这会导致初学者花大量的时间在编程语言语法(诸如指针,引用和类型定义)上,而不是在程序设计方法(诸如数据抽象和过程抽象)之上。

《程序设计方法》解决了这个问题——它更专注于程序设计方法,使读者不用花费大量时间在编程语言上。这本书是程序设计入门书,关键是思想的建立。

5、算法与数据结构

《编程珠玑(第 2 版)》

编程珠玑(第 2 版)是一本少见的实践型算法书籍,它并不是逐一介绍数据结构 / 算法的教材,而是实践性极强的算法应用手册。内容有深度,值得反复看。

作者 Jon Bentley 从他多年的实践经验中精选出一些有趣而又实用的问题,然后展示了他解决这些问题的过程(分析问题,选择合适的算法,解决问题,以及验证答案)。任何程序员都可以从中获益。

二、优雅,是一门学问✦

1、编程实践

《程序设计实践》

Brian Kernighan 是这个星球上最好的计算机书籍作者。《程序设计实践》虽然只有短短 200 多页,但它使用精炼的代码和简要的原则,覆盖了程序设计的所有关键概念(包括编程风格、算法与数据结构、API 设计、调试、测试、优化、移植,以及领域特定语言等概念)。

这本书是程序员正在研修路上必读的书籍之一,可以帮助形成一些正确的观念和态度。

2、重构

《重构》

任何产品代码都不是一蹴而就,而是在反复不断的修改中进化而来。《重构》这本书详尽地介绍了改进代码的方法,并论述了如何在保持代码行为的基础上,提升代码的质量。

很多重构的方法是简单的,但之前没有人整理出方法论。这本书总结得很好,内容组织得完备妥当,写得比较中肯,每种重构的步骤都很有用。

3、专业开发

《程序员修炼之道》

这本书提出了一套切实可行的实效开发哲学,并且不局限于特定的编程语言或框架。通过程序设计,测试,编程工具,以及项目管理等方面的实例展示了如何应用这套开发哲学,从而使得程序员更加高效专业。有读者反馈称,读起来津津有味,这本书告诉程序员怎么用正确的方法做正确的事,每个程序员都应该用它每日三省。

三、开发者登峰必读✦

1、职业规划

《软件开发者路线图》

《软件开发者路线图》是一本优秀且实用的程序员职业规划手册。这本书由若干个模块组成,每个模块都对应于程序员职业生涯中的特定阶段。这本书更适合浏览一遍之后,在遇到职业瓶颈的时候再来翻阅,前提是你能及时评估自己并获取反馈加以改进。

2、思维方式

《如何把事情做到最好》

为什么同样资质的人,大多数人会碌碌无为,而只有极少数能做到登峰造极?如何在领域内做到顶尖?如何克服通往顶尖之路上的重重险阻?

刻意练习,这是通向成功的唯一道路。书中用了大量的例子,围绕这个主题进行讲解。阅读这本书不会让你立刻脱胎换骨,但它会指引你走向正确的道路——通往登峰造极之路。

写在最后✦

最后真心想说一句:千淘万漉虽辛苦,吹尽狂沙始到金。

程序员这个行业不轻松,甚至可以说是很艰难。在忙碌的工作之余,不妨抽空翻阅几本计算机经典之作、欣赏研究一段源码,相信会有意想不到的收获!

新年伊始,有没有给自己制定充电计划呢?大家又有哪些好书推荐,欢迎下方留言。你也可以扫描下方二维码添加我们小助手微信,加入 51CTO 专属读者群沟通交流,可以添加小助手微信领取 2022 年程序员技术图谱哦~