软件技术雷达 c++

JAVA

https://www.pdai.tech/

ThoughtWorks 

Tech Radar 网页地址是 https://www.thoughtworks.com/radar 

c++

0. 前言

0.1 维度与层次

C++语言技术雷达图从能力角度分为以下三个维度:

  • 通用领域
  • 业务领域
  • IT基础

针对这三个维度中众多的技术点,有偏重地推荐为两个层次:

  • 关键知识技能:表格中标蓝加粗字体为关键的知识技能与技术点;
  • 扩展知识技能:未标蓝加粗的内容为推荐的扩展内容,在掌握了关键知识技能的基础上,根据业务的不同可以有选择性地挑选学习。

0.2 雷达图的应用建议

专家团针对每个知识技能给出了掌握程度的评分标准:

  • 知道(1分):能说清楚是什么,解决什么问题,了解技术对应的社区的使用情况和学习路径。
  • 会用(2分):实现过对应技术的"QuickStart",知道技术的适用场景,能照猫画虎实现需求。
  • 熟练(3分):能够在业务场景中用最佳实践解决问题,形成自己的方法论和套路。
  • 精通(4分):熟悉技术背后原理,研究过源码,能够解决疑难问题(故障、性能优化以及扩展)。
  • 贯通(5分):对该技术的不足比较深入的洞见,能够提出创新性的解决方案,拓展该技术。

使用雷达图的个人或团队可以在初期对自身能力做一次评估,并选择合适的技术方向学习。之后在合适的时间点再次评估,审视是否有进步。

辅助评分的参考工具:excel工具

知识技能雷达excel工具示意图:

软件技术雷达 c++_第1张图片

1. 通用领域

此章节的内容多为通用技术、知识,可应用于各个业务领域的软件开发活动中。

1.1 设计

知识技能 技术点 学习参考
# 架构设计    
  - 面向对象设计 《面向对象是怎么工作的》
    Introduction to Object-Oriented Programming
  - 领域驱动设计 《领域驱动设计:软件核心复杂性应对之道》
    《实现领域驱动设计》
    martinfowler domain_driven_design
  - 架构模式 《面向模式的软件架构》卷一
《面向模式的软件架构》卷二
《面向模式的软件架构》卷三
《面向模式的软件架构》卷四
《面向模式的软件架构》卷五
    《企业应用架构模式》
  - 演进式架构 《浮现式设计》
    《演进式架构》
    《Building Evolutionary Architectures》
    evolutionaryarchitecture.com
    Evolutionary_Architecture_Keynote_by_Neal_Ford
    martinfowler evo_arch_forward
    is design dead - Martin Fowler
    《软件演进式设计与领域建模》(公司优秀MOOC课程)
  - 4+1视图 运用RUP 4+1视图方法进行软件架构设计
公司软件教练组系列视频:
架构设计4+1视图实践分享
# 安全设计    
  - 威胁建模 华为网络安全技术社区:威胁分析
  - 安全设计模式 公司安全设计模式
# 设计原则 & 设计模式    
  - 设计原则 SOLID 设计原则Robert C. Martin论文合集
    Solid-Relevance(uncle-bob)
    迪米特法则LKP
  - 设计模式 《设计模式:可复用面向对象软件的基础》
    《Head First Design Patterns: A Brain-Friendly Guide》
    《微服务架构设计模式》

1.2 重构

知识技能 技术点 学习参考
# 重构    
  - 重构&坏味道(重构方法论及手段) 《refactoring》
    《重构与模式》
    《嵌入式软件重构方法与实践0.2》

1.3 编码

知识技能 技术点 学习参考
# C ++语言    
  - 语言特性(C++17版本) 语言学习:
《C++语言导学》
《C++ Primer 中文版(第 5 版)》: 针对C++11版本
《C++ Concurrency in Action, 2nd》(建议读原版)
《现代 C++ 教程:高速上手 C++11/14/17/20》
    语言参考:
C++ 参考网站
ISO C++官方网站
  - 标准库&三方库:
STL
《C++标准库自学教程与参考》
C++ 参考网站
  - Boost Boost:通用C++库集合
  - 进阶指南&优秀案例 推荐基础进阶学习:
《Effective Modern C++: 42 Specific Ways to Improve Your Use of C++11 and C++14》
《Effective Modern C++ 中文版》
《C++ Coding Standards:101 Rules, Guidelines, and Best Practices》
《C++编程规范:101条规则、准则与和最佳实践》
现代C++实战30讲
    推荐高手学习:
《Modern C++ Design: Generic Programming and Design Patterns Applied》
《C++ 设计新思维》
C++ 函数式编程
如何优雅的实现 C++ 编译期静态反射
What is the copy-and-swap idiom?
Inheritance is the base class of evil
constexpr function parameters
  - 通用及安全编码规范 《华为C++语言编程规范》
# 算法与数据结构    
  - 基本数据结构:
数组、链表、栈、队列、二叉树、图
慕课网课程
  - 基本算法:
查找、排序、分治递归、动态规划、贪婪、一致性哈希
慕课网课程
# 系统支撑    
  - 编译:
编译
链接
加载
执行
《程序员的自我修养--链接、装载与库》
  - 网络:
TCP
UDP
IP
ARP
HTTP
《TCP/IP详解卷》
网络协议原文参考
  - 计算机组成:
内存
cache
cpu
《深入理解计算机系统》
  - x86/ARM/RISC-V调用规范 Procedure Call Standard for the
ARM 64-bit Architecture
System V Application Binary Interface
AMD64 Architecture Processor Supplement(3.2章节)
RISC-V-Calling
  - 网络工具 《wireshark网络分析就这么简单》
《wireshark网络分析的艺术》
tcpdump

1.4 测试、调试与性能调优

知识技能 技术点 学习参考
# 开发者测试    
  - 测试分层:
Unit testing
Integration testing
System testing
Operational acceptance testing
《单元测试之道》
《测试驱动的嵌入式C语言开发》
  - 开发者测试框架:
gtest
DTCenter
gtest/gmock入门
google/benchmark
DTCenter
# 调试    
  - 单步调试:
debuger
breakpoints
threading
condition breakpoint
watch
gdb
《软件调试 第2版》
# 性能调优    
  - 体系架构cache & profiling方法 Software optimization resources
C++性能调优纵横谈
《C++性能优化指南》

公司软件教练组系列文章:
丁兆杰 数据Cache预取技术系列
丁兆杰 利用Cachegrind帮助优化D-Cache命中率
左春伟 性能之巅:定位和优化程序CPU、内存、IO瓶颈
左春伟 软件教练说:性能优化与性能设计
左春伟 高质量C/C++程序设计
左春伟 软件架构-解构高并发
金晶 高性能并行计算纵横谈
白玉刚 内存优化经验分享
Mike Guangxuan Liu 性能优化之算法优化
丁兆杰 使用Valgrind工具集进行Cache性能调优
丁兆杰 L2中的位运算

2. 业务领域

此章节的内容多为某个业务领域的特定技术、知识,同时也是业界经典范例,强烈推荐学习参考。

知识技能 技术点 学习参考
# 多媒体处理    
  - 多媒体处理
音视频编解码
流媒体协议
网络协议
图像算法
音视频算法库
ffmpeg
opencv
RTP: A Transport Protocol for Real-Time Applications
Real Time Streaming Protocol (RTSP)
RTP Control Protocol (RTCP)
Real-Time Streaming Protocol (RTSP)
HTTP Live Streaming
# AI    
  - AI框架:
Caffe
Caffe Tutorial
Caffe Documentation & Examples
Caffe source code
  pytorch 莫烦pytorch动态神经网络
pytorch官方文档
《动手学深度学习(pytorch版)》
  tensorflow 机器学习速成课程
tensorflow编程人员指南
理论机器学习和高级机器学习
《tensorflow深度学习》
  mindspore mindspore官方教程
《深度学习与MindSpore实践》
  - 机器学习库:
xgboost
xgboost官方指南
《深入理解XGBoost:高效机器学习算法与进阶》
  scikitlearn scikit-learn用户指南
《机器学习实战:基于Scikit-Learn、Keras和TensorFlow》
# 高性能计算/中间件    
  - 高性能RPC gRPC
  - 消息队列 zeromq
# 网络编程    
  网络编程/序列化 ACE :C++面向对象网络编程工具包
libjson :轻量级的JSON库
  网络调度 Libev:开源的事件驱动库,基于epoll,kqueue等OS提供的基础设施
Thrift:高效的跨语言IPC/RPC
# 存储/分布式Cache    
  存储/分布式Cache SQLite:一个完全嵌入式的,功能齐全的关系数据库
Memcached:高性能的分布式内存对象缓存系统
ClickHouse
# 高性能计算    
  高性能计算库 Armadillo - C++ library for linear algebra & scientific computing
OpenBLAS - An optimized BLAS library
Intel Math Kernel Library
GNU Octave
# 加解密    
  OpenSSL OpenSSL

3. IT基础

此章节的内容多为软件开发活动中一些推荐掌握的技能、知识,熟练掌握和运用这些技能对软件开发的效率、质量都有较好的帮助。

知识技能 技术点 学习参考
# Linux工具链    
  - 脚本语言:shell,python 《UNIX Power Tools》
《鸟哥的Linux私房菜》
《Linux与Unix Shell编程指南》
《Linux Shell核心编程指南》
  - 性能分析工具:
perf 工具
gperftool(google)
火焰图
Linux kernel profiling with perf
Perf -- Linux下的系统性能调优工具-Part 1
Perf -- Linux下的系统性能调优工具-Part 2
perf Examples
gperftool
火焰图
  - 编译工具链:
GCC
LLVM/Clang
GCC官网
《编译原理》(龙书)
LLVM入门
Clang 编译器用户手册
# 版本管理(VCS)    
  - Git、Gitlab、Github Git官网
Git实践练习
  - gerrit  
# IDE/TOOLS    
  NextCode VSCode Refactoring
  wecode wecode
  CLion CLion Refactor Help
  Eclipse-CDT Eclipse Refactor Actions
  Sublime-text Sublime-text
  Typora(markdown编辑器)  
# CI/构建    
  CMake 《CMake CookBook》中文
  Makefile 《跟我一起写makefile》
# 代码静态检查    
  Pclint  
  coverity  
  fortify  
  clang-tidy  
  ASAN  
  valgrind

你可能感兴趣的:(c/c++,c++)