那些影响了几代程序员的编程书籍
想要成为一名更加优秀的程序员,我需要读书么?需要读什么书?
其实,在我成为软件工程师之前,我也问了许多导师这个问题,也收到了很多建议,我也从这些建议当中学习到很多东西,渐渐地,我也总结出来想要成为一名顶级开发人员,哪些书籍是必读的。
这些书并不会立马使你成为一名出色的程序员,但它们确实是影响了无数程序员的书籍,阅读这些书籍可以帮助开发人员避免在职业生涯早期中犯下一些重大错误。以下就是书单详情:
1. 《修改代码的艺术》
我非常喜欢这本书,因为每个软件开发人员,在他们职业生涯的某个阶段都需要面对遗留代码,Michael Feathers提供了详细的策略,可以更加有效地处理大量未经测试的遗留代码库,本书借鉴了Michael为其著名的Object Mentor专题研讨会创作的材料,深入剖析修改遗留代码的各种方法和策略,从理解遗留代码、为其编码测试、重构及增加特性等方面给出大量实用建议,是所有程序开发人员必读之作。
2. 《人月神话》
这本书很经典,即便出版这么久仍然与软件产品开发相关,如果你从事软件开发工作,这本书是必读之书,书中最有价值的部分,我觉得是【未雨绸缪】,虽然目标都是为了创建一个更好、更大、更强的软件,但是不得不承认,许多构建的部分必须被丢弃重新构建,而且这是很常见的,因此为变更计划组织架构是非常常见的事。
本书内容来自Brooks博士在IBM公司SYSTEM/360家族和OS/360中的项目管理经验,该项目堪称软件开发项目管理的典范。
3. 《设计模式》
如果你打算成为一个系统的架构师,那这本书你可能需要仔细阅读一下,这本书被誉为最伟大的软件开发书籍之一,书中介绍了多年来开发中许多不同的设计模式,以此帮助软件工程师避免和处理一些常见问题,遵循本书的原则,可以帮助你创建更高质量、更灵活、更可维护的软件。
4. 《编程珠玑》
这本书与名单上的其他书稍有不同。可以说这本书帮助一个人“像程序员一样思考”。《编程珠玑》是15个栏目的概要,以前发表在世界计算机界名刊《ACM通讯》,这些专栏涵盖了与编程相关的广泛主题:从需求收集到性能调优。重点主要放在编码技术和算法上。
每一栏都被重新组织成一章。章节通常以提出一个实际问题开始。然后提出各种不同的解决方案,写作风格清晰有趣。
《编程珠玑》并不是一本教授新编程概念的普通书籍。虽然它包含了一些很好的,有时甚至是很新颖的想法,但这本书的目的不是教一些新的东西,而是帮助你成为一个更好的问题解决者。
5. 《编码》
这本书清理了创建和开发复杂系统的大量障碍。现在有太多的抽象,以至于开发人员有时不知道底层的细节。你一定意识不到,其实你的工作中无时不刻都在运用本书的内容,不过我觉得能够理解自己是在什么基础上构建整个项目是很有必要的,当你想要了解这些知识并深入研究软件或硬件来修复Bug的时候,这本书可能派的上用场,Charles Petzold的这本书介绍了计算机工作原理的方方面面,从从十进制、八进制、二进制到高级语言,解释了基于包的通信协议和TCP,许多章节都和硬件有关。
6. 《计算机程序设计艺术》
这是另一个经典。这是由著名的计算机科学家Donald Knuth教授编写的,并得到了业界许多顶级程序员的高度赞扬。甚至比尔·盖茨也说:
如果你认为自己真的是一个很好的程序员……读读[Knuth的]《计算机编程的艺术》……如果你能读完全部内容,你绝对要给我发一份简历。
这本书从基本的编程概念和技术开始,然后更侧重于信息结构——计算机内部信息的表示、数据元素之间的结构关系以及如何有效地处理它们。基本应用于模拟,数值方法,符号计算,软件和系统设计。
7. 《重构》
Martin Fowler的《重构》是关于改进现有代码的设计。它是这样一种改变软件系统的过程:它不改变代码的外部行为,但改进其内部结构。有了重构,你甚至可以把一个糟糕的设计改造成一个良好的设计。本书对重构的原则进行了全面的讨论,包括在哪里发现重构的机会,以及如何设置所需的测试。还有一个包含40多种已被证实的重构的目录,其中详细说明了何时以及为什么要使用这种重构,如何一步步地实现它,并举例说明了它是如何工作的。这本书是用Java作为其主要语言编写的,但其思想适用于任何OO语言。
8. 《代码整洁之道》
Bob叔叔撰写的《代码整洁之道》共分为三个部分。第一部分描述了编写干净代码的原则、模式和实践。第二部分包括几个越来越复杂的案例研究。每个案例研究都是一个清理代码的练习——将有一些问题的代码库转换为可靠且有效的代码库。第三个部分是味道与启发,这是一个单一的章节,包含一系列启发和案例研究,最后是一个知识库,它描述了我们在编写、读取和清理代码时的思维方式。
9. 《算法导论》
这必须是理解和使用算法的最好的一本书。有些关于算法的书虽然严谨但不完整,还有一些虽然涉及面广,但却不够严谨。《算法导论》兼具了严谨性和全面性。这本书涵盖了广泛又深入的算法,使得书中的设计和分析适合所有层次的读者。每个章节都相对独立,都可以作为一个学习单元。算法用英语和伪代码描述。讲解的方式简单基础,但有不失内容的深度和材料的严谨性。第一版不仅广泛成为了世界各地高校的教材,还成为了专业人士的标准参考书。第二版新增了算法,概率分析,随机算法,线性规划的章节。
10. 《计算机程序的构造和解释》
本书以工程学为导向,通过分析严谨的方法来解决问题和编程技术,强调通过不同方式来发挥核心作用,以处理计算模型中的时间。它独特的方法使它适合介绍计算机科学课程,以及编程语言和程序设计。这本书进一步解释了四种最著名的编程语言范例——命令式、面向对象、基于逻辑和应用程序编程。
11. 《程序员修炼之道》
这是我读的最早的编程书籍之一。虽然这本书是在1999年写的,但到如今已然有用,程序员是训练有素的工匠,他们使用一组工具(编辑器、对象管理器、版本跟踪器)来创建某种产品(程序),这些产品(程序)将在某些环境中运行(硬件程序集上的操作系统),与其他任何一门手艺一样,计算机编程产生了大量的智慧,而这些智慧大多不是在大学或认证课程中教授的。在《程序员修炼之道》中
12. 《代码大全》
如果你想成为一名伟大的软件工程师,那么这本书是值得一读的,这本书被广泛认为是编程的最佳实践指南之一,Steve McConnell的《代码大全》帮助开发人员编写更好的软件已经超过十年了。现在这本经典的书已经完全更新和修订了,并加入了最前沿的实践——以及数百个新的代码样本——来说明软件构建的艺术和科学。
McConnell将最有效的技术和必须知道的原则整理成清晰、实用的指导。无论你的经验水平、开发环境或项目大小如何,本书都将为你提供有用的信息并激发你的思考——并帮助你构建最高质量的代码。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
个人金融信息漫游指南:《个人金融信息保护技术规范》解读
虽然个人信息在我国《民法典(草案)》中被放置于“人格权编”部分,通常会认为个人信息是一类具有财产属性的人格权,会体现一定的经济利益。而在各类个人信息中,个人金融信息无疑是最具财产属性的个人信息之一。通常个人信息泄露,不一定能直接造成经济损失,但个人金融信息一旦泄露会直接给个人信息主体带来巨大的经济伤害,具有更高的敏感性。 2020年2月13日,中国人民银行发布《个人金融信息保护技术规范》(JR/T 0171-2020),为个人金融信息保护打上补丁。虽然《个人金融信息保护技术规范》只是行业推荐性标准,但预期仍会在金融执法、合规过程中起到关键作用。所有提供金融产品与金融服务的机构,在“接触”个人信息时,都需要以《个人金融信息保护技术规范》为“漫游指南”。 一、概念们 二、体系 仔细研读《个人金融信息保护技术规范》的体例,可以归纳出个人金融信息合规的基本框架: 金融机构开展个人信息保护,是一个体系,不止局限于《个人金融信息保护技术规范》。比如《网络安全法》中的等级保护制度,就是金融机构收集、处理个人信息网络的基本要件。《中国人民银行金融消费者权益保护实施办法》也仍然有效,而且是部门规章,具备...
- 下一篇
云数据库(RDS)- 自建MySQL和阿里云RDS的区别,有必要使用云数据库吗?
很多阿里云ECS用户都会考虑是使用ECS自建数据库还是使用阿里云的RDS云数据库,如何选择?有必要使用云数据库吗?阿里云网告诉你使用阿里云RDS云数据库的理由。 RDS的高可用性RDS提供了主备双节点的实例,双节点可以在同一地域的不同可用区,MySQL实例的双节点还可以在不同地域,当主实例出现故障时可快速切换到备实例,保障了RDS的稳定性。 RDS的高安全性RDS在数据的存取上加入了中间层,所有请求都会经过中间层,而且有SQL注入的请求都会被中间层拦截掉。在底层数据写入上,RDS采用了最高安全级别的写入,保证在主机异常掉电的情况下数据不会出现丢失。以此来保障数据库的高安全性。 RDS运维优化用户无需考虑数据库运维成本,企业无需配备专业的DBA数据库运维,阿里云提供监控、告警、备份、恢复、调优手段,RDS源码团队持续对MySQL进行源码优化,在标准的基准测试中性能和稳定性上都是高于社区版本的。 MySQL读写分离读写分离适用于对数据库有少量写请求,但有大量读请求的应用场景下,阿里云MySQL 5.6高可用版或金融版可以开通读写分离功能,RDS用户无需为读写分离技术买单。 总结综上,阿里云...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Hadoop3单机部署,实现最简伪集群
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16