2020年加大搬砖的力度,还是一名程序员,继续成长与进步。

优秀程序员应该具备以下三方面能力:

  1. 扎实的计算机基础知识(计算机结构,操作系统,数据结构与算法 )

  2. 良好的软件工程素质

  3. 一定的系统设计与架构能力

多年的程序员经历与读书经历告诉我:

  1. 读书不在多,贵在精。

  2. 精典书籍需要多读几遍,常读常新,每一次重读都会有新的收获

下面推荐软件工程师应该精读的十本书。

1 编码:隐匿在计算机软硬件背后的语言

本书作者Charles Petzold创造性地以编码为主题,从电报机和手电筒讲到数字电路,然后利用数字电路中的逻辑门构造出加法器和触发器,最后构造出一个完整的存储程序计算机 。作者在书中使用大量形象贴切的类比简化了这些概念,使其成为通俗易懂的计算机入门读物。

2 深入理解计算机系统

作为一名非科班出身的程序员,深入理解计算机系统是对我帮助最大。这本书里面将操作系统,计算机硬件与结构,编译原理这些计算机学科的基础内容结合在一起。具体内容涵盖:指令集体系架构,汇编语言,代码优化,计算机存储体系架构,链接,装载,进程,系统调用,虚拟内存,网络编程,并发编程等程序员在日常工作中所需要的必备知识。

如果想打下扎实的计算机基础又不想把操作系统计算机结构编译原理这些书统统读一遍,阅读深入理解计算机系统是最有效率的方式。

3 计算机编程艺术

本书的作者高德纳是算法和程序设计技术的先驱者,同时也是计算机排版系统TEX和METAFONT的发明者,除此之外还是1971年图灵奖获得者。这个系列图收可以说是包含一切基础算法的宝典。比尔·盖茨曾表示:如果你自以为是一个很好的程序员,请去读读高德纳的《计算机程序设计艺术》吧…要是你真把它读下来了,就毫无疑问可以给我递简历了。精读这个系列的图书毫无疑问是真正地站在巨人的肩膀上。

4 算法导论

AI时代,也就是算法时代。可以说算法水平决定一个程序员技术的上限。学习基础算法与应用算法解决具体的工作问题,本书不容错过。

5 程序员面试金典

面试驱动学习。

《程序员面试金典》是程序员面试跳槽找工作必备书。

6 程序员修炼之道:从小工到专家

对于软件工程来说算法,数据结构,编程语言只是软件工程的工具与思想,在具体软件工程中每一个软件工程师都要考虑如何提高工作的产出。这本《程序员修炼之道:从小工到专家》通过具体有效的经验与技巧让你成长为一名高效的程序员。书中内容涉及如何避免代码腐烂,如何编写灵活、高可用的正确代码,如何真正的理解需求等一系列具体问题。

7 人月神话

软件的开发与维护离不开软件工程。《人月神话》是软件工程领域集大成者。《人月神话》的作者Fred Brooks领导并完成 System/360 和 OS/360 这两个即是放到现在也是巨型软件项目的里程碑项目的经验总结。这本书覆盖了软件项目各个方面的关键概念:从工期管理到团队建设,从程序设计到架构设计,从原型设计到团队交流。

8 算法之美

《算法之美》这本书扩展算法的应用范围,将算法应用到具体生活当中。本书通过讨论人类事务算法设计的概念,以帮助人们更好地处理日常生活中遇到的难题。内容涉及贝叶斯法则、最优停止理论、时间调度理论、博弈论等。

9 设计数据密集型应用

从IT时代进入DT时代,数据成为重要的生产要素。《设计数据密集型应用》以数据为核心,描述大规模分布式数据系统的理论与实践。

10 计算机程序的构造和解释

在《计算机程序的构造与解释》书中深入探讨了程序设计的本质(过程抽象、数据抽象、元语言抽象)。这些本质思想在未来量子计算机时代仍然不会过时。书中构建了很多小系统。比如第一章的计算素数、最大公因数、平方根、积分、黄金比例等,讨论了递归、迭代过程;第二章的图形语言、赫夫曼编码解码、泛型运算、多项式计算等,讨论了数据结构和数据类型系统;第三章实现了一个面向对象系统等;第四章实现Scheme的解释器;第五章通过设计机制和语言实现寄存器机器的各种计算。

结语

再说一遍:读书在精,不在多。上面推荐的这些书,你可能多多少少见过,但是能静下心来读完一本的人可能寥寥无几。本人静下心来读也只有两本书《深入理解计算机系统》与《设计数据密集型应用》,但是《深入理解计算机系统》这本偏硬件那几章几乎没有读。当然上面大部分书都有通读。

一年精读一本,保证吸收与转化,每年都是一个台阶的大进步。只可惜自己当年没有做到,也没有这种强烈的意愿。