diff --git a/Chinese/Graph/roadmap.svg b/Chinese/Graph/roadmap.svg index 5970255..0dbf798 100644 --- a/Chinese/Graph/roadmap.svg +++ b/Chinese/Graph/roadmap.svg @@ -1,4948 +1,4978 @@ - + - + - + - - + + - + - - C++ developer + + C++ 开发者 - + - - Soft skills + + 软性技能 - + - - Hard skills + + 硬性技能 - - + + - - + + - - At first, some of the skills may seem impossible to - develop. However, we think differently. It is possible to - work on each of the skills. Everything depends on your - desire and internal blocks. Everything is individual, and - it's up to you to decide. :) + + 一开始,有些技能看似没有 + 办法习得或提升。然而,在 + 我们看来,这里所列的每一 + 项技能,都是可以通过练习 + 得以提升的。每个人的学习 + 目的不同,最终成效取决于 + 您个人的愿望和努力 :) - + - + - - Ability to learn + + 学习能力 - + - + - - Manage mistakes + + 管理错误 - + - + - - Thinking + + 思考 - + - + - - Responsibility + + 责任 - + - + - - Manage resources + + 资源管理 - + - + - - Communication + + 交流沟通 - + - + - - Team work + + 团队协作 - + - + - - Emotional intelligence + + 情绪智力(情商) - - + + - - + + - - Understanding the development context + + 理解开发背景 - + - + - - Customer focus + + 以客户为中心 - + - + - - Technology + + 技术 - - + + - - + + - - Trends + + 发展趋势 - + - + - - Empathy + + 共情 - + - + - - Concentration + + 专注 - + - + - - Open-mindedness + + 思想开明 - + - + - - Adaptability + + 适应性 - + - + - - Stress resistance + + 抗压能力 - + - + - - Working in uncertainty + + 在不确定性中工作 - - + + - - + + - - Understanding the distribution of roles in a team + + 理解团队内的角色分工 - + - + - - Support team members + + 支持帮助团队成员 - + - + - - Work in a distributed team + + 在分布式团队中工作 - + - + - - Providing feedback + + 提供意见反馈 - + - + - - Leadership + + 领导力 - - + + - - + + - - Mentoring + + 启导、指导他人 - + - + - - Delegation + + 委派工作 - - + + - - + + - - Assigning and clarifying tasks to employees + + 向员工分配和明确任务 - - + + - - + + - - Planning and goal setting + + 计划并制订目标 - + - + - - Negotiation + + 协商 - - + + - - + + - - English + + 英文能力 - + - + - - Presentation + + 演讲演示 - - + + - - + + - - Written communication skill + + 书面沟通技巧 - + - + - - Networking + + 社交 - + - + - - Ability to listen + + 倾听 - + - + - - Persuasion + + 说服 - - + + - - + + - - Ability to communicate ideas and thoughts within the team + + 团队内部交流创意和想法的能力 - + - + - - Finding compromises + + 寻求妥协 - + - + - - Dispute resolution + + 解决争议 - - + + - - + + - - Providing information to people outside the team + + 向团队以外的人员提供信息的能力 - - + + - - + + - - Time management + + 时间管理 - + - + - - Prioritization + + 管理优先级 - - + + - - + + - - Taking decisions + + 作决定 - - + + - - + + - - Blind typing + + 盲打 - - + + - - + + - - Multitasking + + 多重任务同时进行 - + - + - - Discipline + + 纪律 - + - + - - Persistence + + 坚持 - + - + - - Initiative + + 主动性 - - + + - - + + - - Independence + + 独立 - + - + - - Problem solving + + 解决问题 - + - + - - Logical + + 逻辑性 - + - + - - Critical + + 批判性 - + - + - - Creative + + 创意性 - + - + - - Strategic + + 策略 - + - + - - Systems + + 系统性 - + - + - - Accept criticism + + 接受批评 - + - + - - Notify about mistakes in time + + 出现错误及时通知 - + - + - - Admitting your mistakes + + 承认您的错误 - + - + - - Analyze mistakes + + 分析错误 - + - + - - Ask the right questions + + 提出正确的问题 - + - + - - Experimenting + + 实验实操 - + - + - - Manage knowledge + + 知识管理 - + - + - - Process information + + 信息处理 - - + + - - + + - - Ability to gather, analyze, evaluate - information and make decisions - based on it. + + 收集、分析、评估信息,并据此做出决 + 策的能力。 - + - + - - Reflection + + 反思 - - + + - - + + - - Calmly react to what people say. Most likely that they - only consider their own context when they try to prove - something. This is fine. Evaluate the usefulness of their - point of view. + + 冷静地回应他人的评论。很有 + 可能他人所说的话、试图证明 + 的事情,仅仅基于他们自己的 + 角度,这是可以理解的。请客 + 观地评估他人观点的有用性。 - + - + - - Take challenging tasks in order to develop your skills and - competencies, even when there is not enough - knowledge/experience (skills will develop much faster - through such tasks). The main thing is to distinguish a - really useful complex task that will help you to boost your - skills from a dumb task that requires a scapegoat. + + 主动承担具有挑战性的任务,以发展您的技 + 能和能力,即便此刻您还不具备完全足够的 + 知识或经验(您的技能将会通过此类任务得 + 到快速发展)。关键是要能够区分出:哪些 + 是真正有助于您提升技能的复杂任务,而哪 + 些又是仅仅需要替罪羊的愚蠢的任务。 - + - + - - You should be responsible for your professional development. Don't wait - for the team lead to decide for you what to study. Do not forget that blind - adherence to someone else's plan will sharpen your skills according to - requirements of a particular company. It is better to discuss and build in - your interests into the plan. If this is not done, there is a high risk of getting - irrelevant skills, which will hit career opportunities. But don't overdo it: don't - study absolutely everything or don't passively wait until a development plan - will be created for you. + + 您应该对自己的职业发展负责。 + 不要等待团队领导来决定您要学习什么。请不要忘记,盲 + 目遵循他人安排的计划,只会让您提高某些适用于某特定 + 公司的技能。 + 最好商讨如何将您的个人利益和兴趣也纳入计划之中, + 否则的话,就很有可能将时间花在不相关的技能上,从而 + 影响职业机会。不过切记不要太极端:别不加选择地什么 + 都学,也不要什么都拒绝直到有一个完美的量身定制的学 + 习计划出现。 - - + + - - + + - - Self-organization + + 自组织(Self- + organization) - - + + - - + + - - The ability to provide the amount of information that is - necessary to communicate to people with different - backgrounds. + + 有能力根据各方人员不 + 同的背景,而提供适量 + 、适当的信息,以促进 + 有效的沟通交流。 - + - + - - Conflict solving + + 解决冲突 - - + + - - + + - - If you read this it means you already understand why it is so - important :) - - Usually, it is required at least to read because you would need to - understand technical documentation. But as you move up the career - ladder, you will need to speak and write more confidently in English. + + 如果您阅读本路线图,您大概率已经注 + 意到英文能力有多重要:) + 通常,您至少需要具备英文阅读能力, + 因为您要能够读懂技术文档。不过,随 + 着您在职业阶梯上的步步晋升,您将同 + 时需要更加自信地用英文说和写。 - - + + - - + + - - Look for like-minded people and join/create a community for - experience exchange. + + 寻找志同道合的人,并 + 加入或创建相关社区, + 以进行经验交流。 - + - + - - You should study and observe contemporary trends to be - competitive, as well as being able to adapt to them. + + 您应当研究和观察当代发展趋势,以保 + 持自己的竞争力, 并适应变化。 - - + + - - + + - - Experienced developers should develop management skills and business - communication skills to complete tasks efficiently. It is easier to do if you - have developed emotional intelligence. For a junior developer, the skill is - also useful to better interact with colleagues. + + 经验丰富的开发人员应该培养管理技能 + 和业务沟通技能,以高效地完成任务。 + 如果您有较好的情商,那这就相对更容 + 易做到。 + 对于初级开发人员来说,共情能力在与 + 同事互动中也是非常有用的。 - + - + - - - + + + - + - + - + - + - + - + - + - + - + - - + + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - + + + - + - - - + + + - - + + - - - + + + - + - + - - - + + + - - - + + + - + - - - + + + - - + + - - + + - - 1 step + + 步骤 1 - - + + - + - + - - Basic operations + + 基本运算 - + - + - - Arithmetic operations + + 算术运算 - + - + - - Loops: for/while + + 循环: for/while - + - + - - Logical operations + + 逻辑运算 - + - + - - Bitwise operations + + 位运算 - + - + - - Functions + + 函数 - - + + - - + + - - lambda + + Lambda表达式 - + - + - - Operators + + 运算符 - + - + - - Data types + + 数据类型 - + - + - - Dynamic typing + + 动态类型 - + - + - - Static typing + + 静态类型 - - + + - - + + - - RTTI + + RTTI(运行时类型识别) - + - + - - Pointers & References + + 指针&引用 - + - + - - Codebase structuring + + 代码库结构化 - + - + - - References + + 引用 - + - + - - Memory model + + 内存模型 - - + + - - + + - - Smart pointer + + 智能指针(smart pointer) - + - + - - Raw pointers + + 原始指针 - + - + - - Code splitting into headers/cpp files + + 代码拆分为 headers/cpp 文件 - - + + - - + + - - Scope + + 作用域(Scope) - + - + - - Memory leakage + + 内存泄漏 - - + + - - + + - - Forward declaration + + 前向声明 - - + + - - + + - - unique_ptr + + unique_ptr - - + + - - + + - - shared_ptr + + shared_ptr - + - + - - Lifetime of objects + + 对象生命周期 - + - + - - new/delete operators + + new/delete 运算符 - - + + - - + + - - weak_ptr + + weak_ptr - - + + - - + + - - Namespaces + + 命名空间(Namespace) - - + + - - + + - - The overloading of regular set of operators for - regular or custom types (structures/classes). + + 常规或自定义类型 + (结构/类)的常规运 + 算符的重载。 - - + + - - + + - - To prevent memory leakage problems it is better - to use smart pointers rather than raw pointers. + + 为防止内存泄漏 + 问题,最好使用 + 智能指针而不是 + 原始指针。 - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - - + + - + - + - - + + - - + + - - + + - - - + + + - - - + + + - - - + + + - - + + - - + + - - 2 step + + 步骤 2 - - + + - - + + - - + + - - Structures and classes + + 结构体(Struct)和类(class) - + - + - - Exception handling + + 异常处理 - - + + - - + + - - Overloading of functions + + 函数重载 - - + + - - + + - - Virtual table (vtbl) + + 虚函数表(Virtual table, vtbl) - - + + - - + + - - Object Oriented programming (OOP) + + 面向对象编程 (OOP) - - + + - - + + - - Exceptions + + 异常(Exceptions) - - + + - - + + - - Access violation + + 非法访问(Access violation) - - + + - - + + - - Dynamic polymorphism + + 动态多态(Dynamic polymorphism) - - + + - - + + - - Virtual methods + + 虚函数(Virtual methods) - + - + - - The rule of zero/three/five + + 三/五/零法则 - - + + - - + + - - Static polymorphism + + 静态多态(Static polymorphism) - - + + - - + + - - Multiple inheritance + + 多重继承(Multiple inheritance) - - + + - - + + - - Diamond inheritance + + 钻石继承(Diamond inheritance) - - + + - - + + - - Error codes + + 错误码(Error codes) - - + + - - + + - - It's preferred to avoid multiple inheritance - (excepting abstract classes) to prevent - runtime issues + + 代码中最好避免 + 出现多重继承 + (抽象类除外), + 以防止运行时出 + 现问题 - + - + - - + + - - + + - - + + - - + + - + - - + + - - + + - - + + - - + + - - + + - - - + + + - - + + - - + + - - 3 step + + 步骤 3 - - + + - - + + - - + + - - auto (automatic type deduction) + + 自动类型推导 auto (automatic type deduction) - - + + - - + + - - Language concepts + + 语言概念(Language concepts) - - + + - - + + - - type casting + + 类型转换(type casting) - - + + - - + + - - static_cast + + 静态类型转换(static_cast) - - + + - - + + - - const_cast + + const_cast - - + + - - + + - - dynamic_cast + + 动态类型转换(dynamic_cast) - - + + - - + + - - reinterpret_cast + + reinterpret_cast - - + + - - + + - - Undefined Behavior (UB) + + 未定义行为 (Undefined Behavior,UB) - - + + - - + + - - Argument-dependent lookup (ADL) + + 参数依赖查找(Argument-dependent lookup,ADL) - - + + - - + + - - Macros + + 宏(Macros) - - + + - - + + - - Name mangling + + 名字改写(Name mangling) - - + + - - + + - - Standard library + STL + + 标准程序库+标准模板库(Standard library + STL) - - + + - - + + - - iostream + + 输入输出流(iostream) - - + + - - + + - - Algorithms + + 算法(Algorithms) - - + + - - + + - - Iterators + + 迭代器(Iterators) - - + + - - + + - - Containers + + 容器(Containers) - - + + - - + + - - Date/time + + Date/time - - + + - - + + - - Multithreading + + 多线程(Multithreading) - - + + - - + + - - Some of language constructions have non-declared behavior according to - the ISO standard. In case of any error, it's not possible to predict further - behavior. It depends on a platform environment, runtime context, etc. + + 根据 ISO + 标准,某些语言结构具有未定义行为。 + 如果出现任何错误,则无法预测程序进 + 一步的行为,因为程序此后的行为取决 + 于平台环境、运行时的上下文具体内容等。 - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - + + + - - + + - - + + - - 4 step + + 步骤 4 - - + + - - + + - - + + - - Templates + + 模板(Template) - - + + - - + + - - Variadic templates + + 可变参数模板 (Variadic templates) - - + + - - + + - - The template specialization + + 模板特化(Template specialization) - - + + - - + + - - type traits + + 类型特征(type traits) - + - + - + SFINAE - - + + - - + + - - The full template specialization + + 模板全特化(Full template specialization) - - + + - - + + - - The partial template specialization + + 模板偏特化(Partial template specialization) - - + + - - + + - - RAII + + RAII(资源获取即初始化) - - + + - - + + - - pimpl + + pimpl(指向实现的指针) - - + + - - + + - - Erase-Remove + + Erase-Remove(删除) - - + + - - + + - - Non-Copyable/Non-Moveable + + Non-Copyable (不可复制)/Non-Moveable(不可移动) - - + + - - + + - - Copy and swap + + Copy and swap(复制并交换) - - + + - - + + - - Copy on write + + Copy on write(写时复制) - - + + - - + + - - CRTP + + CRTP(奇异递归模板) - - + + - - + + - - Standards + + 标准(Standards) - + - + - + C++11/14 - + - + - + C++17 - + - + - + C++20 - - + + - - + + - - newest + + 最新版本 - + - + - + C++0x - - + + - - + + - - Idioms + + 惯常用法/设计习语(Idioms) - - + + - - + + - - + + - - + + - - + + - - + + - + - + - + - - + + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - 1 step + + 步骤 1 - - + + - + - + - - Working with source code + + 使用源代码 - + - + - - Text editors + + 文本编辑器 - - + + - - + + - - IDE + + 集成开发环境(IDE) - + - + - - Code editors + + 代码编辑器 - - + + - - + + - - Debugger + + 调试器(Debugger) - + - + - + Linters - - + + - - + + - - Knowledge of features and abilities (shortcuts, tools, plugins) + + 熟悉编辑器的特性和功能范畴(快捷键、工具、插件) - - + + - - + + - - Understanding of debugger messages + + 理解调试器所反馈出的信息 - - + + - - + + - - Debugging symbols + + 调试符号(Debugging symbols) - + - + - + WinDbg - + - + - + GDB - - + + - - + + - - Choose one of the popular IDEs and study it well: - Eclipse, MS Visual Studio, Qt Creator, JetBrains Clion, - XCode, etc. + + 选择一款广受欢迎的IDE, + 并好好研究它、用好它。目前流行 + 的IDE有:Eclipse, MS Visual + Studio, Qt Creator, JetBrains + Clion, XCode等等。 - - + + - - + + - - Study how to use a debugger and all its features + + 学习如何使用调试器,并深入了解 + 调试器所具有的所有功能。 - - + + - - + + - - Choose one of the popular editors and study it well. - For example: Notepad++, Atom, etc. + + 选择一款广受欢迎的编 + 辑器,并好好研究它、 + 用好它。例如:Notepad++, + Atom等。 - - + + - - + + - - The ability to work with a debugger via command line is a not - common skill. It's sufficient to work with it via IDE. For example: - set conditional breakpoints, etc. + + 通过命令行来使用调试器并非 + 一项常规技能。掌握通过IDE来 + 使用调试器的能力就足够了, + 例如通过IDE设置断点,等等。 - - + + - - + + - - Learn about common errors (segfault, out of memory, - access violation) and undefined behavior concept. + + 了解常见错误(段错误 segfault, + 内存溢出 out of memory, + 非法访问 access violation) + 以及未定义行为(undefined + behavior)的概念。 - - + + - - + + - - Choose one of the popular editors and study it well. For - example: Visual Code, Atom, Sublime Text, etc. + + 选择一款广受欢迎的编辑器, + 并好好研究它、用好它。例如: + Visual Code, Atom, Sublime Text + 等等。 - + - - + + - + - - + + - + - + - - + + - - + + - - + + - - + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - + - - 3 step + + 步骤 3 - - + + - - + + - - + + - - Compilers + + 编译器(Compilers) - + - + - - Basic understanding of compilers stages + + 对编译过程的基本了解 - + - + - - Compilation of sources to object files (compilation) + + 将源代码编译为目标文件(compilation) - + - + - - The object files linkage (linking) + + 目标文件链接过程 (linking) - + - + - - Working stages of compilers + + 编译器的编译过程 - + - + - - Features of a particular compiler + + 特定编译器的特性 - - + + - - + + - - Each compiler has its nuances. It's - good to know about them to prevent getting any trap:  - Clang++/LLVM, Intel C++, MSVS C++, GCC, MinGW + + 每个编译器之间有细微的差别。 + 最好对这些差别有所了解,以避免 + 陷入一些陷阱: + Clang++/LLVM,Intel C++, + MSVS C++,GCC,MinGW - - + + - - + + - - The compiler performs several stages of code compilation. - It's good to know about all of them to better understand - compilation issues. Deep knowledge is needed for compiler - creators only. + + 编译器执行代码编译过程的数个阶段。 + 对所有这些阶段进行基本的了解将有助 + 于更好地理解编译中可能出现的问题。 + 不过,只有编译器创建者才需要深入了 + 解编译器知识。 - - + + - + - + - + - - + + - - - + + + - - - + + + - - + + - - + + - - 5 step + + 步骤 5 - - + + - - + + - - + + - - Build systems + + 构建系统(Build systems) - - + + - - + + - - CMake + + CMake - - + + - - + + - - Makefile + + Makefile - - + + - - + + - - ninja + + ninja - - + + - - + + - - Package managers + + 包管理器(Package managers) - - + + - - + + - - vcpkg + + vcpkg - - + + - - + + - - spack + + spack - - + + - - + + - - Conan + + Conan - - + + - - + + - - nuget + + nuget - - + + - - + + - - Libraries + + 库(Library) - + - + - + boost - + - + - + opencv - + - + - + poco - - + + - - + + - - Libraries inclusion + + 引用库(Libraries inclusion) - + - + - + protobuf - + - + - + gRPC - + - + - + fmt - + - + - + pybindll - + - + - + spdlog - + - + - + ranges_v3 - + - + - + tensorflow - + - + - + opencl - - + + - - + + - - Frameworks + + 框架(Frameworks) - + - + - + gtest/gmock - + - + - + Qt - + - + - + catch2 - + - + - + google profiler - + - + - + pytorch c++ - - + + - - + + - - Working - with libraries + + 使用程序库 - - + + - - + + - - Licensing + + 软件授权许可(Licensing) - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - + - - + + - - + + - - 1 step + + 步骤 1 - - + + - + - + - - Computers Science + + 计算机科学 - + - + - - Data structures + + 数据结构 - + - + - - Algorithms + + 算法 - - + + - - + + - - Boolean algebra + + 布尔代数(Boolean algebra) - - + + - - + + - - Finite-state machines + + 有限状态机(Finite-state machines) - - + + - - + + - - It's also good to know how to calculate algorithm complexity - and memory consumption. + + 了解如何计算算法复 + 杂度,和如何计算内 + 存消耗也很有好处。 - + - + - - + + - + - - - + + + - - + + - - + + - - 4 step + + 步骤 4 - - + + - - + + - - + + - - Version control software + + 版本控制软件(Version Control) - - + + - - + + - - Distributed + + 分布式 - - + + - - + + - - Centralized + + 集中式 - - + + - - + + - - SVN + + SVN - - + + - - + + - - git + + git - - + + - - + + - - Mercurial + + Mercurial - + - + - - Best practices + + 最佳实践 - + - + - - Code quality + + 代码质量 - + - + - - Code guidelines + + 代码指南 - - + + - - + + - - Principles of development + + 开发原则 - - + + - - + + - - KISS (Keep It Simple, Stupid) + + KISS (Keep It Simple, Stupid) 保持简约、简单 - - + + - - + + - - DRY (Don't Repeat Yourself) + + DRY (Don't Repeat Yourself) 不要重复你自己(不写重复代码) - - + + - - + + - - YAGNI (You Aren't Gonna Need It) + + YAGNI (You Aren't Gonna Need It) 你不需要它 - - + + - - + + - - APO (Avoid Premature Optimization) + + APO (Avoid Premature Optimization) 避免过早优化 - - + + - - + + - - BDUF (Big Design Up Front) + + BDUF (Big Design Up Front) 前期大型设计 - - + + - - + + - - Composition is preferably than the inheritance + + Composition is preferably than the inheritance 组合优于继承 - - + + - - + + - - Occam's razor + + Occam's razor 奥卡姆剃刀原理(简约法则) - - + + - - + + - - Divide and Conquer + + Divide and Conquer 分治法 - - + + - - + + - - Logging and telemetry + + 记录和遥测(Logging and telemetry) - - + + - - + + - - Code review + + 代码评审(Code review) - - + + - - + + - - Skill to read existing code sources + + 阅读理解现有代码的能力 - - + + - - + + - - Skill to review code + + 评审代码的能力 - - + + - - + + - - Lifecycle stages of a software + + 软件生命周期 - - + + - - + + - - Implementation + + 实现(Implementation) - + - + - - Testing + + 测试 - - + + - - + + - - Maintanance + + 维护 - - + + - - + + - - Versioning + + 版本管理(Versioning) - - + + - - + + - - Unit tests + + 单元测试(Unit tests) - - + + - - + + - - Integration tests + + 集成测试(Integration tests) - - + + - - + + - - Functional tests + + 功能测试(Functional tests) - - + + - - + + - - Performance tests + + 性能测试(Performance tests) - - + + - - + + - - Software architecture and components design + + 软件架构和组件设计 - - + + - - + + - - Components integration + + 组件集成 - - + + - - + + - - Deployment + + 软件部署(Deployment) - - + + - - + + - - Collecting requirements + + 征集要求 - - + + - - + + - - End of a software lifecycle + + 软件生命周期结束 - - + + - - + + - - Code analyzers + + 代码分析器(Code analyzers) - - + + - - + + - - Static analyzers + + 静态分析器(Static analyzers) - - + + - - + + - - Dynamic analyzers + + 动态分析器(Dynamic analyzers) - - + + - - + + - - Profilers + + Profilers - + - + - - C++ core guidelines + + C++ 核心指南 - + - + - - Industrial standards + + 行业标准 - + - + - + MISRA - + - + - + Autosar - + - + - - Command line + + 命令行 - + - + - + batch - + - + - + Powershell - + - + - + bash - - + + - - + + - - CI/CD + + CI/CD(持续集成、持续部署) - - + + - - + + - - Trunk Based Development + + 主干开发(Trunk Based Development) - - + + - - + + - - Zero downtime deployment + + 零停机时间部署(Zero downtime deployment) - - + + - - + + - - Creation of a software deployment package + + 创建软件部署包 - - + + - - + + - - Documentation + + 文档 - - + + - - + + - - Installer package + + 安装包 - - + + - - + + - - Usage of other programming languages + + 其他编程语言的使用 - - + + - - + + - - Language interoperability + + 语言互操作性(Language interoperability) - - + + - - + + - - Naming conventions, tabs vs spaces, etc. + + 命名规则(naming + conventin), tab键 vs + 空格键 space,等等。 - + - + - - To configure automated code formatting verification with one of - the suitable utilities: clang-format, Resharper - code style, - MSVS - code style. + + 用于结合以下任意一种工具来配置自动代码格式验证:clang- + format 代码格式,Resharper - 代码风格,MSVS - 代码风格。 - + - + - + - Scripting - Functional - SQL like @@ -4951,2558 +4981,2551 @@ - - + + - - + + - - Sometimes it's needed to provide an ability to reuse a library written in - a different language from another one. For example: to call C++ - libraries in C#. + + 有时需要具备能够重用由另 + 一种语言编写成的库的能力 + + 例如:在C#中调用C++库。 - - + + - - + + - - Backward compatibility + + 向后兼容(Backward compatibility) - - + + - - + + - - Do not ignore warnings from compiler and static analyzer. - They are your friends, not enemies + + 不要忽略来自编译器或任何代码 + 分析器的警告。 + 他们是你的朋友,而不是敌人。 - + - + - + Microsoft GSL - + - + - - Software design + + 软件设计 - + - + - - Architecture styles + + 软件架构风格 - - + + - - + + - - Component-based + + 基于组件 Component-based - - + + - - + + - - Monolithic application + + 单体式应用程序 Monolithic application - - + + - - + + - - Layered + + 分层模式 Layered - - + + - - + + - - Client-server + + 客户/服务器模式 Client-server - - + + - - + + - - Microservices architecture + + 微服务架构 Microservices architecture - - + + - - + + - - Event-driven + + 事件驱动架构 Event-driven - - + + - - + + - - Plug-ins + + 插件Plug-ins - + - + - + REST - - + + - - + + - - Service-oriented architecture + + 面向服务的架构 Service-oriented architecture - - + + - - + + - - + + - - + + - - + + - + - + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - + - + - + - + - + - + - + - - + + - - + + - - + + - - + + - - + + - - + + - + - + - - - + + + - + - + - - - + + + - - + + - - - + + + - + - + - + - + - - + + - + - + - + - + - + - - + + - - + + - - + + - - 2 step + + 步骤 2 - - + + - - + + - - + + - - Design Patters (GoF) + + 设计模式 Design Patters (GoF) - - + + - - + + - - Behavioral + + 行为模式(Behavioral) - - + + - - + + - - Structural + + 结构模式(Structural) - - + + - - + + - - Creational + + 创建模式(Creational) - - + + - - + + - - OOP + + 面向对象编程 (OOP) - - + + - - + + - - SOLID + + SOLID - + - + - + UML - - + + - - + + - - Architecture patterns + + 架构模式 - - + + - - + + - - MVC + + MVC 模型-视图-控制器模式 - + - + - + MVVM - - + + - - + + - - Three-tier + + Three-tier 三层架构 - + - + - + Onion - + - + - + Hexagon - - + + - - + + - - Methodologies of development + + 开发方法论 - - + + - - + + - - Test Driven Development + + 测试驱动开发(Test Driven Development) - - + + - - + + - - Behavior Driven Development + + 行为驱动开发(Behavior Driven Development) - - + + - - + + - - Domain Driven Design + + 领域驱动设计(Domain Driven Design) - + - + - - Memory + + 内存 - - + + - - + + - - Memory abstractions + + 内存抽象(Memory abstractions) - - + + - - + + - - Memory alignment + + 内存对齐(Memory alignment) - - + + - - + + - - Memory management + + 内存管理(Memory management) - + - + - - Binary units + + 二进制单位 - - + + - - + + - - Executable file + + 可执行文件(Executable file) - - + + - - + + - - Static library + + 静态库(Static library) - - + + - - + + - - Dynamic library + + 动态库(Dynamic library) - - + + - - + + - - Stack + + 栈(Stack) - - + + - - + + - - Global memory + + 全局内存(Global memory) - - + + - - + + - - Heap + + 堆(Heap) - - + + - - + + - - Application memory + + 应用内存(Application memory) - - + + - - + + - - Virtual memory + + 虚拟内存(Virtual memory) - + - + - - Operating systems + + 操作系统 - + - + - - Multithreading + + 多线程 - + - + - - Errors + + 错误 - - + + - - + + - - Dead lock + + 死锁(Dead lock) - - + + - - + + - - Race condition + + 竞态条件(Race condition) - - + + - - + + - - Live lock + + 活锁(Live lock) - - + + - - + + - - Starvation + + 饥饿(Starvation) - - + + - - + + - - Threads + + 线程(Threads) - - + + - - + + - - Concurrency + + 并发(Concurrency) - - + + - - + + - - Mutexes + + 互斥锁 (Mutexes) - - + + - - + + - - Semaphores + + 信号量(Semaphores) - - + + - - + + - - lock-free + + 无锁(lock-free) - - + + - - + + - - Event handling + + 事件处理(Event handling) - - + + - - + + - - Sync + + 同步(Sync) - - + + - - + + - - Async + + 异步(Async) - - + + - - + + - - Process + + 过程(Process) - - + + - - + + - - Interprocess communication + + 进程间通信(Interprocess communication) - - + + - - + + - - Shared memory + + 共享内存(Shared memory) - - + + - - + + - - Pipes + + 管道(Pipes) - - + + - - + + - - Serialization + + 序列化(Serialization) - - + + - - + + - - json + + json - - + + - - + + - - XML + + XML - - + + - - + + - - Network + + 网络(Network) - + - + - + TCP/IP - + - + - + OSI - + - + - + Sockets - + - + - + HTTP - + - + - + TCP - + - + - + UDP - - + + - - + + - - File system + + 文件系统(File system) - - + + - - + + - - Task scheduler + + 任务调度(Task scheduler) - - + + - - + + - - Virtualization + + 虚拟化(Virtualization) - + - + - + VirtualBox - + - + - + VMware Workstation - - + + - - + + - - Containers + + 容器(Containers) - + - + - + Hyper-V - + - + - + Docker - - + + - - + + - - Cloud Services + + 云服务(Cloud Services) - + - + - + Kubernetes - - + + - - + + - - Security + + 程序安全 - - + + - - + + - - Encryption + + 加密 - + - + - + MultiCPU systems - + - + - + Multicore CPU - + - + - + NUMA - - + + - - + + - - Input/output + + 输入/输出(Input/output) - - + + - - + + - - Drivers + + 驱动程序(Drivers) - - + + - - + + - - Audio + + 音频(Audio) - - + + - - + + - - Graphics + + 显卡(Graphics) - - + + - - + + - - Printers (printing) + + 打印机/打印 Printers (printing) - - + + - - + + - - DirectSound + + DirectSound - - + + - - + + - - OpenAL + + OpenAL - + - + - + DirectX - + - + - + Vulkan - + - + - + OpenGL - + - + - + CUDA - + - + - - Common skills + + 通用技能 - + - + - - Language tools + + C++语言工具 - + - + - - Language syntax + + C++语法 - + - + - - C++ Developer Roadmap + + С++ 开发者路线图 - + - + - - About: + + 简介 - + - + - - C ++ is still one of the most popular development languages. There is quite a number of people that want to start learning it - and become a C++ developer. They face questions like: "Where should I start? What and in what order should I study? What - books should I read?" - - We tried to answer these questions in the presented roadmap. The map focuses on general competencies and skills that - could be found in most projects. It is designed to help those who are just starting their education or have little experience. - You can create a more productive learning plan without being distracted by side information if you study the set of listed - materials. It will help you to master C++ at the level that is used in many commercial projects. + + C++至今仍旧是最受欢迎的开发语言之一,有很多人想要开始学习C++并成为开发者。初学者通常会面临这样 + 的问题:“我应当从何开始?我需要学些什么?应当以什么样的顺序去学?我需要参考哪些书籍? + + 我们希望通过这份路线图来回答这些问题。本图旨在帮助初学者或经验有限的人士,所涵盖的内容侧重于可 + 用在大多数开发项目中的通用能力和技能。如果您参考本路线图所罗列的相关材料,您将可以为自己创建一 + 个高效的学习计划,而不被次要信息分心。本路线图将帮助您达到一个许多商业项目普遍要求的C++水平。 + + 详细信息: https://github.com/salmer/CppDeveloperRoadmap - + - + - - How to use: + + 如何使用 - + - + - - If you have any feedback or remarks don't hesitate to contact us. - We really appreciate it. :) - - To contact us choose one of the following Github approaches: - - For any remarks related to repository content - go to Pull - Requests and submit a new one + + 如您有任何意见或建议,请随时与我们联系。我们将感激不尽 :) + + 您可通过以下任一Github链接联系我们 - + - + - - Feedback: + + 反馈与沟通 - + - + - - Optional + + 选修 - + - + - - Junior + + 初级 - + - + - - Middle + + 中级 - + - + - - Senior + + 高级 - + - + - - The middle developer has the - skills to create a design for - new functionality as a part of - a component/application if - even there're not enough - requirements or information - presented. + + 中级开发者具备以下能力: + 可以为一款应用程序设计出 + 新的功能,即便是缺乏对于 + 该项新功能的完善的具体要 + 求或相关信息。 - + - + - - The senior developer has the - skills to create a design and - make decisions for a - solution/component taking - into account business area - context. + + 高级开发者具备以下能力: + 结合业务领域的相关背景, + 设计出解决方案/组件,并作 + 出相关决策。 - + - + - - The junior must acquire the - following skill as soon as - possible: to write - easy-readable and - well-structured code. + + 初学者必须尽快掌握以下技能 + : + 编写易读且结构良好的代码。 - + - + - - The juniors should be aware - of middle/senior skills. It's - enough to have a basic - understanding of them. + + 初学者需注意,对于中级和高 + 级的技能,只需掌握基本概念 + 即可。 - + - + - - The "steps" are presented on - this map. They're intended to - show an easy for newbies to - be able to get confident base - knowledge about the language - at the beginning. + + 本路线图标示出了学习“步骤”。 + 这些“步骤”旨在规划出一套 + 易于操作的学习计划,以帮助 + 初学者在获取足够的C++基础 + 知识的同时,逐步提升深入学 + 习的信心。 - + - + - - Repository: + + 创作者 - + - + - + https://github.com/salmer/CppDeveloperRoadmap - - + + - - + + - - Carefully read the terms of the license agreement. - Your project must comply with them. + + 仔细阅读许可协议的条款。 + 您的项目必须遵守这些条款, + 才能使用这些库。 - - + + - - + + - - + + - - + + - - + + - - + + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - - + + - + - + - + - - + + - - + + - - + + - - + + - - + + - + - + - + - + - + - - + + - - + + - - + + - + - + - - + + - + - - + + - - + + - - + + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - + - + - + - - + + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - - + + - + - + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - + - + - + - + - + - + - - + + - - + + - - + + - - + + - - + + - + - + - - + + - + - + - + - + - - + + - - + + - + - + - - + + - + - + - - - + + +