doc: modify formatting

This commit is contained in:
lusipad
2023-04-07 21:10:51 +08:00
committed by Dmitrii Dmitriev
parent 9d0a115bfd
commit 80a8534260
21 changed files with 224 additions and 236 deletions

7
.vscode/settings.json vendored Normal file
View File

@@ -0,0 +1,7 @@
{
"cSpell.words": [
"Clion",
"Incredibuild",
"Valgrind"
]
}

View File

@@ -1,6 +1,6 @@
# :clipboard: C++的应用领域
C++语言具有广泛的应用领域主要在需要高性能或低内存消耗时使用。如果想了解更多关于C++特定应用领域的信息,可以参考以下资源:
C++ 语言具有广泛的应用领域,主要在需要高性能或低内存消耗时使用。如果想了解更多关于 C++ 特定应用领域的信息,可以参考以下资源:
- [C++ 的 12 个实际应用场景](https://www.softwaretestinghelp.com/cpp-applications/)

View File

@@ -2,31 +2,31 @@
## :pencil: C++
- [Scott Meyers - Effective Modern C++改善C++11C++14](https://www.amazon.com/Effective-Modern-Specific-Ways-Improve/dp/1491903996)
- [Scott Meyers - Effective Modern C++:改善 C++11C++14](https://www.amazon.com/Effective-Modern-Specific-Ways-Improve/dp/1491903996)
这是 Scott Meyers 的书籍系列中的新章节。本书汇编了一组针对C ++11 / 14标准的技巧。
这是 Scott Meyers 的书籍系列中的新章节。本书汇编了一组针对 C ++11 / 14 标准的技巧。
- [Anthony Williams - C++并发编程实战](https://www.amazon.com/C-Concurrency-Action-Anthony-Williams/dp/1617294691/ref=sr_1_3?keywords=C%2B%2B+Concurrency+in+Action%3A+Practical+Multithreading&qid=1636314477&s=books&sr=1-3)
本书是多线程编程和使用标准库特性的全面指南。它提供了有关所有原语及其“幕后”复杂性的详细说明。
- Herb Sutter:
- [Exceptional C++47C++工程难题、编程问题和解决方案](https://www.amazon.com/Exceptional-Engineering-Programming-Problems-Solutions/dp/0201615622)
- [Exceptional C++ Style: 40个新的工程难题、编程问题及解决方案](https://www.amazon.com/Exceptional-Style-Engineering-Programming-Solutions/dp/0201760428)
- [More Exceptional C++: 40 New Engineering Puzzles, Programming Problems, and Solutions](https://www.amazon.com/More-Exceptional-Engineering-P rogramming-Solutions/dp/020170434X)
- [Exceptional C++47C++工程难题、编程问题和解决方案](https://www.amazon.com/Exceptional-Engineering-Programming-Problems-Solutions/dp/0201615622)
- [Exceptional C++ Style: 40 个新的工程难题、编程问题及解决方案](https://www.amazon.com/Exceptional-Style-Engineering-Programming-Solutions/dp/0201760428)
- [More Exceptional C++: 40 个新的工程难题、编程疑问及解决方法](https://www.amazon.com/More-Exceptional-Engineering-Programming-Solutions/dp/020170434X)
这些书籍涵盖了许多与在C ++中设计或编写代码相关的任务,并提供了一系列有效解决方案。其中许多解决方案被认为是经典习惯用法,广泛应用于各种项目中。
这些书籍涵盖了许多与在 C ++中设计或编写代码相关的任务,并提供了一系列有效解决方案。其中许多解决方案被认为是经典习惯用法,广泛应用于各种项目中。
- [David Vandevoorde - C++ Templates: The Complete Guide](https://www.amazon.com/C-Templates-Complete-Guide-2nd/dp/0321714121)
这本最新的关于C++元编程特别是模板的相关书籍全面描述了近期标准中添加的相关技术和基础知识包括C++17。如果你想要编写通用和参数化代码这本书将成为你不可或缺的资源并提供有关模板基础知识以及与不同技术相关的许多细微差别。
- [David Vandevoorde - C++ Templates: The Complete Guide](https://www.amazon.com/C-Templates-Complete-Guide-2nd/dp/0321714121)
这本最新的关于 C++ 元编程,特别是模板的相关书籍,全面描述了近期标准中添加的相关技术和基础知识,包括 C++17。如果你想要编写通用和参数化代码这本书将成为你不可或缺的资源并提供有关模板基础知识以及与不同技术相关的许多细微差别。
## :bicyclist: 优化C++应用程序
## :bicyclist: 优化 C++应用程序
- [Kurt Guntheroth - C++性能优化指南](https://www.amazon.com/Optimized-Proven-Techniques-Heightened-Performance/dp/1491922060)
这本书是一本改善C ++应用程序性能的指南。该书中一些建议基于Herb SutterScott Meyers所述的各种习语和技巧。建议在阅读前面提到过的书籍后再阅读此书。
- [Kurt Guntheroth - C++性能优化指南](https://www.amazon.com/Optimized-Proven-Techniques-Heightened-Performance/dp/1491922060)
这本书是一本改善 C++ 应用程序性能的指南。该书中一些建议基于 Herb SutterScott Meyers 所述的各种习语和技巧。建议在阅读前面提到过的书籍后再阅读此书。
- [Agner Fog - Optimizing software in C++](https://agner.org/optimize/optimizing_cpp.pdf) 或者[Optimization manuals](https://agner.org/optimize)
实践导向指南为使用C ++开发或涉及与CPU、内存等交互方面进行了全面介绍潜在优化可能性提供了详尽信息。
- [Agner Fog - Optimizing software in C++](https://agner.org/optimize/optimizing_cpp.pdf) 或者[Optimization manuals](https://agner.org/optimize)
实践导向指南为使用 C++ 开发或涉及与 CPU、内存等交互方面进行了全面介绍潜在优化可能性提供了详尽信息。
## :electric_plug: 硬技能
@@ -34,51 +34,44 @@
这本书是关于设计模式的经典指南。每个模式都有详细的描述和适当使用案例的建议。这本书是 Eric Freeman 的《Head First Design Patterns》的好后续读物。然而准备好了吗因为这本书比前一本更加复杂。
- [Gary McLean Hall - 《自适应代码》](https://www.amazon.com/Adaptive-Code-Developer-Best-Practices/dp/0136891446)
- [Gary McLean Hall - 《自适应代码》](https://www.amazon.com/Adaptive-Code-Developer-Best-Practices/dp/0136891446)
这本书是理解软件设计中 SOLID 原则的优秀资源。解释以简单易懂的方式呈现出来使它们易于理解。C# 编写的代码示例也很简单,并有效地说明了原则。
- [Robert Martin - 《整洁架构:软件结构与设计之道》](https://www.amazon.com/Clean-Architecture-Craftsmans-Software-Structure/dp/0134494164)
这本由 Uncle Bob 写作提供了如何从架构角度考虑软件设计方面指导。它强调在开始编码之前思考应用程序或组件体系结构的重要性。该书提供了分析解决方案设计时需要考虑什么以及帮助避免常见软件设计错误等见解。对于想要深入了解软件设计中架构任务并寻求获得更深入理解领域知识点起点良好者而言,这本书是一个不错选择 。此书所包含知识被工程师广泛使用,并将帮助他们避免普遍错误。
- [Robert Martin - 《整洁架构:软件结构与设计之道》](https://www.amazon.com/Clean-Architecture-Craftsmans-Software-Structure/dp/0134494164)
这本由 Uncle Bob 写作提供了如何从架构角度考虑软件设计方面指导。它强调在开始编码之前思考应用程序或组件体系结构的重要性。该书提供了分析解决方案设计时需要考虑什么以及帮助避免常见软件设计错误等见解。对于想要深入了解软件设计中架构任务并寻求获得更深入理解领域知识点起点良好者而言,这本书是一个不错选择。此书所包含知识被工程师广泛使用,并将帮助他们避免普遍错误。
- [Samary Baranov - 《有限状态机和算法状态机:快速、简单地进行复杂有限状态机设计》](https://www.amazon.com/Finite-State-Machines-AlgorithmiComplex-ebook/dp/B078RYYBCJ)
- [Samary Baranov - 《有限状态机和算法状态机:快速、简单地进行复杂有限状态机设计》](https://www.amazon.com/Finite-State-Machines-AlgorithmiComplex-ebook/dp/B078RYYBCJ)
这是一份关于如何运用有限机器理论进行编程实践指南短小精干且实用性强。你不会找到比这更简单、更优雅地阐述有限机器理论及其实际应用方法。
这是一份关于如何运用有限机器理论进行编程实践指南短小精干且实用性强 。你不会找到比这更简单、更优雅地阐述有限机器理论及其实际应用方法。
- [Vladimir Khorikov - 单元测试原则、实践和模式:使用 C# 示例进行单元测试、Mocking 和集成测试效果良好](https://www.amazon.com/gp/product/B09782L692/ref=dbs_a_def_rwt_hsch_vapi_tkin_p1_i0)
- [Vladimir Khorikov - 单元测试原则、实践和模式: 使用 C# 示例进行单元测试、Mocking 和集成测试效果良好]
(https://www.amazon.com/gp/product/B09782L692/ref=dbs_a_def_rwt_hsch_vapi_tkin_p1_i0)
该图书提供了在单位测试领域常见推荐事项、模式和反模式详细概述 。阅读完此图书后,您将掌握创建成功项目所需所有内容 ,通过良好测试轻松扩展且易于维护。
该图书提供了在单位测试领域常见推荐事项、模式和反模式详细概述。阅读完此图书后,您将掌握创建成功项目所需所有内容,通过良好测试轻松扩展且易于维护。
## :zap: 操作系统
- [Andrew S. Tanenbaum - 现代操作系统](https://www.amazon.com/Modern-Operating-Systems-Andrew-Tanenbaum/dp/013359162X)
- [Andrew S. Tanenbaum - 现代操作系统](https://www.amazon.com/Modern-Operating-Systems-Andrew-Tanenbaum/dp/013359162X)
这是一本关于操作系统的综合指南,涵盖了其构建和各个方面,如文件系统、网络、内存管理、任务调度和多线程。该书用简单易懂的语言提供深入的解释,不专注于特定的操作系统分发。每章都对操作系统的不同方面进行了详细探讨,使它成为理解这个复杂主题的基础资源。
- [Mark Russinovich - Windows Internals, Part 1](https://www.amazon.com/Windows-Internals-Part-architecture-management/dp/0735684189), [Mark Russinovich - Windows Internals, Part 2](https://www.amazon.com/Windows-Internals-Part-2-7th/dp/0135462401)
本书深入探讨了与前一本书相同的主题但重点专注于微软Windows操作系统。它提供了一个深入而详细地查看OS每个方面并着重介绍Windows可能没有被开发人员正式声明的各种微妙差别和方面。对于那些需要与OS系统库密切交互并且需要低级应用程序开发人员来说是一个有用资源。
本书深入探讨了与前一本书相同的主题,但重点专注于微软 Windows 操作系统。它提供了一个深入而详细地查看 OS 每个方面,并着重介绍 Windows 可能没有被开发人员正式声明的各种微妙差别和方面。对于那些需要与 OS 系统库密切交互并且需要低级应用程序开发人员来说是一个有用资源。
-[Christopher Negus - Linux圣经](https://www.amazon.com/Linux-Bible-Chrisopher-Negus/dp/1119578884)
- [Christopher Negus - Linux 圣经](https://www.amazon.com/Linux-Bible-Chrisopher-Negus/dp/1119578884)
本书可以作为Tanenbaum工作后续研究Linux操作系统复杂性时使用。该书包括对OS各个方面进行详细分析并侧重于像Red Hat、UbuntuFedora等流行版本。对于日常使用Linux 的开发人员来说是一个理想资源。
本书可以作为 Tanenbaum 工作后续研究 Linux 操作系统复杂性时使用。该书包括对 OS 各个方面进行详细分析,并侧重于像 Red Hat、UbuntuFedora 等流行版本。对于日常使用 Linux 的开发人员来说是一个理想资源。
-[Ulrich Drepper - 关于内存编程者应知道什么?](https://people.freebsd.org/~lstewart/articles/cpumemory.pdf)
- [Ulrich Drepper - 关于内存编程者应知道什么?](https://people.freebsd.org/~lstewart/articles/cpumemory.pdf)
这篇文章全面介绍PC内存如何运作以及为什么会按照所描述方式运行。它不仅提供高层次信息还深入探讨低层次问题因此非常适合那些希望更深入地研究这一主题内容。
这篇文章全面介绍 PC 内存如何运作以及为什么会按照所描述方式运行。它不仅提供高层次信息,还深入探讨低层次问题,因此非常适合那些希望更深入地研究这一主题内容。
## :globe_with_meridians: 计算机网络
-[Andrew S. Tanenbaum - 计算机网络] (https// www .amazon.com / Computer-Networks 5th–安德鲁·塔能鲍姆(Andrew-Tanenbaum / dp / 0132126958
- [Andrew S. Tanenbaum - 计算机网络](https://www.amazon.com/Computer-Networks-5th-Andrew-Tanenbaum/dp/0132126958)
计算机网络理论基础上经典著作提供从物理层开始到数据传输协议结束之间详尽描述对于紧密参与与网络交互项目中开发人员将极其有用。
计算机网络理论基础上经典著作提供从物理层开始到数据传输协议结束之间详尽描述对于紧密参与与网络交互项目中开发人员将极其有用。
-[Victor Olifer –计算机网络:设计网络原则、技术和协议] https// www .amazon.com / Computer-Networks PrinciplesTechnologiesProtocols-ebook / dp/B001GQ35P4
- [Victor Olifer –计算机网络:设计网络原则、技术和协议](https://www.amazon.com/Computer-NetworksPrinciplesTechnologiesProtocols-ebook/dp/B001GQ35P4)
本书全面介绍计算机网络基础知识 可能比Tanenbaum工作呈现出略微更加复杂因此 ,建议选择最适合您风格呈现信息 的图书
本书全面介绍计算机网络基础知识,可能比 Tanenbaum 工作呈现出略微更加复杂因此,建议选择最适合您风格呈现信息 的图书
[**返回**](Overview.md) | [**回到主页**](../../README.md)

View File

@@ -1,6 +1,6 @@
# :books: 书籍和资源
本指南提供了一系列适合不同难度水平学习C++的书籍。建议您确定自己当前的熟练程度并选择相匹配的书籍。本指南的重点是提供对C++和软件开发的普遍理解,而不是涵盖专业主题。如果您正在寻找更具体的信息,建议向您感兴趣领域中的专家寻求帮助。
本指南提供了一系列适合不同难度水平学习 C++的书籍。建议您确定自己当前的熟练程度,并选择相匹配的书籍。本指南的重点是提供对 C++和软件开发的普遍理解,而不是涵盖专业主题。如果您正在寻找更具体的信息,建议向您感兴趣领域中的专家寻求帮助。
- :blue_book: [PreJunior](PreJunior.md)
- :green_book: [Junior](Junior.md)

View File

@@ -1,31 +1,30 @@
# :alien: Pre-Junior
## :innocent: 动机和经验
- [查德·福勒 - 热情的程序员](https://www.amazon.com/Passionate-Programmer-Remarkable-Development-Pragmatic-ebook/dp/B00AYQNR5U)
这本书是初学者动机类书籍中的经典之作。查德·福勒分享了他成为专业程序员并在IT行业中导航的经验。
- [查德·福勒 - 热情的程序员](https://www.amazon.com/Passionate-Programmer-Remarkable-Development-Pragmatic-ebook/dp/B00AYQNR5U)
这本书是初学者动机类书籍中的经典之作。查德·福勒分享了他成为专业程序员并在 IT 行业中导航的经验。
## :bar_chart: 计算机科学
- [弗雷拉菲略 - 计算机科学精髓:解决计算问题的艺术](https://www.amazon.com/Computer-Science-Distilled-Computational-Problems/dp/0997316020)
- [弗雷拉菲略 - 计算机科学精髓:解决计算问题的艺术](https://www.amazon.com/Computer-Science-Distilled-Computational-Problems/dp/0997316020)
该书全面概述了计算机科学中各种基本概念,包括数学、算法、数据库以及计算机硬件基础知识。它是发现和优先考虑领域兴趣点的理想起点。
- [查尔斯佩茨奥尔德 - 编码:计算机硬件与软件隐藏语言](https://www.amazon.com/Code-Language-Computer-Hardware-Software/dp/0735611319)
在开始C++研究之前建议先阅读这本书。它提供了一个简单易懂的关于电脑如何工作的解释避免复杂技术或理论方面。此书介绍的概念是基础性质并将在未来保持相关性。它还有助于您更好地理解后来C++基本思想。这本书作为上一本深入探讨电脑运作方式补充资料。
-[阿迪塔亚巴加瓦 - 理解数据结构用Python描述](https://www.ituring.com.cn/book/tupubarticle/19709)
该书对初学者介绍了常见数据结构数组、链表、栈等和排序方法选择排序、归并排序等同时使用Python代码进行实现演示并且每个章节都附带习题适合自主练习
-[Aditya Bhargava - Grokking Algorithms: An Illustrated Guide for Programmers and Other Curious People](https://www.amazon.com/Grokking-Algorithms-Illustrated-Python-Paperback/dp/B08K3T2YJN/ref=sr_1_4?dchild=1&keywords=grokking+algorithms&qid=1627589477&s=books&sr=1-
4)
该书为初学者提供了通俗易懂地介绍计算机科学中各种不同类型(搜索,图形,贪心等) 的常见高效率应用场景. 同时也包含大量可视化例子帮助读者更好得理解其中原理.
- [查尔斯佩茨奥尔德 - 编码:计算机硬件与软件隐藏语言](https://www.amazon.com/Code-Language-Computer-Hardware-Software/dp/0735611319)
在开始 C++研究之前,建议先阅读这本书。它提供了一个简单易懂的关于电脑如何工作的解释,避免复杂技术或理论方面。此书介绍的概念是基础性质,并将在未来保持相关性。它还有助于您更好地理解后来 C++基本思想。这本书作为上一本深入探讨电脑运作方式补充资料
- [阿迪塔亚巴加瓦 - 理解数据结构:用 Python 描述](https://www.ituring.com.cn/book/tupubarticle/19709)
该书对初学者介绍了常见数据结构(数组、链表、栈等)和排序方法(选择排序、归并排序等),同时使用 Python 代码进行实现演示,并且每个章节都附带习题,适合自主练习。
- [Aditya Bhargava - Grokking Algorithms: An Illustrated Guide for Programmers and Other Curious People](https://www.amazon.com/Grokking-Algorithms-Illustrated-Python-Paperback/dp/B08K3T2YJN/ref=sr_1_4?dchild=1&keywords=grokking+algorithms&qid=1627589477&s=books&sr=1-4)
该书为初学者提供了通俗易懂地介绍计算机科学中各种不同类型 (搜索,图形,贪心等) 的常见高效率应用场景。同时也包含大量可视化例子帮助读者更好得理解其中原理。
## :pencil: C++
- [Stephen Prata - C++ Primer Plus](https://www.amazon.com/Primer-Plus-6th-Developers-Library/dp/0321776402)
这本书是C++世界中刚开始学习的人们的绝佳起点。无需先前知识即可入门。该书还包括一系列练习可以帮助您获得实践经验和更深入地理解C++基础知识。
这本书是 C++世界中刚开始学习的人们的绝佳起点。无需先前知识即可入门。该书还包括一系列练习,可以帮助您获得实践经验和更深入地理解 C++基础知识。
- [Stanley Lippman - C++ Primer](https://www.amazon.com/Primer-5th-Stanley-B-Lippman/dp/0321714113)
这本书是上一本书的很好补充。建议与Prata的书并行使用并找到两者之间的平衡因为信息呈现方式不同。混合来自两本书的信息将有助于更好地理解语言的各个主题和方面。
这本书是上一本书的很好补充。建议与 Prata 的书并行使用,并找到两者之间的平衡,因为信息呈现方式不同。混合来自两本书的信息将有助于更好地理解语言的各个主题和方面。
- [Andrew Koenig - Accelerated C++: Practical Programming by Example](https://www.amazon.com/Accelerated-C-Practical-Programming-Example/dp/020170353X)
@@ -33,10 +32,10 @@
## :electric_plug: 硬技能
-[MSDN] (https://docs.microsoft.com/en-us/cpp/build/vscpp-step0-installation?view=msvc160)
- [MSDN](https://docs.microsoft.com/en-us/cpp/build/vscpp-step0-installation?view=msvc160)
如果你刚开始学习编程, 建议在Microsoft Visual Studio社区版IDE 中进行实践和做练习. 它目前是针对初学者最友好易用性较高 IDE 之一, 而且完全免费!这将使您专注于语言而不被开发环境所困扰. MSDN 上提供了一个有用指南, 解释如何安装Visual Studio、创建第一个控制台项目以及实现第一个应用程序.
如果你刚开始学习编程建议在 Microsoft Visual Studio社区版IDE 中进行实践和做练习它目前是针对初学者最友好易用性较高 IDE 之一而且完全免费!这将使您专注于语言而不被开发环境所困扰MSDN 上提供了一个有用指南解释如何安装 Visual Studio、创建第一个控制台项目以及实现第一个应用程序
---
[**返回**]Overview.md| [**回到首页**]../../README.md
[**返回**](Overview.md) | [**回到首页**](../../README.md)

View File

@@ -2,7 +2,7 @@
## :pencil: C++
- 对于高级学生没有特定的书籍推荐。在这个层次上假设您已经对C++的基础知识有很好的理解。唯一的挑战是要了解C++生态系统中最新标准、新功能和工具。
- 对于高级学生,没有特定的书籍推荐。在这个层次上,假设您已经对 C++的基础知识有很好的理解。唯一的挑战是要了解 C++生态系统中最新标准、新功能和工具。
## :muscle: 团队管理
@@ -18,32 +18,31 @@
本书被认为是项目管理中不可或缺之物,并侧重于导致项目失败的错误。虽然部分过时,但对新手来说是一个避免犯常见错误良好起点。
-[Tom DeMarco - 死线:关于项目管理小说](https://www.amazon.com/Deadline-Novel-about-project-management-ebook/dp/B006MN4RAS)
- [Tom DeMarco - 死线:关于项目管理小说](https://www.amazon.com/Deadline-Novel-about-project-management-ebook/dp/B006MN4RAS)
这本小说讲述了一个经理在项目管理中所遇到日常体验, 是非常有用因为它以艺术形式传达了一个经理每天都会面临各种各样挑战性情况它全面展示了一个经理每天都会遇到各种挑战性情况。
-[Daniel Kahneman - 快思慢想]https://www.amazon.com/thinking-fast-and-slow-daniel-kahneman/dp /0374533555
这本小说讲述了一个经理在项目管理中所遇到日常体验是非常有用因为它以艺术形式传达了一个经理每天都会面临各种各样挑战性情况它全面展示了一个经理每天都会遇到各种挑战性情况。
关于人类思维逻辑谬误 的 经典著作必读. 它有助于通过考虑人类思维中存在认知偏差和扭曲来更加合乎逻辑地进行决策制定, 这是专业从事重大决策制定涉及到必备技能. 如果觉得这本书枯燥无味,则可以寻找其他探讨认知偏差主题 的 资料 。
- [Daniel Kahneman - 快思慢想](https://www.amazon.com/thinking-fast-and-slow-daniel-kahneman/dp/0374533555)
关于人类思维逻辑谬误 的 经典著作必读。它有助于通过考虑人类思维中存在认知偏差和扭曲来更加合乎逻辑地进行决策制定,这是专业从事重大决策制定涉及到必备技能。如果觉得这本书枯燥无味,则可以寻找其他探讨认知偏差主题 的 资料。
## :clipboard: 需求和软件架构
- [Karl Wiegers - 软件需求](https://www.amazon.com/Software-Requirements-Developer-Best-Practices/dp/0735679665)
- [Karl Wiegers - 软件需求](https://www.amazon.com/Software-Requirements-Developer-Best-Practices/dp/0735679665)
这本书是一个优秀的资源,适用于任何参与收集和完善软件需求过程的人。它提供了如何有效地与经理、客户和开发人员沟通以收集要求,并将抽象的想法转化为具有明确定义限制的具体技术解决方案的指导。无论您是新手还是经验丰富的从业者,这本书都将是一份有价值的资源。
- [Len Bass, Paul Clements, Rick Kazman - 实践中的软件架构](https://www.amazon.com/Software-Architecture-Practice-SEI-Engineering/dp/0136886094)
- [Len Bass, Paul Clements, Rick Kazman - 实践中的软件架构](https://www.amazon.com/Software-Architecture-Practice-SEI-Engineering/dp/0136886094)
一部关于软件设计中基础架构方法论方面工作经典著作,包含大型软件系统建设所需使用到各种传统架构模式及技巧。
- [Mark Richards, Neal Ford - 软件架构基础:工程方法](https://www.amazon.com/Fundamentals-Software-Architecture-comprehensive-characteristics/dp/1492043451)
- [Mark Richards, Neal Ford - 软件架构基础:工程方法](https://www.amazon.com/Fundamentals-Software-Architecture-comprehensive-characteristics/dp/1492043451)
该书概述了软件设计基本概念,并侧重于工程原则。它涵盖了诸如系统组成部分可靠性、可重复性和可预测性等主题,并提供了一种从工程角度看待软件设计问题并进行处理方式。
- [Martin Fowler - 企业应用程序体系结构模式](https://www.amazon.com/Patterns-enterprise-application-Martin-Fowler/dp/B0000YSHTD/ref=sr_1_2?dchild=1&keywords=martin+fowler&qid=1627389477&s=books&sr=1-
2)
这本书全面介绍了不同建立公司系统所采取不同类型体系结构方法。 它涵盖广泛应用领域,从金融交易到文档管理,并旨在适用于各种复杂度和焦点范围内系统。无论您是否是经验丰富的软件工程师或刚开始进入该领域,这本书都可以成为创建强大而可扩展公司系统时非常有价值 的资源。
- [Chris Richardson - 微服务模式] (https://www.amazon.com/Microservices-Patterns-examples-Chris-Richardson/dp/1617294543)
对于那些想学习微服务体系结 构以及正在寻找建立可扩展且易维护系统方式 的开发人员和架 构师来说,这本书会很有用 。该书提供实际见解 和现实世界示例 ,以帮助读者理解如何 设计、 构建 和部署 基于微服务 的 系统 。无论你刚开始学习这个体系结 构 方法还 是想加深已有知识 这 本 书 都 可以 提供 宝贵 指 导 和 最佳 实 践 帮助 您 在项目 中 取得 成 功。
- [Martin Fowler - 企业应用程序体系结构模式](https://www.amazon.com/Patterns-enterprise-application-Martin-Fowler/dp/B0000YSHTD/ref=sr_1_2?dchild=1&keywords=martin+fowler&qid=1627389477&s=books&sr=1-2)
这本书全面介绍了不同建立公司系统所采取不同类型体系结构方法。它涵盖广泛应用领域,从金融交易到文档管理,并旨在适用于各种复杂度和焦点范围内系统。无论您是否是经验丰富的软件工程师或刚开始进入该领域,这本书都可以成为创建强大而可扩展公司系统时非常有价值 的资源。
- [Chris Richardson - 微服务模式](https://www.amazon.com/Microservices-Patterns-examples-Chris-Richardson/dp/1617294543)
对于那些想学习微服务体系结构以及正在寻找建立可扩展且易维护系统方式的开发人员和架构师来说,这本书会很有用。该书提供实际见解和现实世界示例,以帮助读者理解如何设计、构建和部署基于微服务的系统。无论你刚开始学习这个体系结构方法还是想加深已有知识,这本书都可以提供宝贵指导和最佳实践,帮助您在项目中取得成功。
---
[**返回**]Overview.md| [**回到主页**]../../README.md
[**返回**](Overview.md) | [**回到主页**](../../README.md)

View File

@@ -32,7 +32,7 @@
## :star: 其他有趣的仓库
- [现代C++语言和库特性速查表](https://github.com/AnthonyCalandra/modern-cpp-features)
- [现代 C++语言和库特性速查表](https://github.com/AnthonyCalandra/modern-cpp-features)
- [C++的库和框架集合](https://github.com/fffaraz/awesome-cpp)
---

View File

@@ -1,18 +1,19 @@
# :space_invader: C++ - 它并不是火箭科学
现代C ++比通常认为的要简单得多。这种语言经过多年的发展,已经具备编写安全高效代码的能力。通过最新标准,无需担心内存泄漏问题。编译器也变得更加智能化,对您的代码执行大量优化以提供最佳性能。但是,仍然可以通过手动调整和技巧来优化代码。
现代 C++ 比通常认为的要简单得多。这种语言经过多年的发展,已经具备编写安全高效代码的能力。通过最新标准,无需担心内存泄漏问题。编译器也变得更加智能化,对您的代码执行大量优化以提供最佳性能。但是,仍然可以通过手动调整和技巧来优化代码。
该语言主要缺点是缺乏标准软件包管理器。尽管有几个产品旨在填补这一空白,但迄今为止没有成功。
此外C ++ 遭受了自己范式“开发人员不支付他们不使用的内容”的影响,在实践中商业软件开发人员很少关注依赖项,导致相反情况出现:每次需要依赖项时都必须付费 。这会在项目构建期间产生“有趣”的副作用。尽管如此,这个问题也正在逐渐解决。
此外C++ 遭受了自己范式“开发人员不支付他们不使用的内容”的影响,在实践中商业软件开发人员很少关注依赖项,导致相反情况出现:每次需要依赖项时都必须付费。这会在项目构建期间产生“有趣”的副作用。尽管如此,这个问题也正在逐渐解决。
要开始学习C ++ ,需要基本了解以下内容:
- 算术
- 布尔代数
- 绘制流程图
- 不同数字系统中数字表示法
要开始学习 C++ ,需要基本了解以下内容:
尽管历史悠久现代C ++ 比以前简单得多。
* 算术
* 布尔代数
* 绘制流程图
* 不同数字系统中数字表示法
尽管历史悠久,现代 C ++ 比以前简单得多。
别害怕去学它吧!祝你好运!:dizzy:

View File

@@ -1,4 +1,4 @@
# :yum: 初级C++
# :yum: 初级 C++
## :question: 它是谁?
@@ -11,22 +11,22 @@
- 能够阅读和理解其他开发者编写的代码
- 能够使用调试器或日志数据搜索并修复错误
- 能够为代码编写测试
- 具备Git基础知识和实际操作经验
- 具备 Git 基础知识和实际操作经验
## :bust_in_silhouette: 期望具备哪些通用技能?
- 快速学习能力
- 独立在互联网、书籍等资源上查找信息的能力
- 及时适当地向同事提问的能力
- 及时适当地向同事提问的能力
- 在团队环境中有效工作的能力
## :eyes: 提示与建议
- 尽量找到公司内热情洋溢、积极进取的小组,并加入其中,他们可以成为你获取知识和经验的来源。
- 不要犹豫,向更有经验的同事提问。没有愚蠢问题,只有不好回答。
- 不要过于沉迷于一个任务而耗费过长时间。如果尝试多次后仍无法取得进展,请立即寻求同事帮助。他们期望任务在合理时间内完成。你主要目标是解决问题,而不是给团队制造问题。
- 面对困难,在向导师寻求指导之前,请自己想出几种潜在解决方案。然后您导师可以调整或改善您提供 的解决方案。
- 初级开发人员常常会陷入认为撰写更多代码就意味着成为更好程序员这一误区。不要犯这个错误!你所写越多代码,则出错机率越大;最好将代码以便于六个月后再次返回时快速了解其功能方式进行编写 。优秀程序员不是那些撰写大量代码但毫无头绪地挥舞剑刃,而应像武士一样精确高效地交付打击。
- 尽量找到公司内热情洋溢、积极进取的小组,并加入其中,他们可以成为你获取知识和经验的来源。
- 不要犹豫,向更有经验的同事提问。没有愚蠢问题,只有不好回答。
- 不要过于沉迷于一个任务而耗费过长时间。如果尝试多次后仍无法取得进展,请立即寻求同事帮助。他们期望任务在合理时间内完成。你主要目标是解决问题,而不是给团队制造问题。
- 面对困难,在向导师寻求指导之前,请自己想出几种潜在解决方案。然后您导师可以调整或改善您提供 的解决方案。
- 初级开发人员常常会陷入认为撰写更多代码就意味着成为更好程序员这一误区。不要犯这个错误!你所写越多代码,则出错机率越大;最好将代码以便于六个月后再次返回时快速了解其功能方式进行编写。优秀程序员不是那些撰写大量代码但毫无头绪地挥舞剑刃,而应像武士一样精确高效地交付打击。
---

View File

@@ -13,11 +13,11 @@
- 编写可读性强、可扩展性好、易于维护的代码。
- 熟悉设计模式和原则,并能做出技术决策。
- 清楚地了解 C++ 的技术背景,包括:
- 代码编写过程(如使用 IDE、文本编辑器和遵循最佳实践
- 源代码和产品存储(如使用版本控制系统和包管理器)
- 编译(编译器、构建系统和库)
- 测试(测试框架和策略)
- 发货/部署以及在目标系统上执行。
- 代码编写过程(如使用 IDE、文本编辑器和遵循最佳实践
- 源代码和产品存储(如使用版本控制系统和包管理器)
- 编译(编译器、构建系统和库)
- 测试(测试框架和策略)
- 发货/部署以及在目标系统上执行。
- 具有计算机科学基础知识,包括数据结构、图形、有限状态机和算法。
## :bust_in_silhouette: 期望具备的通用技能
@@ -39,8 +39,8 @@
### :arrow_forward: 经验
许多中级开发者陷入了成为某项技术、框架、设计模式或方法论“铁粉”的陷阱中 。在处理项目任务时更加务实非常重要 ,不能只是试图采纳最新思路来添加简历上 的 另一项 技 能中间角色可能导致过度设计或频繁更改框架。
如果认为库或框架对项目必需,则最好先与资深工程师或首席工程师进行讨论建议创建一个“概念验证”, 在其中测试所有假设后再添加新依赖项不要试图背着团队去做这件事 ,因为它可能会导致增加维护 成本 和未预料到 的 后果
许多中级开发者陷入了成为某项技术、框架、设计模式或方法论“铁粉”的陷阱中。在处理项目任务时更加务实非常重要,不能只是试图采纳最新思路来添加简历上 的 另一项 技 能中间角色可能导致过度设计或频繁更改框架。
如果认为库或框架对项目必需,则最好先与资深工程师或首席工程师进行讨论建议创建一个“概念验证”,在其中测试所有假设后再添加新依赖项不要试图背着团队去做这件事,因为它可能会导致增加维护 成本 和未预料到 的 后果。
---

View File

@@ -2,20 +2,21 @@
> 分级是一种根据开发人员的技能和经验进行分类的方法。通过分级,可以了解如何区分任务的难度以及处理它们所需的预期技能集。
现在,您可以遇到以下常见的评分方法。 可以标记以下级别:
- 初级;
- 中间;
现在,您可以遇到以下常见的评分方法。可以标记以下级别:
- 初级
- 中间
- 高级。
每个公司都有自己对开发人员评估和不同等级所声明的技能和责任视野。通常会遇到以下情况:您可能会在一家公司晋升为高级角色,但在另一家公司中被评估为中层开发人员。尽管如此,仍然可以针对每个等级引入共同期望。我们将使用先前描述过程来描述每个等级。
**示例:** 您可以查看此网站以了解不同公司中关于定位系统知识:[levels.fyi](https://www.levels.fyi/)
![](https://github.com/Salmer/CppDeveloperRoadmap/blob/main/Russian/Grades/Source/GradeTable.PNG?raw=true "GradeTable")
![定位](https://github.com/Salmer/CppDeveloperRoadmap/blob/main/Russian/Grades/Source/GradeTable.PNG?raw=true "GradeTable")
## 级别说明
您可以阅读这些文章来了解每个水平及其公共期望:
- :alien: [Pre-Junior C++](PreJunior.md)
- :yum: [Junior C++](Junior.md)
- :sunglasses: [Middle C++](Middle.md)

View File

@@ -3,6 +3,7 @@
## :question: 它是谁?
它是一个熟悉语言语法并能够编写简单程序而不使用第三方库的人。该程序执行简单的过程,例如:
- 算术运算
- 文件操作:读取或写入
- 等待键盘输入
@@ -22,21 +23,22 @@
## :bust_in_silhouette: 期望具备哪些通用技能?
- 学习并获取新知识的愿望
- 解决遇到问题的愿望
- 使用搜索引擎或相关文献制定查询以找到问题解决方案的能力
- 学习并获取新知识的愿望
- 解决遇到问题的愿望
- 使用搜索引擎或相关文献制定查询以找到问题解决方案的能力
## :eyes: 提示与建议
### :arrow_forward: 学习
- 没有一种方法可以帮助您在一天、一周或一个月内学会C ++。要做好长时间自我指导学习各种材料准备,在你准备好通过面试并获得第一个工作机会之前需要这样做。
- 如果发现自己不理解某个主题,请寻找替代资源。
- 只有实践才能让你精通C ++!如果没有经常进行编码,大部分所读所听都将被遗忘。
- 不要试图编写完美代码。您最初的目标是编写可正常工作且符合要求的代码。您需要学会如何与计算机交互,这类似于学习外语。起初,你可能说话不清楚,但随着技能提高,你将更好地理解语法、扩展词汇量等等
- 不要立即尝试处理庞大问题(例如创建自己游戏)。刚开始时, 您可能缺少处理任务所需知识和经验, 这种方法很容易变得令人沮丧,并对自己及其技能产生失望感, 导致放弃教育. 最好从简单到复杂逐步挑战自己,并逐渐增加困难任务来提高水平.
    
- 没有一种方法可以帮助您在一天、一周或一个月内学会 C ++。要做好长时间自我指导学习各种材料准备,在你准备好通过面试并获得第一个工作机会之前需要这样做。
- 如果发现自己不理解某个主题,请寻找替代资源。
- 只有实践才能让你精通 C ++!如果没有经常进行编码,大部分所读所听都将被遗忘。
- 不要试图编写完美代码。您最初的目标是编写可正常工作且符合要求的代码。您需要学会如何与计算机交互,这类似于学习外语。起初,你可能说话不清楚,但随着技能提高,你将更好地理解语法、扩展词汇量等等。
- 不要立即尝试处理庞大问题(例如创建自己游戏)。刚开始时您可能缺少处理任务所需知识和经验这种方法很容易变得令人沮丧,并对自己及其技能产生失望感导致放弃教育最好从简单到复杂逐步挑战自己,并逐渐增加困难任务来提高水平
### :arrow_forward: 英语语言
- 在英语中寻找解决方案更容易,但如果你的英语水平不够强,请不要过于勉强自己。这可能会很快导致灰心丧气。在开始阶段,你遇到的大多数问题都可以用母语解决。
- 如果你觉得自己的英语水平还不够好,可以通过更有趣的方式来提高:看电视剧、玩视频游戏、读小说或者阅读感兴趣的新闻媒体或文章。几个月后,你应该能够提高自己的英文理解能力。

View File

@@ -1,4 +1,4 @@
# :smiling_imp: 高级C++
# :smiling_imp: 高级 C++
## :question: 它是谁?
@@ -19,7 +19,7 @@
## :eyes: 提示和建议
根据公司特定情况及个人目标,在您选择的专业领域内获取最新技术和技能(例如数学、物理等专门领域 - 技术专家之路),或在管理和人际互动领域(如技术主管、团队负责人、项目经理等)寻找进一步职业发展道路。明智地选择吧. 🙂
根据公司特定情况及个人目标,在您选择的专业领域内获取最新技术和技能(例如数学、物理等专门领域 - 技术专家之路),或在管理和人际互动领域(如技术主管、团队负责人、项目经理等)寻找进一步职业发展道路。明智地选择吧🙂
---

View File

@@ -1,7 +1,7 @@
# 如何查看和修改GraphML格式的路线图
# 如何查看和修改 GraphML 格式的路线图
GraphML是一种基于XML的图形文件格式。许多应用程序都支持它进行查看。
GraphML 是一种基于 XML 的图形文件格式。许多应用程序都支持它进行查看。
例如,您可以使用[yEd](https://www.yworks.com/products/yed)来查看graphML文件并根据需要进行修改。
例如,您可以使用[yEd](https://www.yworks.com/products/yed)来查看 graphML 文件并根据需要进行修改。
![](./example.png)
![示例](./example.png)

View File

@@ -4,29 +4,29 @@
## :question: 如何学习新的 C++ 11/14/17/20 标准?
初学者不应该在旅途开始时过分关注标准。推荐从[初级列表](Books/PreJunior.md)中挑选书籍并学习基础知识。现代初学者书籍通常包含有限的关于C++11和更新标准功能的信息。一开始最好不要专注于新语言标准。
初学者不应该在旅途开始时过分关注标准。推荐从[初级列表](Books/PreJunior.md)中挑选书籍并学习基础知识。现代初学者书籍通常包含有限的关于 C++11 和更新标准功能的信息。一开始最好不要专注于新语言标准。
重要的是理解现代标准主要集中在修复问题、提供语法糖和引入新功能上的原因。修复问题和提供语法糖都很简单;引入新构造来纠正旧标准中存在问题,并且引入新抽象来简化重复代码。但是,在使用新功能方面则稍微麻烦些。
像其他编程语言一样C++通过吸收计算机科学领域流行思想以及其他编程语言成功特性而进化发展。了解这些构造并根据需要使用它们非常重要但首先必须深入研究由较老版本C ++ 11 / C ++ 14确立的基础知识在大多数现代初级读物中都有描述。”
## :question: 如何了解最新的C++标准特性?
## :question: 如何了解最新的 C++标准特性?
- 在[C++会议](CommunitySources.md)中的演示
- 在[CppReference](https://en.cppreference.com/w/cpp)主页上,您将找到链接到最新功能概述列表页面的链接
- 您可以阅读[Bjarne Stroustrup - A Tour of C++](https://www.amazon.com/Tour-2nd-Depth-Bjarne-Stroustrup/dp/0134997832)这本书。定期检查该书以获取更新因为它会随着每个新版本的C ++标准进行修订。
- 您可以阅读[Bjarne Stroustrup - A Tour of C++](https://www.amazon.com/Tour-2nd-Depth-Bjarne-Stroustrup/dp/0134997832)这本书。定期检查该书以获取更新,因为它会随着每个新版本的 C ++标准进行修订。
- 专业论坛/聊天/讨论等。
- 社区YouTube上的概述视频
- [现代C ++语言和库功能速查表]https://github.com/AnthonyCalandra/modern-cpp-feature
- 社区 YouTube 上的概述视频
- [现代 C ++语言和库功能速查表]https://github.com/AnthonyCalandra/modern-cpp-feature
## :eyes: 培训建议
- 以自己的节奏学习,无论年龄如何!不要被“我从出生时就是程序员”的故事所吓倒。大多数这些故事都是 [幸存者偏差]https://en.wikipedia.org/wiki/Survivorship_bias或试图在你身上夸耀他们自己而已。您有能力从头开始学习编程包括C ++
- 以自己的节奏学习,无论年龄如何!不要被“我从出生时就是程序员”的故事所吓倒。大多数这些故事都是 [幸存者偏差](https://en.wikipedia.org/wiki/Survivorship_bias) 或试图在你身上夸耀他们自己而已。您有能力从头开始学习编程,包括 C ++
  面对问题时,建议在互联网上搜索解决方案,因为您遇到的大多数问题可能已经得到解决。如果找不到答案,请尝试用不同方式重新制定请求。如果仍然找不到解决方案,请尝试简化问题。
  重点应放在学习语言而非与工作环境斗争上,因为这可能导致挫败感和动力丧失。
  请记住即使经验丰富的开发人员也会遇到问题并陷入困境,所以休息一下并稍后返回任务是一个好主意。
   找到志同道合、正在开始学习之路的人可以使过程更加愉快, 因为你们可以相互分享知识和经验,并发展团队合作技能. 在今天的世界里, 几乎无处不需要像团队一样工作, 因此培养这些技能很有帮助.
   拥有经验丰富的导师也可能很有价值, 因为他可以指导您避免常见陷阱并节省时间。
   找到志同道合、正在开始学习之路的人可以使过程更加愉快因为你们可以相互分享知识和经验,并发展团队合作技能在今天的世界里几乎无处不需要像团队一样工作因此培养这些技能很有帮助
   拥有经验丰富的导师也可能很有价值因为他可以指导您避免常见陷阱并节省时间。
---

View File

@@ -4,25 +4,25 @@
C++并没有死。
事实上,在各种排名中,如[Tiobe](https://www.tiobe.com/tiobe-index/)指数等它一直位居最受欢迎的编程语言之列。关于C++是“死亡语言”的看法出现在21世纪初期当时该语言标准化委员会处于不活跃状态。然而自从C++11标准以来每三年就会添加新功能和功能性并且有了复苏。尽管如此仍有人坚持认为C ++是一种难以掌握和存在问题的语言的神话和传说, 这往往是因为他们没有跟上这门语言发展或只接触过少量教育内容。
事实上,在各种排名中,如[Tiobe](https://www.tiobe.com/tiobe-index/)指数等,它一直位居最受欢迎的编程语言之列。关于 C++是“死亡语言”的看法出现在 21 世纪初期,当时该语言标准化委员会处于不活跃状态。然而,自从 C++11 标准以来每三年就会添加新功能和功能性,并且有了复苏。尽管如此,仍有人坚持认为 C ++是一种难以掌握和存在问题的语言的神话和传说这往往是因为他们没有跟上这门语言发展或只接触过少量教育内容。
## :question: 真正的程序员使用Linux/Vim/gcc学习C++
如果您对所提到的组合不熟悉则建议首先专注于学习C ++基础知识。建议使用Microsoft Visual Studio IDE开发您的第一个应用程序。有关更多信息请参见[PreJunior Books](Books/PreJunior.md)。
如果您对所提到的组合不熟悉,则建议首先专注于学习 C ++基础知识。建议使用 Microsoft Visual Studio IDE 开发您的第一个应用程序。有关更多信息,请参见[PreJunior Books](Books/PreJunior.md)。
走具有挑战性的道路可能看起来很酷但创建一个使用Linux、VimGCC创建“Hello World”程序所需信息量非常大并且可能导致早期挫败感并对整个编程产生幻灭感。试着遵循从简单到逐渐增加复杂度的路径。就像新手在第一次锻炼时不应该试图举起最重的重量一样在学习中也适用同样规则. 一旦你熟悉了这门语言, 就可以尝试使用Linux进行开发. 但那完全是另外一个故事...
走具有挑战性的道路可能看起来很酷,但创建一个使用 Linux、VimGCC 创建“Hello World”程序所需信息量非常大并且可能导致早期挫败感并对整个编程产生幻灭感。试着遵循从简单到逐渐增加复杂度的路径。就像新手在第一次锻炼时不应该试图举起最重的重量一样在学习中也适用同样规则一旦你熟悉了这门语言就可以尝试使用 Linux 进行开发但那完全是另外一个故事...
## :question: 在学习C++之前最好先掌握C/汇编语言等
## :question: 在学习 C++之前最好先掌握 C/汇编语言等
不,不是这样的!
这种说法存在两种普遍情况过去大学里教授C++就是这么做的而“老一辈”的成员也经历了类似的道路。现代C++并不需要如此具有挑战性的方法。该语言自给自足,可以在没有任何背景知识的情况下学习。更可能的是通过“从C到C ++” 的方式来学习 C ++ 会导致混淆和想要以“带类”的方式编写 C ++。
这种说法存在两种普遍情况:过去大学里教授 C++就是这么做的,而“老一辈”的成员也经历了类似的道路。现代 C++并不需要如此具有挑战性的方法。该语言自给自足,可以在没有任何背景知识的情况下学习。更可能的是通过“从 C 到 C ++”的方式来学习 C ++ 会导致混淆和想要以“带类”的方式编写 C ++。
## :question: 使用Stroustrup所著书籍来学习C++
## :question: 使用 Stroustrup 所著书籍来学习 C++
一个极其有害的声明,源于那些手中拿着键盘出生或者对其他语言(例如 C、Fortran、Delphi 等)有丰富开发经验然后转向 C++ 的人。
这条建议很可能是由那些在开发其他语言方面拥有丰富经验(如 C、Fortran、Delphi 等)然后转向使用 C ++ 的人提出来的。 Stroustrup 写了《The C++ Programming Language》作为参考书因此必须以适当方式使用它并需要一定程度上对该语言进行了解。相反在[Books](Books/Overview.md)部分查找更好,在那里您将找到适用于所有级别语言熟练度水平的书籍。
这条建议很可能是由那些在开发其他语言方面拥有丰富经验(如 C、Fortran、Delphi 等)然后转向使用 C ++ 的人提出来的。Stroustrup 写了《The C++ Programming Language》作为参考书因此必须以适当方式使用它并需要一定程度上对该语言进行了解。相反在[Books](Books/Overview.md)部分查找更好,在那里您将找到适用于所有级别语言熟练度水平的书籍。
## :question: 只使用标准学习 C++
@@ -42,7 +42,7 @@ C++并没有死。
## :question: C++ 只属于旧技术领域
部分正确但值得注意的是这并不仅适用于C ++ 。任何语言中代码质量主要取决于团队及其先驱者所处技术文化水平而非单纯依靠编程语言本身。由于诸如开发人员技能水平、职业道德和错误估计等人类因素导致产生了大量旧版代码. 如今, 许多项目都采用C ++ 编写, 并且已经连续运作数年, 是公司收入来源 的基础. 在这种情况下,在短时间内进行任何重大变更都很危险. 开发人员在进行更改时会格外小心以避免任何退步. 然而, 不要认为处理旧项目不能帮助您提高技能水平. 实际上, 这些项目可能提供挑战性任务 , 帮助你积累从代码阅读、反向工程、测试、软件架构设计、自动化到需求收集等方面获取丰富经验.
部分正确,但值得注意的是这并不仅适用于 C ++ 。任何语言中代码质量主要取决于团队及其先驱者所处技术文化水平而非单纯依靠编程语言本身。由于诸如开发人员技能水平、职业道德和错误估计等人类因素导致产生了大量旧版代码。如今,许多项目都采用 C ++ 编写并且已经连续运作数年是公司收入来源 的基础在这种情况下,在短时间内进行任何重大变更都很危险开发人员在进行更改时会格外小心以避免任何退步。然而,不要认为处理旧项目不能帮助您提高技能水平实际上这些项目可能提供挑战性任务 , 帮助你积累从代码阅读、反向工程、测试、软件架构设计、自动化到需求收集等方面获取丰富经验
---

View File

@@ -12,52 +12,51 @@
* [基于项目学习 - C++](https://github.com/practical-tutorials/project-based-learning#cc)
该存储库保存了不同编程语言(包括 C++ 的一组小型项目集合,并提供广泛且详细清单。
该存储库保存了不同编程语言(包括 C++)的一组小型项目集合,并提供广泛且详细清单。
* [Programming challenges](https://programming-challenges.jeremyjaydan.dev/) - [PNG image](https://programming-challenges.jeremyjaydan.dev/media/programming-challenges-v4.0.png)
Pet Projects 想法轮盘允许您设置所需复杂性级别并旋转轮盘。旋转结果将随机选择要解决任务:)
## :boom: 宠物- 项 目 列 表
## :boom: 宠物 - 项 目 列 表
### :arrow_forward: 游戏
以下是不包含复杂 AI 或动态世界生成内容但可作为起点实现游戏功能列表 。你可以在进展过程中改善额外功能 。对于图形库 你可以使用易于使用且提供足够特色以创建简单2D2.5D图形接口(使用精灵) 的[SFML] (https://www.sfml-dev.org/) 。如果你想做更多与应用 物理相关方面,则可以从简单引擎如[Box2D] (https://box2d.org/ 开始 ,也可以学习更高级引擎 如[Cocos2D] https:/ /www.cocos.com/en/ 和[Unreal Engine] https://www.unrealengine.com/en-US/。记得遵循“从简单到复杂”的规则 ,先从简单游戏开始 ,然后逐渐增加难度。
- 贪吃蛇
- 俄罗斯方块
- 生命游戏
- 十五数码问题
- 打砖块
- 扫雷
- 2048
- 纸牌接龙
- 蜘蛛纸牌接龙
- 弹球
- 奇才大冒险
- 迷宫
- 面向两个至四个玩家网络游戏:弹球、扑克、国际象棋、海战等
建议阅读以下源代码,其中包含有关 gamedev 各种算法信息 。他们可能对上述任何一个游戏或者你自己构思出来都非常有用:
https // www.redblobgames .com/
http // www.squidi.net/three/
以下是不包含复杂 AI 或动态世界生成内容但可作为起点实现游戏功能列表。你可以在进展过程中改善额外功能。对于图形库,你可以使用易于使用且提供足够特色以创建简单 2D2.5D 图形接口(使用精灵)的[SFML](https://www.sfml-dev.org/) 。如果你想做更多与应用 物理相关方面,则可以从简单引擎如[Box2D](https://box2d.org/) 开始,也可以学习更高级引擎 如[Cocos2D](https:/ /www.cocos.com/en/) 和[Unreal Engine](https://www.unrealengine.com/en-US/)。记得遵循“从简单到复杂”的规则,先从简单游戏开始,然后逐渐增加难度。
* 贪吃蛇
* 俄罗斯方块
* 生命游戏
* 十五数码问题
* 打砖块
* 扫雷
* 2048
* 纸牌接龙
* 蜘蛛纸牌接龙
* 弹球
* 奇才大冒险
* 迷宫
* 面向两个至四个玩家网络游戏:弹球、扑克、国际象棋、海战等
建议阅读以下源代码,其中包含有关 gamedev 各种算法信息。他们可能对上述任何一个游戏或者你自己构思出来都非常有用:
https://www.redblobgames.com/
http://www.squidi.net/three/
---
### :arrow_forward: 应用程序
创建应用程序时从最简单的实现开始例如控制台应用程序。完成每个步骤后设置更复杂的任务例如添加图形界面、使应用程序使用HTTP请求从源请求数据然后将接收到的数据写入/读取到文件/数据库等。始终遵循“由简至繁”的原则。
创建应用程序时,从最简单的实现开始,例如控制台应用程序。完成每个步骤后,设置更复杂的任务,例如添加图形界面、使应用程序使用 HTTP 请求从源请求数据,然后将接收到的数据写入/读取到文件/数据库等。始终遵循“由简至繁”的原则。
以下是一些适合初学者的潜在项目示例:
- 网络聊天(原始套接字或使用[gRPC](https://grpc.io/docs/languages/cpp/quickstart)
- 计算器
- 文件管理器
- 货币转换器
- 从任何Github存储库检索“pull-request”或“issue”列表
- 自动化常规任务,如各种计算和生成表格形式的报告。
* 网络聊天(原始套接字或使用[gRPC](https://grpc.io/docs/languages/cpp/quickstart)
* 计算器
* 文件管理器
* 货币转换器
* 从任何 Github 存储库检索“pull-request”或“issue”列表
* 自动化常规任务,如各种计算和生成表格形式的报告。
---
@@ -65,9 +64,9 @@ Pet Projects 想法轮盘允许您设置所需复杂性级别并旋转轮盘。
以下示例更适合已经学习过或最近学习过基础课程(如线性代数、解析几何、数学分析、物理等)的学生。涉及应用他们所学理论知识的任务可以帮助他们实现两个目标:通过实际应用巩固知识,并练习编程。这条路不限于其他人,但对于学生来说比较容易因为他们对于这些科目有着新鲜记忆。
- 开发一个线性代数库, 包括矩阵, 向量和执行计算。
- 建模各种进程, 如物理和理论力学。
- 实施数字方法, 包括积分, 微分, 近似和插值
* 开发一个线性代数库包括矩阵向量和执行计算。
* 建模各种进程如物理和理论力学。
* 实施数字方法包括积分,微分,近似和插值
---

View File

@@ -1,6 +1,6 @@
# C++ 开发者路线图
C++ 仍然是 [2021年](https://insights.stackoverflow.com/survey/2021#most-popular-technologies-language-prof) 和 [2022年](https://survey.stackoverflow.co/2022/#most-popular-technologies-language-prof) 中最受欢迎的开发语言之一。有很多人想开始学习 C++ 并成为开发者。他们面临着这些问题:“我应该从哪里开始?我应该按照什么顺序学习?我应该读哪些书?”
C++ 仍然是 [2021 ](https://insights.stackoverflow.com/survey/2021#most-popular-technologies-language-prof) 和 [2022 ](https://survey.stackoverflow.co/2022/#most-popular-technologies-language-prof) 中最受欢迎的开发语言之一。有很多人想开始学习 C++ 并成为开发者。他们面临着这些问题:“我应该从哪里开始?我应该按照什么顺序学习?我应该读哪些书?”
我们试图通过提供的路线图来回答这些问题。路线图侧重于大多数项目中常见的通用能力和技能。它旨在帮助那些刚开始教育或经验有限的人士。如果您学习了列出的材料,就可以创建一个更有效的学习计划,而不会被无关信息分心。它将帮助您达到 C++ 在许多商业项目中普遍使用的水平。
@@ -14,7 +14,7 @@ C++ 仍然是 [2021年](https://insights.stackoverflow.com/survey/2021#most-popu
4. :clipboard: [C++ 的应用领域](AreasOfApplication.md)
5. :ghost: [C++ 的神话和传说](Mythbusters.md)
6. :chart_with_upwards_trend: [开发者评级体系概述 ](Grades/Overview.md)
7. :mortar_board: [如何学习? ](HowToStudy.md)
7. :mortar_board: [如何学习](HowToStudy.md)
8. :books: [关于 C++ 的书籍和其他资源](Books/Overview.md)
9. :books: [宠物项目](PetProjects.md)
10. :books: [工具](Tooling.md)
@@ -27,7 +27,7 @@ C++ 仍然是 [2021年](https://insights.stackoverflow.com/survey/2021#most-popu
* :arrow_forward: [Miro](https://miro.com/app/board/o9J_lpap34Q=/)
* :arrow_forward: [GraphML](English/Graph/roadmap.svg)
有关如何查看和编辑graphML文件的说明请参见[此处](English/Graph/README.md)。
有关如何查看和编辑 graphML 文件的说明,请参见[此处](English/Graph/README.md)。
## :key: 许可证和条件
@@ -40,7 +40,7 @@ C++ 仍然是 [2021年](https://insights.stackoverflow.com/survey/2021#most-popu
如果有任何评论、建议或想法,请随时与我们联系。我们非常重视您的支持。
您可以通过Github中的以下渠道之一联系我们
您可以通过 Github 中的以下渠道之一联系我们:
* 如果对存储库内容进行任何建议或修改 - 在[Pull Requests](https://github.com/salmer/CppDeveloperRoadmap/pulls) 中创建新PR
* 如果对存储库内容进行任何建议或修改 - 在[Issues](https://github.com/salmer/CppDeveloperRoadmap/issues)中提交新问题。(不幸的是Miro框架没有历史跟踪器并且无法访问路线图。所有更改都是在审核和批准后手动添加。)
* 如果对存储库内容进行任何建议或修改 - 在[Pull Requests](https://github.com/salmer/CppDeveloperRoadmap/pulls) 中创建新 PR
* 如果对存储库内容进行任何建议或修改 - 在[Issues](https://github.com/salmer/CppDeveloperRoadmap/issues)中提交新问题。(不幸的是Miro 框架没有历史跟踪器并且无法访问路线图。所有更改都是在审核和批准后手动添加。)

View File

@@ -8,7 +8,7 @@ C++ 在许多商业项目中被广泛使用,并在其历史上经历了重大
本路线图旨在解决这些挑战。它创建的想法来自于对无经验 C++ 开发人员候选人进行数论访谈后得出结论:他们都存在基础知识方面共同缺陷和不知道如何及从哪里开始学习该语言等问题。
此路线图也可以对那些已经在个人和工作项目中实践 C++ 的人有所帮助。它可以帮助您确定任何知识空白并加深您对该语言的理解, 从而成为一个高素质专家。
此路线图也可以对那些已经在个人和工作项目中实践 C++ 的人有所帮助。它可以帮助您确定任何知识空白并加深您对该语言的理解从而成为一个高素质专家。
---

View File

@@ -1,20 +1,20 @@
# :mag: 你确定需要学习C++吗?
# :mag: 你确定需要学习 C++吗?
首先要考虑的是为什么想要学习C++
首先要考虑的是:为什么想要学习 C++
这门语言有特定的应用领域在深入学习C++之前,了解它们非常重要。研究和探索这些领域可以更好地理解你所涉及到的内容。以下是一些值得事先进行研究的例子:
这门语言有特定的应用领域,在深入学习 C++之前,了解它们非常重要。研究和探索这些领域可以更好地理解你所涉及到的内容。以下是一些值得事先进行研究的例子:
- 某些开发领域可能与你预期不同。例如,游戏开发可能会面临许多挑战,如加班时间、管理不善以及按工作量付费等情况。
- 你感兴趣的语言可能并不是某个特定领域中最流行的语言。例如在机器学习中Python及其专业库是最常用的。
- 你感兴趣的语言可能并不是某个特定领域中最流行的语言。例如在机器学习中Python 及其专业库是最常用的。
## :question: 我已经知道了C/C#/Java/Python等编程语言我能直接使用C++开始工作吗?
答案既是肯定也是否定 :)
具备计算机科学概念方面基本理解当然会很有帮助比如理解过程式编程、OOP和其他通用知识等。但不能仅依赖于这些概念。初学者最常见的错误就是试图将其他编程语言范式下写出来的代码套用到 C++ 中去。例如, C 开发人员经常以过程化风格编写 C++ 程序或认为 C++ 只是“带类”的 C。
具备计算机科学概念方面基本理解当然会很有帮助比如理解过程式编程、OOP 和其他通用知识等。但不能仅依赖于这些概念。初学者最常见的错误就是试图将其他编程语言范式下写出来的代码套用到 C++ 中去。例如C 开发人员经常以过程化风格编写 C++ 程序或认为 C++ 只是“带类”的 C。
C++ 富含思想和编码方法, 因此建议您以开放心态开始学习该语言. 尽力去理解它背后蕴含着哪些思想, 这将有助于您在工作任务中有效地使用该语言。 其他编程语言方面的知识可以帮助您进行比较并确定它们各自优缺点。
C++ 富含思想和编码方法因此建议您以开放心态开始学习该语言尽力去理解它背后蕴含着哪些思想这将有助于您在工作任务中有效地使用该语言。其他编程语言方面的知识可以帮助您进行比较并确定它们各自优缺点。
---
[**返回主页**](README.md)
[**返回主页**](README.md)

View File

@@ -6,58 +6,54 @@
* :arrow_forward: **Visual Studio Code**
网址https://code.visualstudio.com/
价格:免费
网址https://code.visualstudio.com/
价格:免费
提供强大而高效的文本文件和源代码编辑器。它拥有丰富的扩展库,可根据个人喜好进行定制化设置。还可以配置为与源代码一起使用,轻松编译、运行和调试您的代码。此外,它还拥有一个强大搜索引擎来查找文件和文件夹,在处理大型项目时更容易搜索、阅读和操作。
* :arrow_forward: **Notepad++**
网址https://notepad-plus-plus.org/
网址https://notepad-plus-plus.org/
价格:免费
轻量级文本文件和源代码编辑器。支持常见编程语言语法高亮显示功能。相比于 Visual Studio Code ,它更方便快速打开和查看文件,并且由于其轻量级设计,在处理大量文本文件时非常舒适。
轻量级文本文件和源代码编辑器。支持常见编程语言语法高亮显示功能。相比于 Visual Studio Code它更方便快速打开和查看文件并且由于其轻量级设计在处理大量文本文件时非常舒适。
## :open_file_folder: IDE集成开发环境
* :arrow_forward: **Microsoft Visual Studio IDE**
网址https://visualstudio.microsoft.com
网址https://visualstudio.microsoft.com
价格:社区版免费
来自 Microsoft 的集成开发环境IDE提供了一套全面的工具包含各种程序设计语言以及跨平台开发所需要用到得编码器、编译器、调试器以及分析仪等等 。对初学者来说是一个很好选择, 因为其拥有友好的界面,并且初始状态下不需要进行过多的自定义设置。
来自 Microsoft 的集成开发环境IDE提供了一套全面的工具包含各种程序设计语言以及跨平台开发所需要用到得编码器、编译器、调试器以及分析仪等等。对初学者来说是一个很好选择因为其拥有友好的界面,并且初始状态下不需要进行过多的自定义设置。
* :arrow_forward: **Qt Creator IDE**
网址https://www.qt.io/product/development-tools
网址https://www.qt.io/product/development-tools
价格:开放源码项目免费(详细信息请参考 [Qt Open Source](https://www.qt.io/download-open-source?hsCtaTracking=9f6a2170-a938-42df-a8e2-a9f0b1d6cdce%7C6cb0de4f-9bb5-4778-ab02-bfb62735f3e5)
价格 :开放源码项目免费 (详细信息请参考 [Qt Open Source](https://www.qt.io/download-open-source?hsCtaTracking=9f6a2170-a938-42df-a8e2-a9f0b1d6cdce%7C6cb0de4f-9bb5-4778-ab02-bfb62735f3e5)
最初 Qt Creator 是作为 C++ 应用程序图形界面开发 IDE 而定位。随着时间推移,框架已经拥有了众多功能并演变成跨平台应用程序的综合生态系统。它提供了广泛基础库原件以满足各种需求,如网络连接,图形接口,数据库操作和处理像图片或文本格式之类流行格式。如今 Qt Creator 成为 Visual Studio 的竞争对手,并特别受到创建适用于各种 Linux 发行版应用程序的开发人员的欢迎。
最初 Qt Creator 是作为 C++ 应用程序图形界面开发IDE而定位. 随着时间推移, 框架已经拥有了众多功能并演变成跨平台应用程序的综合生态系统。 它提供了广泛基础库原件以满足各种需求, 如网络连接, 图形接口, 数据库操作和处理像图片或文本格式之类流行格式。如今 Qt Creator 成为 Visual Studio 的竞争对手,并特别受到创建适用于各种 Linux 发行版应用程序的开发人员的欢迎。
* :arrow_forward: **Eclipse IDE**
Eclipse 是一个功能强大的跨平台开发环境但也相当沉重。Eclipse 的关键特性之一是其模块化。Eclipse 的哲学是任何开发人员都可以通过连接其他扩展来修改开发环境以适应他们的需求。它被某些编译器开发人员用作专门针对 OS 或微控制器(例如 QNX 实时操作系统Red-Hat Linux 等)的基础。
* :arrow_forward: **Eclipse IDE**
Eclipse是一个功能强大跨平台开发环境,但也相当沉重。 Eclipse的关键特性之一是其模块化。 Eclipse的哲学是任何开发人员都可以通过连接其他扩展来修改开发环境以适应他们的需求。 它被某些编译器开发人员用作专门针对OS或微控制器例如QNX实时操作系统Red-Hat Linux等的基础
* :arrow_forward: **JetBrains Clion IDE**
Clion是来自JetBrains公司的强大跨平台IDE。与其他IDE一样它提供了全面的工具集方便软件开发并且非常适合C和C++中进行跨平台开发。
* :arrow_forward: **JetBrains Clion IDE**
Clion 是来自 JetBrains 公司的强大跨平台 IDE。与其他 IDE 一样,它提供了全面的工具集,方便软件开发,并且非常适合 C 和 C++中进行跨平台开发
## :flashlight: 扩展
* :arrow_forward: **JetBrains ReSharper C++**
JetBrains ReSharper C++ 是Microsoft Visual Studio 的扩展程序之一, 它增加了高级源代码处理功能, 如扩展代码突出显示和提示、构建项目间依赖关系图、纠正常见错误推荐、调试期间改进信息、改进搜索并导航到项目等等, 可与Visual Assist竞争。
* :arrow_forward: **JetBrains ReSharper C++**
JetBrains ReSharper C++ 是 Microsoft Visual Studio 的扩展程序之一它增加了高级源代码处理功能如扩展代码突出显示和提示、构建项目间依赖关系图、纠正常见错误推荐、调试期间改进信息、改进搜索并导航到项目等等可与 Visual Assist 竞争。
* :arrow_forward: **Visual Assist**
* :arrow_forward: **Visual Assist**
网址https://www.wholetomato.com
网址https://www.wholetomato.com
一个为微软Visual Studio提供额外功能的扩展如增强代码高亮和提示、调试和编码期间增加信息、高级搜索能力以及改进的项目导航。它与JetBrains ReSharper竞争。
一个为微软 Visual Studio 提供额外功能的扩展,如增强代码高亮和提示、调试和编码期间增加信息、高级搜索能力以及改进的项目导航。它与 JetBrains ReSharper 竞争。
* :arrow_forward: **Incredibuild**
* :arrow_forward: **Incredibuild**
Site: https://www.incredibuild.com
网址:https://www.incredibuild.com
这是一个用于分布式编译项目的应用程序/扩展,它将所有开发者工作站合并成一个单一的网络,提供使用数十台机器来组装和编译源代码的可能性。这可以加速大型项目的构建过程。
@@ -65,79 +61,70 @@
* :arrow_forward: **Cmake**
Site: https://cmake.org
价格: 免费
网址:https://cmake.org
价格:免费
一个跨平台的自动化系统,用于从源代码构建应用程序,并生成必要的工件以便在目标平台上进行后续组装。它目前被认为是从源码构建各种库时的标准工具。
* :arrow_forward: **Conan**
网址: https://conan.io
网址https://conan.io
价格:免费
价格: 免费
一个用于组织C++库和框架的软件包管理器和依赖项管理器。它支持在Windows和Linux等各种平台上工作并与CMake和Visual Studio等工具集成。
一个用于组织 C++ 库和框架的软件包管理器和依赖项管理器。它支持在 Windows 和 Linux 等各种平台上工作,并与 CMake 和 Visual Studio 等工具集成。
* :arrow_forward: **Ninja**
网址: https://ninja-build.org
网址https://ninja-build.org
价格:免费
价格: 免费
PC和C++应用程序的项目构建管理器。该管理器的主要优点是快速项目组装。它支持跨平台开发,并与所有流行的编译器兼容。
PC 和 C++应用程序的项目构建管理器。该管理器的主要优点是快速项目组装。它支持跨平台开发,并与所有流行的编译器兼容。
## :mag: Code analyzers
* :arrow_forward: **PVS Studio**
网址: https://pvs-studio.com
网址https://pvs-studio.com
价格30 天免费试用
价格: 30 天免费试用
由PVS-Studio开发的跨平台Windows、Linux、MacOS静态代码分析器。该分析器的主要目标是对源代码进行分析以检测编译器或代码审查期间可能未被发现的各种错误。它有助于减少与语言语法和陷阱相关的错误数量。
由 PVS-Studio 开发的跨平台Windows、Linux、MacOS静态代码分析器。该分析器的主要目标是对源代码进行分析以检测编译器或代码审查期间可能未被发现的各种错误。它有助于减少与语言语法和陷阱相关的错误数量。
* :arrow_forward: **Cpp Check**
网址: https://cppcheck.sourceforge.io
网址https://cppcheck.sourceforge.io
价格:免费
价格: 免费
一个免费的代码分析器可以帮助您捕捉编译器或代码审查期间可能被忽略的源代码中常见错误。它是跨平台的并支持流行的Linux发行版和Windows。
一个免费的代码分析器,可以帮助您捕捉编译器或代码审查期间可能被忽略的源代码中常见错误。它是跨平台的,并支持流行的 Linux 发行版和 Windows。
* :arrow_forward: **Valgrind**
Site: https://www.valgrind.org
Site: https://www.valgrind.org
价格:免费
价格: 免费
一组工具可以帮助您在应用程序运行时调查各种问题例如内存泄漏和性能分析。它与多个Linux发行版兼容。
一组工具,可以帮助您在应用程序运行时调查各种问题,例如内存泄漏和性能分析。它与多个 Linux 发行版兼容。
## :floppy_disk: Git clients
* :arrow_forward: **SmartGit**
网址: https://www.syntevo.com/smartgit/
网址https://www.syntevo.com/smartgit/
价格:开源免费
价格: 开源免费
一个完整的、跨平台的用于处理Git仓库的工具。开箱即用提供以下功能接收和发送对仓库的更改查看更改历史记录文本编辑器以解决冲突等。支持与所有流行的代码托管服务集成如GitHub、BitBucket、GitLab等。
一个完整的、跨平台的用于处理 Git 仓库的工具。开箱即用,提供以下功能:接收和发送对仓库的更改,查看更改历史记录,文本编辑器以解决冲突等。支持与所有流行的代码托管服务集成,如 GitHub、BitBucket、GitLab 等。
* :arrow_forward: **Atlassian SourceTree**
网址: https://www.sourcetreeapp.com/
网址https://www.sourcetreeapp.com/
价格:免费
价格: 免费
一个很好的免费替代品使用图形界面来处理Git。它具有与SmartGit相同的功能唯一不同之处是没有自己的编辑器用于冲突解决。但是可以通过集成Visual Studio Code或任何其他可以比较文件的编辑器轻松解决此问题。在所有其他方面它完全复制了SmartGit的功能跨平台并支持与流行存储库如GitHub、BitBucket、GitLab等集成。"
一个很好的免费替代品,使用图形界面来处理 Git。它具有与 SmartGit 相同的功能,唯一不同之处是没有自己的编辑器用于冲突解决。但是,可以通过集成 Visual Studio Code 或任何其他可以比较文件的编辑器轻松解决此问题。在所有其他方面,它完全复制了 SmartGit 的功能:跨平台,并支持与流行存储库(如 GitHub、BitBucket、GitLab 等)集成。
* :arrow_forward: **Git Kraken**
网址: https://www.gitkraken.com/
网址https://www.gitkraken.com/
价格:开源免费
价格: 开源免费
一款跨平台高效的客户端适用于Windows、Linux和MacOS。它支持与GitHub、Bitbucket和Gitlab集成并具有日常工作所需的所有必要功能如查看更改历史记录、提交和接收更改、在分支之间切换以及内置冲突解决编辑器。"
一款跨平台高效的客户端,适用于 Windows、Linux 和 MacOS。它支持与 GitHub、Bitbucket 和 Gitlab 集成,并具有日常工作所需的所有必要功能,如查看更改历史记录、提交和接收更改、在分支之间切换以及内置冲突解决编辑器。
---