点击蓝色“程序员书单”关注我哟

加个“星标”,每天带你看好文,读好书!

来自:网络

今天大雄给大家分享的是一些,程序员在掌握每个关键概念所需的入门书籍和必读书籍。

其实,最近这段时间,真的很适合阅读,相信很多小伙伴在之前的阅读都是碎片式的,所以这段待在家的时间,真的建议小伙伴们可以好好读一本书,或者认真地钻研一件事。

今天的分享主要分为程序设计、软件开发、以及个人成长三大类。

程序设计

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 】—

本公众号全部博文已整理成一个目录,请在公众号里回复「m」获取!

3T技术资源大放送!包括但不限于:Java、C/C++,Linux,Python,大数据,人工智能等等。在公众号内回复「1024」,即可免费获取!!

程序员学习必备书单汇总,超全!相关推荐

  1. 2020年程序员面试必备书单,这一篇整理齐了

    又到了找工作的季节,大多数程序员却无比纠结,想跳槽却不想面试.毕竟拼实力没啥可怕,怕的是明明有实力,面试时却有口难言. 不少小伙伴在后台询问程序员找工作或者跳槽要做什么准备? 面试就像作战,只要做好充 ...

  2. 一款自带工作流引擎的Node.js全栈框架,程序员的接单神器

      大家好,我是小编南风吹,每天推荐一个小工具/源码,装满你的收藏夹,让你轻松节省开发效率,实现不加班不熬夜不掉头发!   今天小编推荐一款自带工作流引擎的Node.js全栈框架, 是程序员的接单快手 ...

  3. 用c语言写出一个榜单程序,C语言依然位居榜单前列,依然值得程序员学习

    原标题:C语言依然位居榜单前列,依然值得程序员学习 关注.星标公众号,不错过精彩内容 如今,市面上编程语言几百种,很多人觉得Python. JAVA这种语言比较火,是不是C语言就不行了呢? 殊不知,C ...

  4. java前沿技术_互联网百强企业架构师告诉你,Java应该这么学!云和数据超全面Java中级程序员学习路线图重磅发布!...

    作为常居编程语言排行榜第一名的编程语言,Java语言以其稳定性.健壮性著称,是一门非常成熟的编程语言,多年来一直是国际上众多企业的首选编程语言. Java语言不仅吸收了C++语言的各种优点,还摒弃了C ...

  5. C语言依然位居榜单前列,依然值得程序员学习

    关注.星标公众号,不错过精彩内容 如今,市面上编程语言几百种,很多人觉得Python. JAVA这种语言比较火,是不是C语言就不行了呢? 殊不知,C语言依然是现在的主力军. 一.编程语言排行榜 给大家 ...

  6. 程序员兼职接单的平台列表推荐,强推!!

    最近有很多程序员朋友说想要找一份合适的兼职工作,却苦于找不到一个正规靠谱的平台.今天我特意整理了一份超详尽的程序员兼职接单平台list,各位可以按需选择,也希望大家都能找到心仪的工作~ 中高端开发者必 ...

  7. 整理 | 程序员必读书单1.0

    编程语言 C和C++开发 Java 开发 <Java核心技术> <Java编程思想> <深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)> 周志明 著 A ...

  8. 转载一篇不错的文章:谈谈“野生”Java程序员学习的道路

    逛论坛看到的一篇不错的文章,特此转载:本文转载自:左潇龙  原文链接:点击打开链接 引言 很尴尬的是,这个类型的文章其实之前笔者就写过,原文章里,笔者自称LZ(也就是楼主,有人说是老子的简写,笔者只想 ...

  9. 完全拷贝的一份,程序员阅读书单

    Apocalypsa Rumination Introspection 博客园 首页 新随笔 联系 订阅 管理 随笔 - 28  文章 - 1  评论 - 1046 程序员必读书单 作者:Lucida ...

  10. 程序员编程书籍-列表汇总(附下载链接)

    程序员编程书籍-列表汇总(附下载链接) 编程书籍索引,附在线链接. 国外程序员在 stackoverflow 推荐的程序员必读书籍,中文版. stackoverflow 上的程序员应该阅读的非编程类书 ...

最新文章

  1. django-celery中配置celery中的日志
  2. 独家 | 如何跳出编程这个坑
  3. string学习笔记1
  4. mongodb php 扩展 linux,CentOS Linux 安装PHP的MongoDB扩展
  5. 命令行下Apache日志统计举例
  6. 最短路 dijkstra模板
  7. delve应该安装到哪_消防水炮安装高度为多少米标准
  8. 魅族MX4关闭系统升级Flyme6提示
  9. OpenCV-图像阴影调整
  10. 新CEO能使诺基亚起死回生吗?
  11. 宏杉科技助力西安交大二附院:突破存储旧瓶颈、实现业务新成长
  12. c语言图形时钟编程,c语言程序+图形编程——打造简易的时钟
  13. 【历史上的今天】12 月 21 日:Ruby 语言问世;玛雅预言世界末日;计算机先驱诞生日
  14. 1-十四烷基-3-甲基咪唑六氟磷酸盐([C14MIm][PF6])修饰纳米SiO2二氧化硅(mg级瓶装)
  15. mysql未开启binlog如何恢复数据_MySQL5.7开启binlog日志,及数据恢复简单示例
  16. 字节、字、字长之间的关系
  17. 浅谈SAP FICO—总账科目
  18. 百度IFE前端学院-DAY1-Web开发概览
  19. Linux环境下部署redis教程详解
  20. python随机出现外星人飞船_《外星人入侵》项目飞船和外星人相撞后飞船不返回屏幕底部,依然在外星人中间的问题解决方法...

热门文章

  1. smartsvn 忽略文件夹_设置SVN忽略文件和目录(文件夹)
  2. 中国34个省市用字体logo 石昌鸿 字体设计-借用手法
  3. 纪录黑马程序员的真实生活
  4. 这款优秀的检验工具SolidWorks Inspection你用过吗?
  5. termux使用教程python-Termux 入门教程:架设手机 Server 下载文件
  6. WebLogic安装说明
  7. Understand(代码分析工具)的安装与使用教程
  8. 简体中文原型设计工具对比
  9. 微信小程序图片上传组件
  10. android 微信朋友圈动画,使用Android 模仿微信朋友圈图片拖拽返回