我很想看看
进入这本闪闪发光的书
进入开放的计划中
卓越之书。
我根据我的经验,这里列出的书籍在编程社区中都备受推崇。我不会按照任何优点顺序呈现它们,但我会尝试按照涵盖的主题和经验水平以某种逻辑顺序排列它们。
关于书籍的文本摘自书籍的封底或亚马逊的描述。我希望这不会导致版权问题。
目录
主题:C++
初学者书籍
编程:使用C++的原理与实践 作者:Bjarne Stroustrup
C++发明者的编程入门
为现实世界的编程做准备 本书假定您的目标是最终编写重要的程序,无论是在软件开发领域工作还是在其他技术领域工作。
专注于基本概念和技术 本书比传统的入门书籍更深入地解释了基本概念和技术。这种方法将为您编写有用、正确、可维护和高效的代码奠定坚实的基础。
使用当今的C++进行编程 本书是对编程的总体介绍,包括面向对象编程和泛型编程。它也是对C++编程语言的扎实介绍,C++编程语言是现实世界软件中使用最广泛的语言之一。本书从一开始就介绍了现代C++编程技术,引入了C++标准库以简化编程任务。
适用于初学者 - 以及任何想学习新事物的人 本书主要为以前从未编程过的人设计,并且已经过1,000多名大学一年级学生的测试。然而,从业者和高级学生将通过看到一位公认的大师如何处理他的艺术元素来获得新的见解和指导。
提供广阔的视野 本书的前半部分涵盖了广泛的基本概念、设计和编程技术、语言特性和库。这些将使您能够编写涉及输入、输出、计算和简单图形的程序。后半部分探讨了更专业的课题,例如文本处理和测试,并提供了丰富的参考资料。源代码和支持补充材料可从作者的网站获得。
中级和专家书籍
C++编程语言:第三版 作者:Bjarne Stroustrup
本书由该语言的发明者撰写,是关于该语言的权威经典文本,该语言在过去五年中已成为软件开发的核心。第三版进行了大规模的添加和更改。特别是,新版本基于ANSI/ISO C++最终草案,其中包含许多新的语言特性 - 模板、异常、命名空间和运行时类型识别,仅举几例 - 除了彻底改变C++开发的C++标准模板库。
纵观全文,本书不仅仅是描述了该语言的每个元素。重点在于展示如何将该语言用作设计和编程的工具,并教授程序员掌握C++所需的基本概念。通过第三版,Stroustrup使这本书对于初学者来说更容易理解,同时添加了即使是专家C++程序员也会觉得宝贵的信息和技术。
Exceptional C++ 作者:Herb Sutter
Herb Sutter的ExceptionalC++面向有经验的C++程序员,通过几十个编程难题和解释来测试读者对高级C++语言特性和习惯用法的了解。这是一本绝对可以帮助您将C++类设计技能提升到更高水平的书。
本书基于作者的Guru of the Week Internet专栏,提出了一系列关于C++内部运作的具有挑战性的问题,这些问题围绕着使用标准模板库(STL)的泛型编程、异常处理、内存管理和类设计。即使你认为你很了解C++,这些问题中的大多数也会教你更多关于该语言以及如何编写更健壮的“异常安全”类的知识。不要认为这只是“语言律师”。作者的解释强调了健全的编程原则(偏爱简单)和习惯用法(例如用于类设计的Pimpl习惯用法,可以加快编译速度并提高可维护性,或者将“智能”auto_ptr与STL一起使用。)从这些示例的范围和深度来看,Sutter对C++内部运作的掌握令人印象深刻,并且他出色地完成了传达这种专业知识的工作,而没有使用术语或大量理论。
阅读完本书后,C++设计人员将学习一些“最佳实践”,了解如何编写健壮、高效的“异常安全”类(这意味着它们不会抛出任何已处理的异常,也不会泄漏资源)。您很可能会更好地了解内存管理技术以及与STL一起工作。对于寻求一些使用C++的最佳方法的领先知识的经验丰富的开发人员来说,ExceptionalC++既具有挑战性,又是真正有价值的信息来源。 - Richard Dragan, Amazon.com
More Exceptional C++: 40个更多的工程难题、编程问题和解决方案
作者:Herb Sutter
More Exceptional C++延续了Herb Sutter畅销书Exceptional C++的篇章,提供了40个难题,这些难题阐明了C++最具挑战性和最强大的方面。 More Exceptional C++提供了许多新的难题,这些难题专注于泛型编程和C++标准模板库,包括诸如特征和谓词等重要技术,以及使用标准容器和算法中的关键考虑因素 - 其中许多从未在其他地方介绍过。 More Exceptional C++包含一个关于单线程和多线程环境中优化的详细新章节(和两个附录)。它还提供了关于Exceptional C++中首次介绍的关键主题的重要新见解,包括异常安全性、泛型编程和内存管理。适用于所有C++程序员。
Exceptional C++ Style: 40个新的工程难题、编程问题和解决方案
作者:Herb Sutter
软件“风格”在于找到开销和功能之间的完美平衡……优雅和可维护性……灵活性和过度。在Exceptional C++ Style中,传奇的C++大师Herb Sutter提出了40个新的编程场景,旨在分析不仅仅是什么,还有为什么,并帮助您在软件中找到合适的平衡点。
本书围绕实际问题和解决方案组织,提供了对关键C++细节和相互关系的新见解,以及对当今关键C++编程技术的新策略 - 包括泛型编程、STL、异常安全性等。您会找到以下问题的答案
- 你能从STL本身学到关于库设计的什么?
- 如何避免使模板代码不必要地不通用?
- 为什么你不应该专门化函数模板?你应该做什么?
- 异常安全性如何超越try和catch语句?
- 你应该使用异常规范,还是不应该使用?
- 你应该何时以及如何“泄漏”类的私有部分?
- 如何使类对于版本控制更安全?
- 使用标准容器的真正内存成本是多少?
- 如何使用const真正优化你的代码?
- 编写inline如何影响性能?
- 什么时候看起来错误的代码实际上可以完美地编译和运行,以及你为什么要关心?
- std::string的设计有什么问题?
Exceptional C++ Style将帮助你设计、构建和编写具有风格的代码 - 并在你所有的C++软件中实现更大的健壮性和性能。
C++ 编码标准: 规则、指南和最佳实践
作者:Herb Sutter
一致、高质量的编码标准可以提高软件质量、缩短上市时间、促进团队合作、消除浪费在无关紧要的事情上的时间并简化维护。现在,两位世界上最受尊敬的C++专家将全球C++社区的丰富集体经验提炼成一组编码标准,每个开发人员和开发团队都可以理解并用作他们自己编码标准的基础。
作者几乎涵盖了C++编程的每个方面:设计和编码风格、函数、运算符、类设计、继承、构造/析构、复制、赋值、命名空间、模块、模板、泛型、异常、STL容器和算法等等。每个标准都简明扼要地描述,并附有实际示例。从类型定义到错误处理,本书介绍了C++最佳实践,包括一些最近才被识别和标准化的技术 - 即使你已经使用C++多年,你可能也不知道这些技术。一路走来,你会找到以下问题的答案
- 什么值得标准化 - 什么不值得标准化?
- 进行可扩展性编码的最佳方法是什么?
- 合理的错误处理策略的要素是什么?
- 你如何(以及为什么)避免不必要的初始化、循环和定义依赖关系?
- 你何时(以及如何)应该一起使用静态和动态多态?
- 你如何练习“安全”重写?
- 你什么时候应该提供无故障交换?
- 你为什么以及如何防止异常跨模块边界传播?
- 你为什么不应该在头文件中编写命名空间声明或指令?
- 你为什么应该使用STL vector和string而不是数组?
- 你如何选择正确的STL搜索或排序算法?
- 你应该遵循什么规则来确保类型安全的代码?
无论你是一个人工作还是与他人合作,C++编码标准都将帮助你编写更清晰的代码 - 并以更少的麻烦和更少的挫败感更快地编写代码。
C++ 在 nutshell:语言 & 库参考 作者:Ray Lischner
C++是一种功能强大、高度灵活且适应性强的编程语言,它允许软件工程师快速有效地组织和处理信息。这是对C++的完整参考,它首先按主题组织,然后是按字母顺序排列的语言关键字参考,包括语法摘要和指向主题参考的指针。库参考按头文件组织,每个库章节和类声明按字母顺序呈现类和类型,以便于查找。交叉引用链接相关方法、类和其他关键功能。这种资源对于学生和专业程序员都应该有用。当你编程时,你需要快速回答关于语言语法或库例程所需的参数的问题。例如,定义命名空间的别名的C++语法是什么?你究竟是如何创建和使用迭代器来处理标准库容器的内容的?这本书是一本简洁的桌面参考书,它回答了这些问题,将这种灵活、适应性强(但有点难以掌握)的语言的全部功能放在每个C++程序员的指尖。
C++ 标准库:教程与参考 作者:Nicolai M. Josuttis
C++标准库提供了一组常用的类和接口,这些类和接口极大地扩展了核心C++语言。 Josuttis的书不仅提供了每个库组件的全面文档,还提供了对复杂概念的清晰解释,描述了有效使用所需的实际编程细节,并给出了一个又一个的工作代码示例。这本彻底更新的书反映了C++标准库的最新元素,这些元素已纳入完整的ANSI/ISO C++语言标准中。特别是,文本侧重于标准模板库 (STL),检查容器、迭代器、函数对象和STL算法。
C++ 模板:完整指南 作者:David Vandevoorde, Nicolai M. Josuttis
模板是C++中最强大的特性之一,但它们常常被忽视、误解和滥用。 C++ 模板:完整指南为软件架构师和工程师提供了对为什么、何时以及如何使用模板来更有效地构建和维护更清晰、更快、更智能的软件的清晰理解。
C++ 模板从对基本概念和语言特性的深刻教程开始。本书的其余部分用作综合参考,首先侧重于语言细节,然后侧重于广泛的编码技术,最后侧重于模板的高级应用程序。本书中使用的示例说明了抽象概念并演示了最佳实践。
读者将学习
- 模板的精确行为
- 如何避免与模板相关的陷阱
- 从基本到以前未记录的成语和技术
- 如何在不威胁性能或安全性的情况下重用源代码
- 如何提高C++程序的效率
- 如何生成更灵活和可维护的软件
- 本实用指南向程序员展示了如何利用C++中模板功能的全部功能。
http://www.josuttis.com/tmplbook/ 的配套网站包含示例代码和其他更新。
主题:算法和数据结构
初学者书籍
算法导论 作者:TH Cormen
该书深入涵盖了广泛的算法,但使其设计和分析可供所有级别的读者访问。每一章都是相对独立的,可以用作一个学习单元。这些算法用英语和伪代码描述,这些伪代码设计成任何做过一些编程的人都可以阅读。解释保持了基本性,而没有牺牲覆盖的深度或数学的严谨性。第二版新增了关于算法的作用、概率分析和随机算法以及线性规划的章节,并对本书的几乎每个部分进行了广泛的修订。在一个微妙但重要的变化中,循环不变式在早期被引入并在整个文本中使用,以证明算法的正确性。在不改变数学和分析重点的情况下,作者将大部分数学基础材料从第一部分移至附录,并在开头添加了额外的激励材料。
中级和专家书籍
计算机程序设计艺术 作者:Donald E. Knuth
这套多卷作品被广泛认为是古典计算机科学的权威描述。前三卷几十年来一直是学生、研究人员和从业人员在编程理论和实践中的宝贵资源。
所有基本算法的圣经,也是教会了当今许多软件开发人员他们所了解的关于计算机编程的大部分知识的作品。 --Byte,1995年9月
无数的读者都谈论过克努特的作品对他们的个人产生的深刻影响。科学家们惊叹于他分析的美丽和优雅,而普通的程序员则成功地将他的“菜谱式”解决方案应用于日常问题。所有人都钦佩克努特作品的广度、清晰度、准确性和幽默感。
我简直无法告诉你,它们给了我多少快乐的学习和娱乐时光!我曾在汽车、餐厅、工作场所、家里,甚至在小联盟比赛中,当我的儿子不在阵容中时,都细细研读过它们!--Charles Long
虽然主要作为参考书编写,但有些人仍然觉得可以而且有趣地从头到尾阅读每一卷。中国的一位程序员甚至将这种体验比作阅读诗歌。
如果你认为你是一个非常优秀的程序员!那就读读[克努特]的《计算机程序设计艺术》!如果你能读完它,你绝对应该给我发一份简历。--Bill Gates
无论你的背景如何,如果你需要进行任何严肃的计算机编程,你都会找到自己的理由,让本系列中的每一卷都成为你学术或专业图书馆中容易获取的一部分。
当一个问题足够难,以至于你不得不把克努特的书从书架上拿下来时,总是很令人愉悦。我发现仅仅打开其中一本就对计算机产生了一种非常有用的威慑作用。--Jonathan Laventhol
20多年来,克努特首次修订了所有三本书,以反映该领域最近的发展。他的修订主要集中在自上一版出版以来知识已经融合的领域,已经解决的问题以及已经改变的问题上。为了与这些书的权威性相符,所有关于该领域先前工作的历史信息都已在必要时进行了更新。与作者对一丝不苟的完美追求的声誉相符,在他工作中被眼光敏锐和要求严格的读者发现的罕见技术错误都已得到纠正。增加了数百个新的练习,以提出新的挑战。