跳转到内容

注释书目

本附录列出了一系列与 C++ 相关的书籍和在线资源:其中有些是在撰写本书时参考过的,有些则推荐读者作为进一步学习或背景阅读材料。

  • Ivor Horton and Peter Van Weert. Beginning C++23: From Beginner to Pro, 第 7 版. Apress, 2023. ISBN: 978-1484293423.

    本书从基础讲起,通过循序渐进的示例帮助读者成长为熟练的 C++ 程序员。本版纳入了 C++23 的新特性,不要求读者具备任何编程基础。

  • Bjarne Stroustrup. Programming: Principles and Practice Using C++, 第 2 版. Addison-Wesley Professional, 2014. ISBN: 0-321-99278-4.

    由这门语言的发明者撰写的 C++ 编程入门书。它不假定读者有任何编程经验,但即便如此,对有经验的程序员来说也同样值得一读。

  • Steve Oualline. Practical C++ Programming, 第 2 版. O’Reilly Media, 2003. ISBN: 0-596-00419-2.

    一本假定读者没有任何既往编程经验的 C++ 入门教材。

  • Walter Savitch. Problem Solving with C++, 第 10 版. Pearson, 2017. ISBN: 978-0134448282.

    假定读者没有任何编程经验。这本书也经常被用作编程入门课程的教材。

  • Bjarne Stroustrup. A Tour of C++, 第 3 版. Addison-Wesley Professional, 2022. ISBN: 978-0136816485.

    这是一本简明的教程式综览(约 320 页),以较高层次快速介绍整个 C++ 语言及其标准库,适合已经了解 C++ 或至少具备较丰富编程经验的读者。本书涵盖了 C++20 特性。

  • Stanley B. Lippman, Josée Lajoie, and Barbara E. Moo. C++ Primer, 第 5 版. Addison-Wesley Professional, 2012. ISBN: 0-321-71411-3.

    一本全面介绍 C++ 的著作,几乎覆盖了这门语言的全部内容,讲解方式平易近人且细致深入。

  • Andrew Koenig and Barbara E. Moo. Accelerated C++: Practical Programming by Example. Addison-Wesley Professional, 2000. ISBN: 0-201-70353-X.

    C++ Primer 涵盖的内容大体相同,但篇幅短得多,因为它假定读者此前已经使用过其他编程语言。

  • Bruce Eckel. Thinking in C++, Volume 1: Introduction to Standard C++, 第 2 版. Prentice Hall, 2000. ISBN: 0-139-79809-9.

    一本非常出色的 C++ 编程入门书,不过它预期读者已经掌握 C 语言。

  • The C++ Programming Language. isocpp.org (访问于 2023 年 8 月 15 日)。

    标准 C++ 在互联网上的官方家园,包含关于各类编译器与平台上 C++ 标准的新闻、现状与讨论。

  • The C++ Super-FAQ. isocpp.org/faq (访问于 2023 年 8 月 15 日)。

    一个庞大的 C++ 常见问题集合。

  • Klaus Iglberger. C++ Software Design, O’Reilly Media, Inc, 2022. ISBN: 9781098113162.

    关于优秀软件设计的上乘之作。借助此书,经验丰富的 C++ 开发者可以对软件设计形成全面、务实且极具价值的整体认识。

  • Marius Bancila. Modern C++ Programming Cookbook, 第 2 版. Packt, 2020. ISBN: 9781800208988.

    本书以实用“菜谱”的形式组织内容,覆盖 C++ 开发者会遇到的广泛问题。第 2 版新增或更新了 30 个面向 C++20 的条目。

  • Paul Deitel, Harvey Deitel. C++20 for Programmers, 第 3 版. O’Reilly, 2020. ISBN: 9780136905776.

    这本书以教程式方式介绍 C++ 编程,难度从入门延伸到中级,并涵盖 C++20。

  • Scott Meyers. Effective Modern C++: 42 Specific Ways to Improve Your Use of C++11 and C++14. O’Reilly, 2014. ISBN: 1-491-90399-6.

  • Scott Meyers. Effective C++: 55 Specific Ways to Improve Your Programs and Designs, 第 3 版. Addison-Wesley Professional, 2005. ISBN: 0-321-33487-6.

  • Scott Meyers. More Effective C++: 35 New Ways to Improve Your Programs and Designs. Addison-Wesley Professional, 1996. ISBN: 0-201-63371-X.

    这三本书针对 C++ 中那些常被误用、误解的特性,给出了极佳的技巧与经验总结。

  • Bjarne Stroustrup. The C++ Programming Language, 第 4 版. Addison-Wesley Professional, 2013. ISBN: 0-321-56384-0.

    堪称 C++ 图书中的“圣经”,由 C++ 的设计者亲自撰写。每位 C++ 程序员都应该拥有一本,不过对初学者而言,其中有些部分可能略显晦涩。

  • Herb Sutter. Exceptional C++: 47 Engineering Puzzles, Programming Problems, and Solutions. Addison-Wesley Professional, 1999. ISBN: 0-201-61562-2.

    本书以一系列谜题的形式展开,并通过资源获取即初始化(RAII)对 C++ 中正确的资源管理和异常安全进行了极为出色而深入的讨论。书中还深入覆盖了多种主题,例如 pimpl 惯用法、名称查找、良好的类设计以及 C++ 内存模型。

  • Herb Sutter. More Exceptional C++: 40 New Engineering Puzzles, Programming Problems, and Solutions. Addison-Wesley Professional, 2001. ISBN: 0-201-70434-X.

    补充讨论了 Exceptional C++: 47 Engineering Puzzles, Programming Problems, and Solutions 未涵盖的异常安全主题。本书还讨论了高效的面向对象编程,以及标准库某些方面的正确使用方式。

  • Herb Sutter. Exceptional C++ Style: 40 New Engineering Puzzles, Programming Problems, and Solutions. Addison-Wesley Professional, 2004. ISBN: 0-201-76042-8.

    讨论泛型编程、优化与资源管理。本书还极为出色地阐述了如何借助非成员函数与单一职责原则在 C++ 中编写模块化代码。

  • Stephen C. Dewhurst. C++ Gotchas: Avoiding Common Problems in Coding and Design. Addison-Wesley Professional, 2002. ISBN: 0-321-12518-5.

    给出了 99 条具体的 C++ 编程建议。

  • Bruce Eckel and Chuck Allison. Thinking in C++, Volume 2: Practical Programming. Prentice Hall, 2003. ISBN: 0-130-35313-2.

    Eckel 这套著作的第二卷,涵盖更高级的 C++ 主题。

  • Ray Lischner. C++ in a Nutshell. O’Reilly, 2003. ISBN: 0-596-00298-X.

    一本从基础到高级内容几乎无所不包的 C++ 参考书。

  • Stephen Prata, C++ Primer Plus, 第 6 版. Addison-Wesley Professional, 2011. ISBN: 0-321-77640-2.

    现有最全面的 C++ 图书之一。

  • The C++ Reference. cppreference.com (访问于 2023 年 8 月 15 日)。

    针对 C++98、C++03、C++11、C++14、C++17、C++20 和 C++23 的极佳参考资料。

  • The C++ Resources Network. cplusplus.com (访问于 2023 年 8 月 15 日)。

    一个包含大量 C++ 相关信息的网站,提供完整的语言参考,其中包括 C++23。

  • Cameron Hughes and Tracey Hughes. Stream Manipulators and Iterators in C++. www.informit.com/articles/article.aspx?p=171014 (访问于 2023 年 8 月 15 日)。

    一篇写得很好的文章,能帮助你消除在 C++ 中定义自定义流操纵器时的种种疑惑。

  • Philip Romanik and Amy Muntz. Applied C++: Practical Techniques for Building Better Software. Addison-Wesley Professional, 2003. ISBN: 0-321-10894-9.

    本书将软件开发建议与 C++ 细节独特地结合在一起,同时对 C++ 中的区域设置与 Unicode 支持也有非常好的讲解。

  • Joel Spolsky. The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!). www.joelonsoftware.com/articles/Unicode.html (访问于 2023 年 8 月 15 日)。

    Joel Spolsky 关于本地化重要性的经典文章。读完之后,你很可能还会想继续看看他在 Joel on Software 网站上的其他内容。

  • The Unicode Consortium. The Unicode Standard 5.0, 第 5 版. Addison-Wesley Professional, 2006. ISBN: 0-321-48091-0.

    这是 Unicode 领域的权威著作,凡是使用 Unicode 的开发者都应该备有一本。

  • Unicode, Inc. Where is my Character? www.unicode.org/standard/where (访问于 2023 年 8 月 15 日)。

    查找 Unicode 字符、图表和字符表的最佳资源。

  • Wikipedia contributors. Universal Coded Character Set. Wikipedia, The Free Encyclopedia, en.wikipedia.org/wiki/Universal_Character_Set (访问于 2023 年 8 月 15 日)。

    解释什么是通用编码字符集(UCS),并涵盖 Unicode 标准的相关内容。

  • Peter Van Weert and Marc Gregoire. C++17 Standard Library Quick Reference. Apress, 2019. ISBN: 978-1-4842-4922-2.

    这本速查手册以精炼形式概括了 C++17 标准库提供的所有关键数据结构、算法和函数。

  • Rainer Grimm. The C++ Standard Library: What Every Professional C++ Programmer Should Know about the C++ Standard Library. Independently published, 2023. ISBN: 979-8386658595.

    本书的目标是在大约 350 页内,提供一份简明的 C++23 标准库参考资料。本书假定读者已经熟悉 C++。

  • Nicolai M. Josuttis. The C++ Standard Library: A Tutorial and Reference, 第 2 版. Addison-Wesley Professional, 2012. ISBN: 0-321-62321-5.

    覆盖整个标准库,包括 I/O 流、字符串、容器和算法。这是一本极佳的参考书。

  • Scott Meyers. Effective STL: 50 Specific Ways to Improve Your Use of the Standard Template Library. Addison-Wesley Professional, 2001. ISBN: 0-201-74962-9.

    延续了作者 Effective C++ 系列著作的风格。本书提供了大量使用标准库的针对性建议,但它本身并不是参考手册或教程。

  • Stephan T. Lavavej. Standard Template Library (STL). learn.microsoft.com/en-us/shows/c9-lectures-stephan-t-lavavej-standard-template-library-stl (访问于 2023 年 8 月 15 日)。

    一套关于 C++ 标准库的有趣视频讲座。

  • David R. Musser, Gillmer J. Derge, and Atul Saini. STL Tutorial and Reference Guide: Programming with the Standard Template Library, 第 2 版. Addison-Wesley Professional, 2001. ISBN: 0-321-70212-3.

    与 Josuttis 的著作相似,但只覆盖标准库的部分内容,例如容器和算法。

  • Herb Sutter. “Sutter’s Mill: Befriending Templates.” C/C++ User’s Journal. www.drdobbs.com/befriending-templates/184403853 (访问于 2023 年 8 月 15 日)。

    对如何让函数模板成为类的友元给出了极佳说明。

  • David Vandevoorde, Nicolai M. Josuttis, and Douglas Gregor. C++ Templates: The Complete Guide, 第 2 版. Addison-Wesley Professional, 2017. ISBN: 0-321-71412-1.

    关于 C++ 模板你想知道的——以及你也许并不想知道的——几乎都在这里。本书假定读者在一般 C++ 方面已有相当扎实的背景。

  • David Abrahams and Aleksey Gurtovoy. C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond. Addison-Wesley Professional, 2004. ISBN: 0-321-22725-5.

    把实用的元编程工具与技术交到了普通程序员手中。

  • C++ Standards Committee Papers. www.open-std.org/jtc1/sc22/wg21/docs/papers (访问于 2023 年 8 月 15 日)。

    这里汇集了大量由 C++ 标准委员会撰写的论文。

  • Nicolai M. Josuttis. C++20 - The Complete Guide. NicoJosuttis, 2022. ISBN: 978-3967300208.

    本书解释了所有 C++20 特性,并着重说明这些特性会如何影响日常编程、不同特性组合后会产生什么效果,以及你能够如何在实践中从中受益。

  • Wikipedia contributors. C++11. Wikipedia, The Free Encyclopedia, en.wikipedia.org/wiki/C%2B%2B11 (访问于 2023 年 8 月 15 日)。

  • Wikipedia contributors. C++14. Wikipedia, The Free Encyclopedia, en.wikipedia.org/wiki/C%2B%2B14 (访问于 2023 年 8 月 15 日)。

  • Wikipedia contributors. C++17. Wikipedia, The Free Encyclopedia, en.wikipedia.org/wiki/C%2B%2B17 (访问于 2023 年 8 月 15 日)。

  • Wikipedia contributors. C++20. Wikipedia, The Free Encyclopedia, en.wikipedia.org/wiki/C%2B%2B20 (访问于 2023 年 8 月 15 日)。

  • Wikipedia contributors. C++23. Wikipedia, The Free Encyclopedia, en.wikipedia.org/wiki/C%2B%2B23 (访问于 2023 年 8 月 15 日)。

    这五篇 Wikipedia 文章分别介绍了 C++11、C++14、C++17、C++20 和 C++23 中新增的特性。

  • Scott Meyers. Presentation Materials: Overview of the New C++ (C++11/14). Artima, 2013. www.artima.com/shop/overview_of_the_new_cpp (访问于 2023 年 8 月 15 日)。

    这是一份 Scott Meyers 培训课程的演示材料文档。若想快速获得一份涵盖全部 C++11 特性及部分 C++14 特性的清单,这是极好的参考资料。

  • ECMAScript 2017 Language Specification. www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf (访问于 2023 年 8 月 15 日)。

    C++ 中有一种正则表达式语法与 ECMAScript 语言中的正则表达式相同,而该规范文档正是对其进行说明的正式来源。

  • Russ Miles and Kim Hamilton. Learning UML 2.0: A Pragmatic Introduction to UML. O’Reilly Media, 2006. ISBN: 0-596-00982-8.

    一本非常易读的 UML 2.0 图书。书中示例使用 Java,但将其转换为 C++ 并不困难。

  • Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein. Introduction to Algorithms, 第 3 版. The MIT Press, 2009. ISBN: 0-262-03384-4.

    最受欢迎的算法入门书之一,涵盖所有常见的数据结构与算法。

  • Donald E. Knuth. The Art of Computer Programming Volume 1: Fundamental Algorithms, 第 3 版. Addison-Wesley Professional, 1997. ISBN: 0-201-89683-1.

  • Donald E. Knuth. The Art of Computer Programming Volume 2: Seminumerical Algorithms, 第 3 版. Addison-Wesley Professional, 1997. ISBN: 0-201-89684-2.

  • Donald E. Knuth. The Art of Computer Programming Volume 3: Sorting and Searching, 第 2 版. Addison-Wesley Professional. 1998. ISBN: 0-201-89685-0.

  • Donald E. Knuth. The Art of Computer Programming Volume 4A: Combinatorial Algorithms, 第 1 部分. Addison-Wesley Professional, 2011. ISBN: 0-201-03804-8.

    这是 Knuth 关于算法与数据结构的四卷巨著。如果你喜欢数学上的严谨性,那么在这一主题上几乎找不到比它更好的著作。不过,如果没有本科层次的数学或理论计算机科学基础,它大概率并不容易读懂。

  • Kyle Loudon. Mastering Algorithms with C: Useful Techniques from Sorting to Encryption. O’Reilly Media, 1999. ISBN: 1-565-92453-3.

    一本平易近人的数据结构与算法参考书。

  • Eric Bach and Jeffrey Shallit. Algorithmic Number Theory, Efficient Algorithms. The MIT Press, 1996. ISBN: 0-262-02405-5.

  • Oded Goldreich. Modern Cryptography, Probabilistic Proofs and Pseudorandomness. Springer, 1999. ISBN: 3-642-08432-X.

    这两本书解释了计算伪随机性的理论基础。

  • Wikipedia contributors. Mersenne Twister. Wikipedia, The Free Encyclopedia, en.wikipedia.org/wiki/Mersenne_twister (访问于 2023 年 8 月 15 日)。

    对梅森旋转算法的数学解释;它被广泛用于生成伪随机数。

  • The Open-Source Initiative. opensource.org (访问于 2023 年 8 月 15 日)。

  • The GNU Operating System—Free Software Foundation. gnu.org (访问于 2023 年 8 月 15 日)。

    这两个网站分别代表两大开源/自由软件运动,阐述其理念,并提供关于如何获取相关软件以及如何参与其开发的信息。

  • The Boost C++ Libraries. boost.org (访问于 2023 年 8 月 15 日)。

    海量免费、经过同行评审、可移植的 C++ 源代码库。这个网站绝对值得一看。

  • github.com and sourceforge.net (访问于 2023 年 8 月 15 日)。

    这两个网站托管着大量开源项目,是寻找实用开源软件的宝贵资源。

  • codeguru.com and codeproject.com (访问于 2023 年 8 月 15 日)。

    寻找免费库与可复用代码的优秀资源。

  • Robert C. Martin. Agile Software Development, Principles, Patterns, and Practices. Pearson, 2003. ISBN: 978-1292025940.

    这本书写给“身处一线”的软件工程师,聚焦那些帮助软件工程师有效应对日益复杂的操作系统和应用程序的技术——包括原则、模式与过程。

  • Mike Cohn. Succeeding with Agile: Software Development Using Scrum. Addison-Wesley Professional, 2009. ISBN: 0-321-57936-4.

    一本帮助你起步 Scrum 方法论的优秀指南。

  • David Thomas and Andrew Hunt, The Pragmatic Programmer, Your Journey to Mastery, 第 2 版. Addison-Wesley Professional, 2019. ISBN: 978-0135957059.

    经典之作的新版本,也是每位软件工程师都应该阅读的一本书。20 多年过去,初版中的建议依然极其准确。它审视的是软件开发的核心过程——无论作为个人还是团队成员,如果你想构建出既易于维护又真正对用户有价值的软件,应当怎样去做。

  • Barry W. Boehm, TRW Defense Systems Group. A Spiral Model of Software Development and Enhancement. IEEE Computer, 21(5): 61–72, 1988.

    一篇里程碑式论文,描述了当时软件开发的现状,并提出了螺旋模型。

  • Kent Beck and Cynthia Andres. Extreme Programming Explained: Embrace Change, 第 2 版. Addison-Wesley Professional, 2004. ISBN: 0-321-27865-8.

    这是一个系列中的著作之一,旨在倡导将极限编程(Extreme Programming)作为一种新的软件开发方法。

  • Robert T. Futrell, Donald F. Shafer, and Linda Isabell Shafer. Quality Software Project Management. Prentice Hall, 2002. ISBN: 0-130-91297-2.

    一本面向所有需要负责软件开发过程管理之人的实用指南。

  • Robert L. Glass. Facts and Fallacies of Software Engineering. Addison-Wesley Professional, 2002. ISBN: 0-321-11742-5.

    讨论了软件开发过程的诸多方面,并在过程中揭示了不少被忽视的“常识真相”。

  • Philippe Kruchten. The Rational Unified Process: An Introduction, 第 3 版. Addison-Wesley Professional, 2003. ISBN: 0-321-19770-4.

    介绍了 RUP 的整体概貌,包括其使命与流程。

  • Edward Yourdon. Death March, 第 2 版. Prentice Hall, 2003. ISBN: 0-131-43635-X.

    一本极具启发性的书,深刻揭示了软件开发中的政治现实与实际处境。

  • Wikipedia contributors. Scrum. Wikipedia, The Free Encyclopedia, en.wikipedia.org/wiki/Scrum_(software_development) (访问于 2023 年 8 月 15 日)。

    对 Scrum 方法论的详细讨论。

  • Manifesto for Agile Software Development. agilemanifesto.org (访问于 2023 年 8 月 15 日)。

    敏捷软件开发宣言全文。

  • Wikipedia contributors. Version control. Wikipedia, The Free Encyclopedia, en.wikipedia.org/wiki/Version_control (访问于 2023 年 8 月 15 日)。

    解释了版本控制系统背后的基本概念,以及可供选择的不同方案类型。

  • Bjarne Stroustrup and Herb Sutter. C++ Core Guidelines. github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md (访问于 2023 年 8 月 15 日)。

    这份文档是一组关于如何高质量使用 C++ 的指导原则,其目标是帮助人们高效地使用现代 C++。

  • Martin Fowler. Refactoring: Improving the Design of Existing Code, 第 2 版. Addison-Wesley Professional, 2018. ISBN: 0-134-75759-9.

    经典名著的新版本,系统阐述了识别坏味道并持续改进代码设计这一实践。

  • Herb Sutter and Andrei Alexandrescu. C++ Coding Standards: 101 Rules, Guidelines, and Best Practices. Addison-Wesley Professional, 2004. ISBN: 0-321-11358-0.

    一本关于 C++ 设计与编码风格的必备书籍。这里的 “coding standards” 并不是指“代码应该缩进几个空格”之类的问题。本书提供了 101 条最佳实践、惯用法和常见陷阱,可帮助你写出正确、易懂且高效的 C++ 代码。

  • Diomidis Spinellis. Code Reading: The Open Source Perspective. Addison-Wesley Professional, 2003. ISBN: 0-201-79940-5.

    一本很独特的书,它颠倒了人们对编程风格的常规看法,挑战读者通过学会正确阅读代码,来成为更优秀的程序员。

  • Dimitri van Heesch. Doxygen. www.doxygen.nl (访问于 2023 年 8 月 15 日)。

    一款高度可配置的程序,能够根据源代码及其注释生成文档。

  • John Aycock. Reading and Modifying Code. John Aycock, 2008. ISBN 0-980-95550-5.

    一本小而精的好书,就代码最常见的操作——阅读、修改、测试、调试与编写——给出了很有价值的建议。

  • Wikipedia contributors. Code refactoring. Wikipedia, The Free Encyclopedia, en.wikipedia.org/wiki/Refactoring (访问于 2023 年 8 月 15 日)。

    讨论了什么是代码重构,并介绍了一系列重构技术。

  • Google. Google C++ Style Guide. google.github.io/styleguide/cppguide.html (访问于 2023 年 8 月 15 日)。

    对 Google 内部所使用的 C++ 风格指南所作的说明。

  • David A. Patterson and John L. Hennessy. Computer Organization and Design: The Hardware/Software Interface, 第 4 版. Morgan Kaufmann, 2011. ISBN: 0-123-74493-8.

  • John L. Hennessy and David A. Patterson. Computer Architecture: A Quantitative Approach, 第 5 版. Morgan Kaufmann, 2011. ISBN: 0-123-83872-X.

    这两本书几乎涵盖了大多数软件工程师在计算机体系结构方面需要了解的全部内容。

  • Dov Bulka and David Mayhew. Efficient C++: Performance Programming Techniques. Addison-Wesley Professional, 1999. ISBN: 0-201-37950-3.

    少数专门聚焦高效 C++ 编程的著作之一。本书同时讨论了语言层面和设计层面的效率问题。

  • GNU gprof. sourceware.org/binutils/docs/gprof/ (访问于 2023 年 8 月 15 日)。

    关于 gprof 性能分析工具的相关资料。

  • Elfriede Dustin. Effective Software Testing: 50 Specific Ways to Improve Your Testing. Addison-Wesley Professional, 2002. ISBN: 0-201-79429-2.

    一本面向质量保证专业人员的书,不过任何软件工程师都能从它对软件测试过程的讨论中获益。

  • Diomidis Spinellis. Effective Debugging: 66 Specific Ways to Debug Software and Systems. Addison-Wesley Professional, 2016. ISBN: 978-0134394794.

    本书通过系统地分类、解释并示范最有用的调试方法、策略、技巧和工具,帮助有经验的程序员加速迈向精通。

  • Microsoft Visual Studio Community Edition. microsoft.com/vs (访问于 2023 年 8 月 15 日)。

    Microsoft Visual Studio Community Edition 是 Visual Studio 的一个免费版本,面向学生、开源开发者和个人开发者,可用于创建免费或付费应用程序;对小型组织而言,最多五位用户也可免费使用。它内置了极为出色的图形化符号调试器。

  • The GNU Debugger (GDB). www.gnu.org/software/gdb/gdb.html (访问于 2023 年 8 月 15 日)。

    一款优秀的命令行符号调试器。

  • Valgrind. valgrind.org (访问于 2023 年 8 月 15 日)。

    Linux 上的开源内存调试工具。

  • Microsoft Application Verifier. Part of the Windows SDK, developer.microsoft.com/windows/downloads/windows-sdk/ (访问于 2023 年 8 月 15 日)。

    一种面向 C++ 代码的运行时验证工具,有助于发现那些通过常规应用测试手段难以识别的细微编程错误与安全问题。

  • Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley Professional, 1994. ISBN: 0-201-63361-2.

    这本奠基之作通常被称为 “Gang of Four”(GoF)之书(因为共有四位作者)。

  • Andrei Alexandrescu. Modern C++ Design: Generic Programming and Design Patterns Applied. Addison-Wesley Professional, 2001. ISBN: 0-201-70431-5.

    提供了一种通过高度可复用代码与模式进行 C++ 编程的方法。

  • John Vlissides. Pattern Hatching: Design Patterns Applied. Addison-Wesley Professional, 1998. ISBN: 0-201-43293-5.

    这本书可视为 GoF 著作的配套读物,解释了设计模式在实践中究竟应如何落地。

  • Eric Freeman, Bert Bates, Kathy Sierra, and Elisabeth Robson. Head First Design Patterns. O’Reilly Media, 2004. ISBN: 0-596-00712-4.

    这本书不止是罗列设计模式。作者通过好的和不好的使用示例,并结合充分的论证,来说明每种模式背后的适用场景与理由。

  • Wikipedia contributors. Software design pattern. Wikipedia, The Free Encyclopedia, en.wikipedia.org/wiki/Design_pattern_(computer_science) (访问于 2023 年 8 月 15 日)。

    介绍了计算机编程中使用的大量设计模式。

  • Abraham Silberschatz, Peter B. Galvin, and Greg Gagne. Operating System Concepts, 第 10 版. Wiley, 2018. ISBN: 1-119-45633-9.

    一本关于操作系统的优秀著作,其中也讨论了死锁、竞态条件等多线程问题。

  • Anthony Williams. C++ Concurrency in Action, 第 2 版. Manning Publications, 2019. ISBN: 1-617-29469-1.

    一本关于实用多线程编程的优秀著作,其中也包括对 C++ 线程库的讲解。

  • Cameron Hughes and Tracey Hughes. Professional Multicore Programming: Design and Implementation for C++ Developers. Wrox, 2008. ISBN: 0-470-28962-7.

    一本面向不同技术水平开发者的书,适合那些正准备迈入多核编程领域的人。

  • Maurice Herlihy and Nir Shavit. The Art of Multiprocessor Programming. Morgan Kaufmann, 2012. ISBN: 0-123-97337-6.

    一本关于如何为多处理器和多核系统编写代码的优秀著作。