有史以来最受推荐的 25 本编程书籍。
这篇文章是我所写的关于有史以来最受推荐的创业书籍的文章的后续。
如果你最近读过这篇文章,我想你可以直接跳到结果。
互联网上有无数的清单声称是必读的编程书籍清单,而且似乎所有这些清单总是推荐相同的书籍,除了两三个奇怪的选择。
寻找好的编程学习资源总是件棘手的事。每个人对于哪本书最适合学习都有自己的看法,正如法语里说的,“肤色和品味不应该被争论”。
然而,我认为相信王室的智慧并找到在“最佳编程书籍”列表中出现次数最多的书籍会很有趣。
如果您想直接了解结果,请查看下面的完整结果。如果您想了解方法论,请耐心阅读。
免责声明:我花了无数个小时写这篇文章,所以我决定放上亚马逊的附属链接,看看这些详细的文章是否可以成为可行的收入来源,......或者不是🤷♂️。
方法论:
我只是在谷歌上搜索了几个关键词,比如“最佳编程书籍”及其变体。然后我就把这些页面都抓取下来了(用的是我正在开发的网页抓取 API ScrapingBee)。
我删除了重复链接,最终剩下近150个链接。通过页面标题,我还能快速舍弃一些链接:
- 专注于某一特定技术或平台的列表
- 专注于某一特定年份的列表
- 专注于免费书籍的列表
- Quora 和 Reddit 主题
我最终得到了近200个HTML文件。我继续在浏览器中打开所有文件,打开Chrome浏览器的检查器,找到并编写了与文章中书名匹配的CSS选择器。这花了我大约1个小时,每页差不多30秒。
这也让我能够丢弃更多不相关的页面,结果我丢弃了很多。最终,我整理出了大约 70 个列表。
此时,我有这个引用之前废弃的 HTML 页面的大 JSON 文件和一个 CSS 选择器。
我使用 Python 和 Beautiful Soup 提取了 DOM 元素中所有与 CSS 选择器匹配的文本。最终我得到了一个庞大的图书列表,如果不进行后期处理的话根本无法使用。
为了找到引用最多的创业书籍,我需要对我的结果进行规范化。
我必须尝试所有不同的变体,例如“{title} by {author}”或“{title} - {author}”。
或者“{title}:{subtitle}”和“{title}”,甚至所有包含版本号的。
我最终使用这个简单的自定义 Python 函数完成了它:
def clean_link(link):
link = link.encode().decode('ascii', errors='ignore')
link = link.replace("'", '')
link = link.lower()
link = ' '.join([w for w in link.split(' ') if w not in ['the', 'a']])
link = link.split('by')[0]
link = link.split(':')[0]
link = link.split('(')[0]
link = ' '.join(link.split())
link = link.replace('-', '_')
link = ''.join([c for c in link if c.isalpha() or c == '_' or c == ' '])
link = link.strip()
link = link.replace(' ', '_')
link = ''.join([c for c in link if c.isalpha() or c == '_'])
return link
并且需要相当多的手动清洁。
我的列表现在如下所示:
从这里我们很容易就能计算出最受推荐的书籍。你可以在这个仓库中找到用于整理这份榜单的所有数据。现在我们来看看这份榜单:
史上最受推荐的 25 本编程书籍
25. Jez Humble 和 David Farley 著《持续交付》 (推荐率 8.8%)
将软件发布给用户通常是一个痛苦、危险且耗时的过程。这本开创性的新书阐述了能够快速、增量地向用户交付高质量、高价值新功能的原则和技术实践。通过构建、部署和测试流程的自动化,以及开发人员、测试人员和运维人员之间协作的改进,交付团队可以在几小时甚至几分钟内发布变更——无论项目规模或代码库复杂程度如何。
Jez Humble 和 David Farley 首先介绍了快速、可靠、低风险交付流程的基础。接下来,他们介绍了“部署流水线”,这是一个自动化的流程,用于管理从签入到发布的所有变更。最后,他们讨论了
支持持续交付所需的“生态系统”,涵盖了从基础设施、数据和配置管理到治理的各个方面。(Amazon.com)
24. Robert Sedgewick 和 Kevin Wayne 著《算法》 (推荐率 8.8%)
“本书中的算法代表了过去 50 年来发展起来的知识体系,这些知识体系已成为不可或缺的,不仅对于专业程序员和计算机科学专业的学生,而且对于任何对科学、数学和工程感兴趣的学生,更不用说在文科中使用计算的学生了。” Amazon.com
23. Cory Althoff 著《自学成才的程序员》 (推荐率为 8.8%)
我是一名自学成才的程序员。经过一年的自学,我的编程水平已经足够高,可以在 eBay 找到一份软件工程师 II 的工作。
到了那里,我才意识到自己准备得严重不足。我被一大堆需要了解却还没学会的东西压得喘不过气来。我的编程学习历程,以及我作为软件工程师的第一份工作经历,都启发了我写这本书。
这本书不仅仅是关于学习编程;尽管你会学习编写代码。如果你想成为一名专业的程序员,仅仅学习代码是不够的;因此,除了帮助你学习编程之外,我还涵盖了你在专业编程中需要了解的其他知识,而这些知识是课堂和书籍所没有教的。
《自学成才的程序员》是一本路线图,一本指南,带你从编写第一个 Python 程序到通过第一次技术面试。路就在那里。你会走吗?(Amazon.com)
22. Steve McConnell 的《快速发展》 (推荐率 8.8%)
企业和商业软件开发团队都希望找到一个重要问题的答案——如何掌控高压的开发进度。在《快速开发》一书中,作者史蒂夫·麦康奈尔直面这个问题,提出了整体策略、具体的最佳实践以及一些宝贵的建议,帮助缩短和控制开发进度,确保项目顺利推进。本书包含以下内容:
- 可应用于任何项目的快速开发策略以及使该策略发挥作用的最佳实践
- 坦诚讨论优秀和不太优秀的快速开发实践——估算、原型设计、强制加班、激励、团队合作、快速开发语言、风险管理等等
- 快速开发项目应避免的典型错误列表,包括需求蔓延、质量不足和银弹综合症
- 案例研究生动地说明了哪些地方可能出错,哪些地方可能正确,以及如何判断项目的发展方向
- 《快速开发》是一本实用的指南,可帮助您更高效地开发应用程序。” Amazon.com
21. Peter Seibel 著《Coders at Work》 (推荐率 10.2%)
这是一本程序员界的名人录——以引人入胜的方式展现了一些世界顶尖程序员的工作方式。本书以畅销书《创始人工作》为蓝本,汇集了我们这个时代一些顶尖程序员两年来的访谈。亚马逊网站
20. Eric Evans 的《领域驱动设计》 (推荐率 10.2%)
至少二十年来,领先的软件设计师们已经将领域建模和设计视为关键课题,然而令人惊讶的是,关于需要做什么或如何做的文章却少之又少。虽然从未明确表述过,但对象社区中已经形成了一种暗流涌动的哲学,我称之为“领域驱动设计”。
过去十年,我一直专注于开发多个业务和技术领域的复杂系统。我尝试了面向对象开发社区领导者提出的设计和开发流程最佳实践。我的一些项目非常成功,但也有一些失败。这些成功项目的共同点在于,它拥有一个丰富的领域模型,它通过设计迭代不断演进,并成为项目结构的一部分。
本书提供了一个设计决策框架,以及讨论领域设计所需的技术词汇。它融合了广为接受的最佳实践以及我个人的见解和经验。面向复杂领域的项目可以使用此框架系统地进行领域驱动设计。(Amazon.com)
19. 《计算机编程艺术》,作者:Donald E. Knuth(推荐率:10.2%)
无数读者都谈到了 Knuth 著作对个人的深远影响。科学家们惊叹于他分析的优美和优雅,而普通程序员则成功地将他“菜谱式”的解决方案应用于日常问题。所有人都钦佩 Knuth 著作的广度、清晰度、准确性和幽默感。亚马逊网站
18. Harold Abelson / Gerald Jay Sussman / Julie Sussman 著《计算机程序的结构和解释》 (推荐比例 13.2%)
过去十年来,《计算机程序的结构与解释》对计算机科学课程产生了巨大的影响。此次期待已久的修订版对全书进行了全面修订。书中涵盖了大多数主流编程系统的新实现,包括解释器和编译器。作者还进行了许多细微的修改,这些修改反映了他们自第一版出版以来在麻省理工学院教授这门课程的经验。书中引入了一个新主题,强调了不同方法在计算模型中处理时间的核心作用:具有状态的对象、并发编程、函数式编程和惰性求值以及非确定性编程。本书新增了图形学中高阶过程的示例章节以及流处理在数值编程中的应用,并包含许多新的练习。此外,所有程序都经过重新编写,可以在任何符合 IEEE 标准的 Scheme 实现中运行。(Amazon.com)
17. Martin Fowler 著《企业应用架构模式》 (推荐率 14.7%)
企业应用程序开发实践受益于众多新兴技术的出现。诸如 Java 和 .NET 等多层面向对象平台已变得司空见惯。这些新工具和技术能够构建强大的应用程序,但实施起来却并不容易。企业应用程序中常见的故障往往源于开发人员不理解经验丰富的对象开发人员所汲取的架构经验。—— Amazon.com
16. Jon Bentley 的《编程珠玑》 (推荐率为 16.1%)
计算机编程有很多面。弗雷德·布鲁克斯在《人月神话》中描绘了一幅宏大的图景;他的论文强调了管理在大型软件项目中的关键作用。史蒂夫·麦康奈尔在《代码大全》中更详细地讲解了良好的编程风格。这些书中的主题是优秀软件的关键,也是专业程序员的标志。然而,不幸的是,这些合理工程原理的熟练应用并不总是令人兴奋——除非软件能够按时完成并且运行正常。
本书的专栏探讨了编程这个职业更光鲜亮丽的一面:那些源于扎实工程学的编程珍珠,源于洞察力和创造力的境界。正如天然珍珠源于惹恼牡蛎的沙粒,这些编程珍珠也源于惹恼真正程序员的实际问题。这些程序充满乐趣,并且教授重要的编程技巧和基本设计原则。“ Amazon.com ”
15. Tom DeMarco 和 Tim Lister 著《Peopleware》 (推荐率 17.6%)
这本长期畅销书的独特见解在于,软件开发的主要问题在于人,而非技术。这些问题并非易事;但只要解决它们,你就能最大限度地提高成功的机会。——亚马逊网站
14. Thomas H. Cormen / Charles E. Leiserson / Ronald L. Rivest / Clifford Stein 著《算法导论》 (推荐率 17.6%)
有些算法书籍严谨但不完整;有些涵盖大量内容,但缺乏严谨性。《算法导论》独特地将严谨性和全面性完美结合。本书深入探讨了各种算法,同时又使各个层次的读者都能理解它们的设计和分析。每章都相对独立,可以作为一个学习单元。算法描述采用英文和伪代码,旨在让任何编程经验略知一二的人都能轻松理解。解释力求通俗易懂,但又不牺牲内容的深度和数学严谨性。
第一版不仅成为世界各地大学广泛使用的教材,也成为专业人士的标准参考书。第二版新增了关于算法作用、概率分析和随机算法以及线性规划的章节。第三版经过全面修订和更新。它包含两个全新的章节:关于范埃姆德-博阿斯树和多线程算法;对关于递归(现称为“分而治之”)的章节进行了实质性的补充;以及一个关于矩阵的附录。它改进了对动态规划和贪婪算法的处理,并在流网络部分引入了基于边的流的新概念。本版新增了许多练习和问题。国际平装版已售罄;精装版在全球范围内均有销售。(Amazon.com)
13.Charles Petzold 的《Code》 (推荐率 19.1%)
手电筒、英国入侵、黑猫和跷跷板与计算机有什么关系?在《CODE》中,它们向我们展示了人类操纵语言和发明全新交流方式的巧妙方法。通过《CODE》,我们看到了这种独创性以及人类对交流的强烈渴望如何推动了过去两个世纪的技术创新。
作者查尔斯·佩佐尔德利用日常物品和熟悉的语言系统(如盲文和摩尔斯电码),为所有对计算机和其他智能机器的秘密内部生活感到好奇的人们编织了一个富有启发性的故事。
这是一个插图精美、通俗易懂的故事——随着阅读的深入,你会发现自己已经获得了理解当今个人电脑、数字媒体和互联网世界的真实背景。无论你的技术水平如何,《CODE》都会让你着迷,甚至可能唤醒你内心的技术爱好者。亚马逊网站
12.史蒂夫·克鲁格的《别让我思考》 (推荐率19.1%)
自2000年《别让我思考》首次出版以来,成千上万的网页设计师和开发者都依赖可用性大师史蒂夫·克鲁格的这本指南来理解直观导航和信息设计的原则。这本书风趣幽默、通俗易懂、实用性极强,是该领域最受欢迎和推荐的书籍之一。
如今,史蒂夫带着全新的视角回归,重新审视《别让我思考》成为经典的原则——更新了示例,并新增了关于移动可用性的章节。本书依然篇幅短小,图文并茂……最重要的是——读起来充满乐趣。
如果你之前读过,你会重新发现《别让我思考》对全球网页设计师和开发者如此重要的原因。如果你从未读过,你就会明白为什么这么多人认为它应该成为所有网站从业人员的必读书籍。亚马逊网站
11. John Sonmez 著《软技能》 (推荐率 22%)
对于大多数软件开发者来说,编程本身就是乐趣所在。难点在于如何与客户、同事和经理打交道,如何保持高效工作,如何实现财务安全,如何保持身材,以及如何找到真爱。这本书可以帮到你。
软技能:软件开发人员的人生手册是一本指导技术专业人士如何过上全面而令人满意的生活的指南。本书由开发人员兼人生导师 John Sonmez 撰写,他为开发人员提供了一些重要的“软”主题的建议,例如职业发展和生产力、个人理财和投资,甚至健身和人际关系。这本趣味盎然的书籍由 71 个简短章节组成,您可以根据自己的喜好随意阅读。每章末尾的“行动起来”部分将向您展示如何快速获得成果。《软技能》将帮助您成为更优秀的程序员、更有价值的员工,以及更快乐、更健康的人。(Amazon.com)
10. Gayle Laakmann McDowell 著《破解编码面试》 (推荐率 22%)
我不是招聘人员,我是一名软件工程师。因此,我知道被要求当场设计出精彩的算法,然后在白板上写出完美无瑕的代码是什么感觉。我作为求职者和面试官都经历过这种情况。
《破解编码面试》(第六版)旨在帮助你完成这个过程,教授你所需的知识,并帮助你发挥出最佳水平。我指导和面试过数百名软件工程师,最终成果就是这本书。
学习如何发现问题中的提示和隐藏的细节,发现如何将问题分解为可管理的部分,开发在遇到困难时摆脱困境的技巧,学习(或重新学习)核心计算机科学概念,并练习 189 个面试问题和解决方案。
这些面试问题都是真实的,并非出自计算机科学教科书。它们反映了顶尖公司的真实面试问题,以便你能够尽可能地做好准备。内容是什么?
- 189 个编程面试问题,涵盖从基础知识到最棘手的算法问题。
- 对如何得出每个解决方案的演练,以便您可以自己学习如何实现目标。
- 有关如何解决 189 个问题的提示,就像您在真实面试中遇到的问题一样。
- 解决算法问题的五种行之有效的策略,让您能够解决从未见过的问题。
- 广泛涵盖重要主题,例如大 O 时间、数据结构和核心算法。
- 了解 Google 和 Facebook 等顶级公司如何招聘开发人员。
- 准备并应对面试软性方面的技巧:行为问题。
- 对于面试官和公司来说:详细说明如何提出好的面试问题和招聘流程。“ Amazon.com
9. Erich Gamma / Richard Helm / Ralph Johnson / John Vlissides 著《设计模式》 (推荐比例 25%)
四位顶尖设计师凭借丰富的面向对象软件设计经验,为常见的设计问题提供了一系列简洁明了的解决方案。这23种模式此前从未被记录在案,它们使设计师能够创建更灵活、更优雅、最终可重用的设计,而无需重新探索设计解决方案本身。
作者首先阐述了模式的定义以及它们如何帮助你设计面向对象软件。然后,他们系统地命名、解释、评估和分类了面向对象系统中反复出现的设计。以《设计模式》为指导,你将了解这些重要的模式如何融入软件开发流程,以及如何利用它们最有效地解决你自己的设计问题。
每个模式都描述了其适用的情况、在考虑其他设计约束的情况下如何应用,以及在更大规模的设计中使用该模式的后果和利弊。所有模式均基于真实系统编写,并基于现实世界的示例。每个模式还包含代码,演示了如何使用 C++ 或 Smalltalk 等面向对象编程语言实现该模式。Amazon.com
8. Michael Feathers 撰写的《有效地使用遗留代码》 (推荐率 26.4%)
在本书中,Michael Feathers 提供了从头到尾的策略,帮助您更有效地处理大型、未经测试的遗留代码库。本书借鉴了 Michael 为其著名的 Object Mentor 研讨会创作的材料:Michael 曾使用过这些技术指导数百名开发人员、技术经理和测试人员,帮助他们控制遗留系统。
本书还包含 24 种打破依赖关系的技术,帮助您独立处理程序元素并进行更安全的更改。Amazon.com
7.罗伯特·马丁的《程序员整洁之道》(推荐率27.9%)
那些在纷繁的不确定性和持续不断的压力中坚持下来并取得成功的程序员都有一个共同的特点:他们非常关心软件开发实践。他们把它当作一门手艺。他们是专业人士。
在《代码整洁之道:专业程序员的行为准则》一书中,传奇软件专家罗伯特·C·马丁介绍了真正的软件工艺的准则、技术、工具和实践。本书充满了实用建议——涵盖了从估算和编码到重构和测试的方方面面。它涵盖的远不止技术:它关乎态度。马丁展示了如何以荣誉、自尊和自豪的态度对待软件开发;如何高效工作并保持整洁;如何忠实地沟通和估算;如何清晰诚实地应对艰难的决策;以及如何理解深厚的知识伴随着行动的责任。
伟大的软件令人赞叹:强大、优雅、实用,无论是开发者还是用户,都能乐在其中。伟大的软件并非由机器编写,而是由对精湛技艺矢志不渝的专业人士编写。《程序员整洁之道》将帮助你成为他们中的一员,并获得他们独有的自豪感和成就感。
6. 《人月神话》,作者:Frederick P. Brooks Jr(推荐率:27.9%)
很少有软件项目管理方面的书籍能像《人月神话》一样影响深远、经久不衰。弗雷德·布鲁克斯将软件工程的真相与发人深省的观点相结合,为所有管理复杂项目的人士提供了深刻的见解。这些文章源于他担任 IBM System/360 计算机系列项目经理的经历,以及之后担任其庞大软件系统 OS/360 项目经理的经历。如今,距离他的著作首次出版已有 20 年,布鲁克斯重新审视了他最初的理念,并添加了新的想法和建议,无论是对熟悉他著作的读者,还是首次接触他的读者,都能从中受益。(亚马逊网站)
5. Eric Freeman / Bert Bates / Kathy Sierra / Elisabeth Robson 著《Head First Design Patterns》 (推荐率为 29.4%)
在任何特定时刻,总有人和你一样,为同样的软件设计问题而苦苦挣扎。而且,很可能有人已经解决了你的问题。这本《深入浅出设计模式》(现已更新至 Java 8)向你展示了开发者们用来创建功能性、优雅、可复用且灵活的软件的、久经考验的模式。读完本书后,你将能够汲取那些在软件设计这头猛兽面前奋战并最终取得胜利的人们的最佳实践和经验。
这本书有什么特别之处?
我们认为你的时间非常宝贵,不值得浪费在苦苦挣扎于新概念上。《深入浅出设计模式》运用认知科学和学习理论的最新研究成果,打造多感官学习体验,并采用视觉丰富的格式,专为你的大脑运作方式而设计,而非那种让你昏昏欲睡的繁琐文字教学。(Amazon.com)
4. Martin Fowler 的《重构》 (推荐 35%)
随着对象技术(尤其是 Java 编程语言)的应用日益普及,软件开发社区也面临着一个新的问题。大量设计拙劣的程序是由经验不足的开发人员编写的,导致应用程序效率低下,难以维护和扩展。软件系统专业人员越来越多地发现,处理这些继承下来的、非优化的应用程序是多么困难。
多年来,专家级的对象程序员运用了越来越多的技术来提升现有软件程序的结构完整性和性能。这些被称为“重构”的实践一直局限于专家领域,因为迄今为止,尚未有人尝试将这些经验转化为所有开发人员都能使用的形式。在《重构:改进现有软件的设计》一书中,著名的对象技术导师马丁·福勒开辟了新局面,揭开了这些大师级实践的神秘面纱,并展示了软件从业者如何从这一新流程中获得显著优势。经过适当的培训,一名熟练的系统设计师就能成为亚马逊网站
3. Steve McConnell 撰写的《代码大全》 (推荐率为 42%)
Steve McConnell 的原创著作《CODE COMPLETE》被广泛认为是编程的最佳实用指南之一,十多年来一直帮助开发者编写更优秀的软件。如今,这本经典著作已全面更新和修订,融入了前沿实践——以及数百个新的代码示例——展现了软件构建的艺术和科学。McConnell 汲取了来自研究、学术和日常商业实践的知识体系,将最有效的技术和必备原则融入清晰实用的指南中。无论您的经验水平、开发环境或项目规模如何,本书都能启发和激发您的思考,并帮助您构建最高质量的代码。(Amazon.com)
2. Robert C. Martin 著《代码整洁之道》 (推荐率 66%)
《代码整洁之道》分为三部分。第一部分介绍了编写整洁代码的原则、模式和实践。第二部分包含几个复杂程度递增的案例研究。每个案例研究都是一次代码清理练习——将存在问题的代码库转化为健全高效的代码库。第三部分是最终成果:用一章的时间,列出在创建案例研究过程中收集到的启发式方法和“异味”。最终形成了一个知识库,描述了我们在编写、阅读和清理代码时的思维方式。Amazon.com
1. David Thomas 和 Andrew Hunt 著《程序员修炼之道》 (推荐率 67%)
《
程序员修炼之道》是那种你会在多年后反复阅读的罕见技术书籍。无论你是该领域的新手,还是经验丰富的从业者,你每次都会获得新的见解。
戴夫·托马斯和安迪·亨特于1999年撰写了这本影响深远的著作的初版,旨在帮助他们的客户开发更优秀的软件,并重新发现编程的乐趣。这些经验帮助一代程序员探寻软件开发的本质,不受任何特定语言、框架或方法论的局限。实用主义哲学催生了数百本书籍、视频和有声读物,以及成千上万的职业发展和成功案例。
二十年后的今天,这本新版重新审视了成为一名现代程序员的意义。主题涵盖个人责任、职业发展,以及保持代码灵活、易于调整和重用的架构技术。(Amazon.com )
结论
尽管这个顺序可能会让一些人感到惊讶,但根据定义,大多数人一定已经听说过这些书了。
我在制作这份清单时还学到了以下几点:
- 马丁·福勒 (Marting Fowler)、罗伯特·C·马丁 (Robert C. Martin) 和史蒂夫·麦康奈尔 (Steve McConnell) 是仅有的三位拥有多部著作上榜的作家。
- 《破解密码访谈》是榜单上最新的一本书,于 2015 年出版。
- John Zelle 的《Python 编程》是被引用次数最多的一门编程语言书籍。如果我把这本书也算进去的话,它应该能排到第五。
我希望你喜欢这篇文章。
我必须承认,这篇文章写得有点费劲。如果你喜欢这篇文章,并且觉得Twitter也会喜欢,请毫不犹豫地点赞转发,这真的很有用 :)。
(但不要为此专门创建帐户)
如果你不想错过我的下一篇文章,那就别犹豫,关注我吧。我写一些关于科技的文章,我的创业历程,偶尔也会写一些类似这样的数据分析文章。
我将在下周继续这个系列并发布更具体的列表。
注:撰写本文时,这篇文章出现在谷歌搜索结果中。我最终还是完成了我的工作,因为我使用了另一种自动聚合技术,这使得我能够整理出比他多两倍的列表。不过,检查一下这两个列表可能会很有趣 :)。
文章来源:https://dev.to/daolf/the-25-most-recommended-programming-books-of-all-time-5fel