DEV-000 课程结构
注意:一些模块尚未提供。 可用模块的名称以链接形式显示, 而不可用模块将以纯文本形式显示。
模块 0: 开发者思维
本模块涵盖了构成开发者世界的基本概念,如抽象和层次结构。
包含的主题有:
- 抽象
- 层次结构
- 标准
模块 1: 抽象计算机
先决模块:
- 模块 0: 开发者思维
该模块解释了计算机如何被抽象为开发者所看到的形式。主题包括:
- 指令集架构(ISA)。
- 存储器的使用情况,堆栈和堆。
模块 2: 编程语言
先决模块:
- 模块 0: 开发者思维
- 模块 1: 抽象计算机
本模块是对编程语言进行全景式介绍。这并不是针对特定语言的教程;相反,它解释了编程语言的一般工作方式,介绍了几乎所有主流语言中的语法构造,并比较了多种编程语言的风格和设计选择。
该模块不假设你有任何编码经验,但它也不是编程教程。不应该仅通过阅读本模块来学习编码,而应该在实际编程中咨询GPT以获得实际的编码指导。
学完本模块后,你应该对现代编程语言的工作原理有很好的理解,并了解它们为什么以特定方式设计。在GPT的帮助下,你应该能够开始使用任何语言编程。
该模块涵盖的具体主题如下。
编程基础知识
- 变量和类型
- 控制流语句
- 函数
- 类
- 模块
编程语言分类
- 编译语言与解释语言+基于虚拟机的语言
- 静态类型和动态类型
- 垃圾回收和手动资源管理
- 高级语言和低级语言
编程语言中的共同概念
- 抽象
- 接口和ABCs及多态性
- 元编程
- 基于查找替换的宏
- 泛型
- 拥有权和生命周期
- 错误处理
- try-catch
- Result
其他 "非常规" 语言
- LISP
模块 3: 正确编码
先决模块:
- 模块 2: 编程语言
本模块解释了编程中的 "良好实践" 和范例,更重要的是,它们背后的逻辑。
学完本模块后,你应该对如何设计和编写具有数十万行代码的大型项目有一个良好的理解。
常见编码规范
- 代码风格
- CODE_OF_CONDUCT
- 标识符命名约定
- 注释和文档字符串
- 测试(介绍一些概念)
编程原则
- 语法和语义:它能是什么和应该是什么(通常是什么)
- 不要重复自己
- 优雅的原则
- 层次结构
- 耦合性与内聚性
- 依赖接口而不是实现
- 编写注释
- 当程序很简短时,忘掉所有原则
编程范式
- 面向对象编程
- 函数式编程
设计软件系统
- 模块、API和接口
- 耦合性与内聚性
- 其他考虑因素
- 抽象化依赖项
模块 4: 终端和超级用户基础知识
先决模块:
- 模块 2: 编程语言(推荐)
本模块介绍了终端、操作系统基础知识和其他 "超级用户工具"。
本模块将使你从通过拖放和按钮操作计算机的 "普通用户" 转变为能够使用终端和执行多重引导的 "超级用户"。
具体主题如下所示。
终端与 Shell 脚本编写
- 什么是终端?什么是 Shell?什么是 Shell 脚本?
- Shell 脚本语言的分类:基于文本的(bash)与面向数据的(powershell 和 nushell)
- Shell 脚本语言与编程语言之间的主要区别
- Shell 脚本基础知识
- 基本命令
- cd、pwd、pushd、popd、find,等等
- 变量和控制流,等等
- 命令
- 管道和重定向
- 环境变量
- 其他
- &&、;、$!,等等
- 终端技巧和常用实践
- 自动补全、历史命令等
- Shell 配置文件
- 提示符自定义和主题
- Shell 插件
- 常用工具和命令
- grep、cut、awk、tmux、ssh,等等
软件包管理
- 软件依赖关系
- 软件包
- 软件包管理器
其他
- 配置文件
- vim 和 emacs
- 虚拟化和 Docker
- 引导
- 硬盘分区和 (G)Parted
- 引导加载器和 GRUB
- BIOS 和 UEFI
- 双重(多重)引导
- Linux 其他杂项
- 内核模块
模块 5: 软件开发
先决模块:
- 模块 2: 编程语言
- 模块 3: 正确编码
本模块解释了与软件开发相关的常见概念和工具。
学完本模块后,你应该能够自如地开始一个大型项目,与团队一起编写代码,并将其发布给公众。
具体主题如下所示。
软件系统中的常见概念
- 版本控制和依赖关系
- 语义化版本
- 接口和 API 和库
- 远程过程调用 (RPC)
- 序列化和反序列化
- 进程间通信 (IPC)
- 框架
- 什么是框架?为什么使用框架?
- 框架与库
- 示例:Flutter(UI)、PyTorch(深度学习)和 Unity(游戏开发)
- 规范和标准(使用示例说明概念)
- 为什么需要标准?
- 示例
- CPU 指令集架构 (ISA)
- GPU 规格 (OpenGL 和 Vulkan)
- 数据表示标准 (JSON、TOML、YAML、XML、HTML)
测试
- 单元测试
文档编写
- 文档字符串
- API 文档
- 教程
- Doctests
- 常见文档框架和语言
- Sphinx 和 mkdocs(仅提及)
- Markdown 和 RST
构建和部署(暂定)
- 构建系统
版本控制
- 版本控制和 git
标准化和协作
- 对贡献者的标准化需求
- CODE_OF_CONDUCT
CI/CD
其他
- PR 和 Issues
- README、CONTRIBUTE、LICENSE
- TODO 和 FIXME
模块 6: 并发编程
先决模块:
- 模块 2: 编程语言
- 模块 3: 正确编码(推荐)
这是一个相对独立的模块,解释了与并发编程相关的概念。
具体主题如下所示。
并发简介
并发模型
- 并发与并行
并发问题
- 数据竞争
低级并发编程
同步原语
- 锁(互斥锁)
- 信号量
- 读写锁
并发编程范式
信道
生产者和消费者
异步编程
- Futures 和轮询
- 异步和等待
模块 7: 计算机架构基础知识
先决模块:
- 模块 1: 抽象计算机
- 模块 2: 编程语言(强烈推荐)
本模块介绍了计算机硬件的基本工作原理。
学完本模块后,你应该对计算机有更深入的了解,并能够编写能够充分利用硬件优化的程序。
具体主题如下所示。
中央处理器 (CPU)
- 流水线
- 存储器层次结构
- 分支预测和乱序执行
- 乱序处理
- 向量指令和 SIMD
图形处理器 (GPU) 和加速器
模块 8: 开发者世界中的其他主题
先决模块:
- 模块 2: 编程语言(强烈推荐)
- 模块 3: 正确编码(推荐)
本部分讨论了开发者世界中的各种领域和常用工具。
具体主题如下所示。
用户界面和应用开发
- 声明式用户界面与命令式用户界面
游戏开发
- 实体-组件-系统 (ECS)
图形处理单元 (GPU) 编程
- 高级:OpenGL
- 低级:Vulkan
其他
- Stackoverflow
- GitHub
- 集成开发环境 (IDEs)
- 语言服务器协议 (LSPs)
- Hugging Face
模块 9: AI 辅助开发和 AI 软件开发
先决模块:
- 模块 2: 编程语言
- 模块 3: 正确编码(推荐)
本模块讨论了如何利用人工智能开发更好的软件以及如何开发利用人工智能的应用程序。
具体主题如下所示。
人工智能基础知识
- 深度学习基础
- 为开发者抽象深度神经网络和 AI 服务
AI 辅助开发
- 代码补全
- AI 代码生成(逻辑代码、单元测试、文档等)
- 自动国际化
- AI 作为增强型 Google
AI 软件开发
心态转变:与 "传统软件开发" 有何不同?
- 确定性 -> 非确定性行为
- 结构化数据 -> 自然语言
- AI 参与流程控制
- 短延迟 -> 长时间运行操作
- 错误处理和在 AI 存在的可靠性保证
当前的范例和常见做法
- AI 代理
- 检索增强生成 (RAG) 和向量数据库
- Prompt 工程和 Prompt 模板