如果我们发现一个人才稀有的人,我们应该问问他读过的书。一本书可以定义一个人的天性和智慧。如果您是一名编码员,那么您也应该是一名优秀的读者,因为它可以开发您的思想,而思想是您的武器。你必须每天训练它。在找到问题的任何解决方案之前,如果您是编码员或任何问题解决者,阅读和理解问题是最重要的。如果没有良好的阅读和理解能力,一个人在解决问题之前需要更多的时间来理解问题。
下面列出了每个程序员都应该阅读的前 10 本书。这些书不仅教授了编程语言的语法和语义,还能帮助你思考、组织并成为一个好的问题解决者,这确实是编码人员最重要的一课。这些书不仅用于掌握特定的编程语言,如 C++、 Java或Python ,还将帮助您成为更好的程序员。
1. 干净的代码:Robert C. Martin
这是初学者最好的经典书籍之一,它将教您编写优质干净代码的所有技巧和模式。运行的每个代码都不是干净的代码。大多数初学者程序员都犯过这个错误,他们只是试图解决问题,因此忘记了这些因素来编写干净完美的专业代码。干净的代码应该是可读的,结构良好的,以便可以轻松地重用和调试。
提出的想法:
- 如何正确命名变量?
- 如何写出更好的方法?
- 如何更好地构建代码?
- 什么是代码异味?
- 为什么另一种方法比这种方法更好?
2. 神话人物月:弗雷德里克·布鲁克斯 (Frederick Brooks)
根据世界上许多软件开发人员的说法,这本书对他们来说简直就是一本圣经。本书将帮助您对软件开发、估算、项目管理和软件开发中的问题建立正确的概念。本书的主题是“布鲁克斯定律”,它说“为后期的软件项目增加人力,使其更晚”。
提出的想法:
- 神话般的人月:以人月衡量有用的工作是一个神话,
- 软件工程的精髓与意外,
- 在第二个系统上工作时,你应该记住你不应该过度设计它,
- 任何修复错误的尝试都可能导致许多新错误。
3. 务实的程序员:你的精通之旅
这是安德鲁亨特和大卫托马斯的书,关于编程和软件工程。这本书的独特之处在于它以实用的方式教给我们一系列技巧,以改进编程和开发过程,而不是理论方式。本书将帮助你成为一个务实的程序员,一个尝鲜者,快速适应,好奇心和批判性思维,现实主义,成为一个多面手。这本书还介绍了开发方法和注意事项、类比和短篇小说,例如,破窗理论、石汤故事或沸腾的青蛙。
提出的想法:
- 使用许多类比和短篇故事介绍开发方法和过程。例如,石头汤,或沸腾青蛙的故事
- 许多在本书中流行的概念被命名,例如代码卡塔,
- 更多使用高度可调的代码制作和保存方法,
- 估算时间和费用的有用建议
- 向您介绍您可能尚未考虑过的工作方法。
4. Code Complete(第 2 版):Steve McConnell
如果你想成为一名优秀的软件工程师,你应该读一读这本书。十多年来,本书提供了最有用的编程实用指南,并帮助开发人员编写更好的软件。本书罕见地融合了经典和全面更新的修订前沿编码概念和示例。有了这些正确的概念,您可以轻松理解软件构建的艺术和科学。
代表的想法:
- 软件工艺,例如布局、风格、字符、主题和自文档
- 软件开发的编码、调试、集成和测试,
- 其他重要的软件开发方面,例如需求和文档,
- 创建高质量代码的技术、代码改进和系统注意事项。
5. 计算机编程艺术
这是著名计算机科学家Donald Knuth教授的又一经典著作。这本书非常受欢迎,并受到世界上许多顶级程序员的高度赞扬,因为它结合了数学的精确性和贯穿各章的出色幽默。由于他对算法分析的重大贡献,通过他著名的系列丛书“计算机编程的艺术”,Knuth 于 1974 年获得了图灵奖。
本书从基本的编程概念和技术开始,探索各种编程算法并有效地描述它们的分析,然后特别关注计算机内部信息的表示(信息结构)。
提出的想法:
- 如何有效处理数据元素之间的结构关系,
- 如何使用基本算法的基本概念有效地解决问题,
- 半数值算法和组合算法
- 最小比较排序或最佳排序
6. 编程珍珠
这本书与列表中的其他经典书籍略有不同,但本书是帮助一个人像程序员一样思考的最有影响力的书籍之一。每一个概念都恰当地涵盖了实际问题和各种行之有效的解决方案。这本书读起来很愉快,因为写作风格简直太棒了。
这本书可能不是一本关于新编程概念的普通书,但它是最好的实践编程书,可以练习和遵循清晰的例子。这本书挑战你对内存、CPU 和算法核心概念的理解,并逐渐增加难度而不是立即给你答案,因为本书的主要座右铭是帮助你成为更好的问题解决者。这本书是练习数据结构和算法问题的最佳场所,尤其是搜索、排序、堆等。它真的是 Jon Bentley 创造的杰作,充分证明了“Programming Pearls”的名称。
7. 代码:Charles Petzold
这本书以出色的方式向我们介绍了“计算机硬件和软件的隐藏语言”,让那些曾经想知道计算机神奇而秘密的内部生活以及这些复杂系统和其他智能机器的工作原理的人。
如今,由于抽象级别,低级细节被掩盖了,但是如果您通读这本书,您可以了解那些很棒的旧技术,例如摩尔斯电码、盲文和布尔逻辑,从而了解真空管、晶体管和集成电路。有时,要解决非常复杂的错误,您必须深入到具有冯诺依曼架构的电子二进制计算机的死胡同,才能找到可扩展的解决方案。它还轻松解释了许多最近的发展主题,例如浮点运算、操作系统、基于数据包的通信协议和 GUI。
8. 算法介绍
这是 Thomas H. Cormen 、Charles E. Leiserson、Ronald L. Rivest 和 Clifford Stein 被广泛用作理解和使用算法的教科书的唯一一本著名书籍。 CiteSeerX 上记录了超过 10,000 次引用,这本书通常被引用作为已发表论文中算法的参考。这本书还是一本畅销的编程书籍,在最初的 20 年里卖出了 50 万册。
本书的每一章都涵盖了广泛的算法、其设计技术和深入的应用领域。编程示例不是使用特定的编程语言,而是使用严谨而全面的伪代码编写。
9. 重构:改进现有代码的设计
本书由 y Martin Fowler 编写,是一本软件开发人员必不可少的书,它提供了从头到尾的策略,可以更有效地使用大型软件并改进现有代码的设计。
重构是在不改变功能的情况下重写代码的过程,以提高代码的可读性、可测试性或可维护性。如果您对改进和维护代码质量感兴趣,这本书适合您,其中包含 40 多个经过验证的重构示例的逐步实施说明,详细说明了何时以及为何使用重构。在这本经典书籍的第二版中,大多数示例从Java切换到 JavaScript,但这些思想可以应用于任何面向对象的编程语言。这本书写得很好,提供了示例、示例、图表、要遵循的步骤、旁注、评论,以及完全理解重构方法所需的基本上所有内容。
10. 设计模式:可重用的面向对象软件的元素
这本书被誉为有史以来最伟大的软件开发书籍之一,详细描述了许多不同的设计模式。它对软件工程领域具有影响力,由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 撰写,前言由 Grady Booch 撰写。
本书是初出茅庐的复杂系统架构师或设计师的必读之书。您很可能需要阅读本书以避免和处理行业面临的常见问题。本书包含对许多不同设计模式的详细描述,被视为多年来发展起来以帮助软件工程师的面向对象设计理论和实践的重要来源。
作者讨论了各种事情,例如继承和封装之间的紧张关系、参数化类型、支持多种外观标准、美化用户界面、支持多个窗口系统等。