本文主要讨论四部分内容:
1.计算机学习的内容究竟有哪些,
2.怎样做好理论概念学习,工程实践锻炼
3. 行业主要岗位描述(JD)分析,如何面向面试与入职大厂而学习
4. C++ 方向常见的开源项目
一. 计算机开发的学习路径主要分两个部分:
【理论概念】 与 【工程实践】。
1. 理论概念
理论概念的学习就是要理解清楚计算机系统、软件系统的设计原理、思路、方法。
学习的目标是能够正确把握各个组件之间的关系,优缺点,理解设计的正确方法。
这部分学习不要求过多的进行实践,更多地是需要进行阅读、理解、思考,分享。
基础一级领域:(通用领域,基础知识各个领域交叉)
计算机网络,计算机组成原理 (以及体系结构)(组成原理体系结构,大致对应深大的计算机系统2/3),
操作系统:看书、PPT、MOOC,实践结合。
基础物理:看书,MOOC
逻辑电路:看书、PPT,MOOC
离散数学:PPT,MOOC
概率论与统计:PPT,MOOC
数据结构:看书、PPT、MOOC,实践结合,
算法:看书、PPT、MOOC,实践结合。
二级领域(更加专业性,各个学科之间交叉较少)
计算机图形:计算机动画、图形学、计算机视觉,虚拟现实等等
音视频:人机交互, 多媒体编码, 图像音频识别, 视频处理
数据库理论:分布式系统、关系型数据库理论,数据分布式,SQL优化 等等
分布式技术:后台系统架构,分布式服务,微服务,容器化,大流量下的优化
机器学习:很多,神经网络相关理论
密码学:数论,数学分析方法,离散数学
虚拟化技术:虚拟机,服务器等等
程序语言:编译器,语言设计,动静态之分,类型系统,运行时环境,常见基础库
Serverless:响应式编程,Lambda 编程,函数式编程
编译原理与优化原理
嵌入式:RTOS,操作系统,内存管理,驱动程序
2. 工程实践
C语言基础:官网,MOOC,参考网站(菜鸟Runoob, Cppreference等)
C++ 语言基础:官网,MOOC,参考网站(菜鸟Runoob, Cppreference等)
STL与C++的特性:看书,官网,参考网站,博客,实践结合。重点是理解常见数据结构,体会算法与数据结构的分离,理解抽象(元)编程, Abstract Programming / Meta-programming。
内存管理:看书,博客,语言参考,实践结合。 重点是理解存储体系,理解内存管理的目标,常见问题,已经应对方式。
代码规范:实践,文档,博客结合
资源访问与管理:实践,文档,博客,实践结合
调试器:实践,文档,博客,实践结合
测试工具:实践,博客,实践结合
自动化:博客,实践,文章,实践结合
脚本:Python等MOOC,博客,实践结合。
构建系统:实践、文档结合,
编译器的使用:文档,博客,实践结合
Linux 常用工具的基本理解:实践,文档,博客结合
代码审议与结伴编程:实践、看书结合
敏捷开发:看书
此外还有一些二者综合的部分
譬如,开发的一些协作工具(Git),https://git-scm.com/book/zh/v2
如何重构代码,敏捷开发模式 //www.greatytc.com/p/ee653f91cd63
有哪些设计模式 https://www.runoob.com/design-pattern/design-pattern-tutorial.html
等等。
三、一些行业JD可以做分析:
四、给出一些方向的开源项目建议大家可以尝试参与:
有一些国外大哥汇总了一些:https://github.com/fffaraz/awesome-cpp
下面是我自己考虑的一些:
1. 计算机网络
Nginx, http://nginx.org/
Apache2, https://github.com/apache/httpd
Git, https://git-scm.com/
Tcpdump,
Lynx,
2. 编译系统
Open64, https://github.com/lugt/open64
GCC, https://github.com/gcc-mirror/gcc
Clang+LLVM, http://llvm.org/
3. 游戏
主流端向:
Unity, 使用者以 C# 为主要开发语言,游戏引擎本身没开源(截止2020年)
Unreal, 部分使用前提下开源,https://www.unrealengine.com/zh-CN/get-now
开源向:Wesnoth,
OpenGL
4. 安全性方向
OpenSSL, 官网需要科学上网,只能放个Github, https://github.com/openssl/openssl
GDB, GNU LD
SELinux
5. 操作系统与虚拟化
Docker (Go)
Qemu
LVM
GFS 的理论成果
6. 数据库
ClickHouse: https://clickhouse.tech/
TiDB:(Rust) https://pingcap.com/
SQLite:(纯C)https://github.com/
MySQL (不太推荐新人看)
7. 音视频
ffmpeg
8. 图形方向
OpenGL,
Qt
9 编程语言
Wasmer / Wasm3 / Wasm micro runtime
OpenJDK
Lua Interpreter
V8