从 JS/TS 出发,走到新的现场。
选择一条路径,先完成对应语言的迁移基础,再进入 AI 或机器人专项。每节课都短、具体,并且有一个可以马上动手的小练习。
从第一节开始
选择一条路线,完成第一节迁移课程。
学习阶段运行与表达
先把 JS/TS 的运行时、语法和项目入口迁移成跨语言基础。
7 LESSONS
运行与表达
先把 JS/TS 的运行时、语法和项目入口迁移成跨语言基础。
运行时与工具链:从 npm 到编译器
理解解释执行、编译、包管理和项目入口在三种语言中的差异。
02值、类型与集合:同一个需求的三种表达
把对象、数组和类型系统的经验迁移到 list、vector、map 和 struct。
03函数、模块与错误处理:让代码可组合
比较 import/export、模块边界、返回值和异常处理的工程取舍。
04异步、并发与工程习惯
从 Promise 和 event loop 出发,建立对线程、任务和资源生命周期的直觉。
05数据模型与边界:对象不只是 JSON
理解对象、struct、class 和消息结构在跨语言项目中的职责边界。
06错误、调试与日志:让失败可定位
把 try/catch、返回值、断点和结构化日志放进同一套排错流程。
07CLI、项目结构与配置
从 npm scripts 出发,掌握可测试的命令行入口、配置和目录组织。
学习阶段工程边界
用数据契约、文件、HTTP 和进程边界组织可维护的代码。
8 LESSONS
工程边界
用数据契约、文件、HTTP 和进程边界组织可维护的代码。
控制流与表达式:同一个逻辑的三种写法
把条件、循环和短路表达式从 JS/TS 翻译成 Python 与 C++ 的清晰写法。
09可变性、身份与副作用
理解引用、拷贝和原地修改,避免把 JavaScript 对象直觉带进其他运行时。
10迭代、惰性与数据流
比较数组链、生成器、迭代器和流式处理,学会按数据规模选择实现。
11API 边界与契约
用输入、输出、不变量和失败语义定义稳定接口,而不是只传一堆对象。
12文件系统、路径与跨平台
从 Node.js path 经验出发,处理路径、编码、目录和权限的跨平台差异。
13HTTP、超时与重试边界
把 fetch 的使用经验扩展为可取消、有超时、能区分失败类型的服务调用。
14配置、环境变量与密钥边界
让本地、测试和生产环境使用同一套配置契约,并避免把密钥写进代码。
15进程、标准输入输出与退出码
理解脚本、子进程和命令行工具如何通过 stdin、stdout、stderr 协作。
学习阶段并发与可靠性
理解任务、线程、内存、测试、调试和安全边界。
8 LESSONS
并发与可靠性
理解任务、线程、内存、测试、调试和安全边界。
任务、线程与调度
区分并发、并行和异步,建立从事件循环到线程池的统一模型。
17共享状态、锁与消息队列
从竞态条件出发,比较锁、不可变消息和队列三种协作方式。
18栈、堆与对象生命周期
用内存布局解释闭包、引用、堆对象和显式生命周期在三种语言里的差异。
19序列化、二进制与版本兼容
理解 JSON、二进制和消息版本演进,建立跨进程数据的兼容意识。
20测试策略与测试替身
把单元、集成和端到端测试分层,并学会替换时间、网络和文件依赖。
21调试工作流与最小复现
把堆栈、断点、日志和二分定位组织成一套跨语言排错流程。
22指标、追踪与延迟
从“感觉变慢”升级到测量吞吐、延迟、错误率和资源使用。
23输入校验与安全边界
识别不可信输入、命令注入、路径穿越和过度信任类型提示的风险。
结课项目跨语言综合项目
把 JS/TS、Python 和 C++ 连接到同一个可演进的数据契约。
3 LESSONS
跨语言综合项目
把 JS/TS、Python 和 C++ 连接到同一个可演进的数据契约。
学习阶段Python 基础
从语法、容器和函数开始,建立 Python 的数据模型直觉。
8 LESSONS
Python 基础
从语法、容器和函数开始,建立 Python 的数据模型直觉。
Python 语法与数据模型
用 JS/TS 的已知概念快速掌握 Python 的缩进、可变性和常用容器。
02控制流、推导式与可读性
把 JS/TS 的条件、循环和数组链改写成 Python 的清晰表达。
03函数、模块与类型提示
把 TypeScript 的类型思维迁移到 Python 函数、模块和 type hints。
04对象模型、类与 dataclass
把 TypeScript class、interface 和对象组合经验迁移到 Python 数据对象。
05迭代器、生成器与上下文管理
理解 Python 如何延迟处理数据,并用 with 安全管理文件和外部资源。
06虚拟环境与依赖管理
从 node_modules 的经验出发,理解虚拟环境、依赖锁定和可复现运行。
07文件、HTTP 与数据管线
把 Node.js 脚本迁移成清晰的 Python 数据处理流程。
08测试、调试与可观察性
用 pytest 思维建立输入、输出和失败路径的可靠边界。
学习阶段工程与数据输入
把脚本、服务、配置和输入校验组织成可靠的数据入口。
8 LESSONS
工程与数据输入
把脚本、服务、配置和输入校验组织成可靠的数据入口。
HTTP 客户端与服务边界
使用 Python 调用外部服务,并区分网络失败、业务失败和数据校验失败。
10CLI 参数与配置入口
将 npm scripts 迁移到 argparse,让命令行工具具备帮助信息和可测试入口。
11日志、错误与可观察性
建立结构化日志、异常边界和调试上下文,知道服务到底在哪里失败。
12线程、进程与 asyncio
从 Promise 和 event loop 出发,理解 Python 任务、线程和进程的适用场景。
13异步服务、超时与重试
将 Promise 的经验迁移到 asyncio,并为 AI 服务调用补上超时和重试边界。
14SQL 与数据访问
用 Python 读取结构化数据,理解查询边界、参数化和连接资源管理。
15Schema、校验与数据契约
把动态 JSON 转成可检查的数据模型,为 AI 输入建立明确边界。
16AI 数据输入:从 JSON 到特征表
理解 AI 应用前的数据清洗、结构化和输入校验。
学习阶段数据与模型
从表格清洗到向量化、基线模型和训练评估,形成 AI 数据主线。
8 LESSONS
数据与模型
从表格清洗到向量化、基线模型和训练评估,形成 AI 数据主线。
pandas DataFrame 与数据清洗
从 JavaScript 数组对象进入表格数据、缺失值、分组和合并操作。
18NumPy 数组与向量化思维
从 JavaScript 数组进入 AI 常用的批量数据、形状和向量化操作。
19NumPy 广播与线性代数
掌握 shape、axis、broadcasting 和矩阵操作,避免逐元素循环拖慢数据处理。
20可视化与数据诊断
用分布、异常值和分组图检查数据,而不是直接把脏数据送进模型。
21基线模型、指标与 scikit-learn
先建立可解释的 baseline,再选择模型和指标,而不是一开始就追求复杂网络。
22数据集切分、泄漏与可复现
区分训练、验证和测试数据,识别 data leakage 并固定随机性。
23PyTorch Tensor 与 autograd
从 NumPy 数组迁移到 Tensor、设备和自动微分,理解训练为何需要梯度。
24PyTorch 模型与训练循环
拆解 Module、loss、optimizer 和 epoch,建立能调试的最小训练循环。
结课项目服务化与结课项目
把模型推理、部署、监控和数据准备组合成可运行的 AI 工程。
6 LESSONS
服务化与结课项目
把模型推理、部署、监控和数据准备组合成可运行的 AI 工程。
Dataset、DataLoader 与批处理
把样本读取、变换、batch 和 worker 组织成稳定的数据输入管线。
26评估、checkpoint 与实验记录
保存最佳模型、记录指标和比较实验,避免只凭最后一次训练结果下结论。
27模型推理、批量与资源边界
把训练代码改成稳定推理入口,处理 eval 模式、batch、CPU/GPU 和超时。
28模型 API 与服务部署
将推理能力包装成 HTTP API,补齐输入校验、健康检查和版本信息。
29实验配置与模型监控
用配置、数据版本和输入分布监控把一次实验变成可维护的工程流程。
30小项目:构建一个数据准备 CLI
把前面的迁移知识组合成一个可测试、可扩展的数据准备命令行工具。
学习阶段C++ 基础
从编译、类型、值语义和 STL 进入现代 C++。
16 LESSONS
C++ 基础
从编译、类型、值语义和 STL 进入现代 C++。
编译、链接与 CMake
把 bundler 和运行时的经验转换成 C++ 的编译产物和构建目标。
02表达式、初始化与控制流
从 JS/TS 的表达式经验进入 C++ 的初始化、作用域和编译期类型检查。
03类型、const 与值语义
理解整数、浮点、枚举、const 和值拷贝,为后面的生命周期学习打底。
04值、引用与指针
用可视化的内存直觉理解 C++ 为什么需要引用和指针。
05函数、头文件与链接边界
理解声明、定义、头文件和链接错误,建立 C++ 多文件项目的基础。
06STL 容器与算法
把 Array、Map 和高阶函数经验迁移到 vector、unordered_map 和算法。
07算法、Lambda 与可调用对象
把数组 map/filter 经验迁移到 STL 算法、Lambda 和明确的迭代器边界。
08RAII 与智能指针
理解资源生命周期,避免把 JavaScript 的垃圾回收直觉硬套到 C++。
09移动语义与所有权转移
理解拷贝、移动、右值和资源转移,知道什么时候避免不必要的数据复制。
10类、接口与错误处理
比较 TypeScript interface、C++ class 和显式错误返回的边界。
11异常、错误与不变量
比较异常、错误码和 optional,建立面向库与应用的失败语义。
12模板与泛型算法
把 TypeScript 泛型的经验迁移到 C++ 模板、类型推导和可复用算法。
13Ranges、View 与管线式处理
用现代 C++ 的惰性 view 组织数据处理,并明确临时对象和生命周期。
14文件、格式化与序列化
处理文件流、文本和二进制边界,理解传感器消息为什么需要稳定格式。
15CMake Target 与依赖边界
从能编译程序升级到可维护 target,掌握 include、link 和传递依赖。
16CMake 测试与调试
把 C++ 代码拆成可测试目标,并用断点、断言和 Sanitizer 找到内存问题。
学习阶段系统工程
用内存、并发、实时性和进程边界理解机器人程序的约束。
7 LESSONS
系统工程
用内存、并发、实时性和进程边界理解机器人程序的约束。
Sanitizer 与内存调试
用 AddressSanitizer、UndefinedBehaviorSanitizer 和断言定位 C++ 隐蔽错误。
18线程与消息循环
从事件循环出发,建立机器人消息处理与线程同步的基础模型。
19Mutex、Atomic 与线程安全
区分互斥、原子和无锁的适用边界,避免用 sleep 掩盖竞态问题。
20消息队列与生产者消费者
把传感器输入、处理任务和输出消息拆成有界队列,并处理背压和退出。
21内存布局与性能测量
理解缓存、拷贝、移动和基准测试,为机器人实时处理建立性能判断。
22时间、实时性与确定性
理解周期、抖动、截止时间和动态分配对机器人控制循环的影响。
23网络、IPC 与进程边界
比较 socket、共享内存、CLI 和消息中间件,选择合适的组件连接方式。
学习阶段ROS 2 工程
从工作区和节点通信走到接口、QoS、组件和仿真。
9 LESSONS
ROS 2 工程
从工作区和节点通信走到接口、QoS、组件和仿真。
ROS 2 工作区、colcon 与包
从 CMake 项目进入 ROS 2 工作区,理解 package、colcon 和依赖声明。
25ROS 2 Node、Topic 与 QoS
写出发布和订阅节点,理解消息流、队列深度和 QoS 对传感器数据的影响。
26ROS 2 Service、Action 与反馈
区分短请求和长任务,设计可取消、带反馈和结果的机器人接口。
27ROS 2 参数、Launch 与生命周期
把硬编码配置移到参数和 launch,并理解节点启动、暂停和关闭的状态。
28TF2、URDF 与 RViz
理解坐标系、机器人模型和可视化工具,建立传感器数据的空间直觉。
29rosbag、回放与离线测试
记录和回放消息,把真实设备问题转成可重复的离线测试输入。
30ROS 2 自定义接口与消息契约
从标准消息进入自定义 msg、srv 和 action,理解接口包与运行时包的边界。
31ROS 2 组件化与进程内通信
理解 component、容器和 intra-process communication,减少机器人节点间不必要的拷贝。
32ROS 2 QoS 与传感器可靠性
用可靠性、持久性、历史和深度配置传感器流,定位订阅端收不到数据的问题。
结课项目诊断与结课项目
把插件、仿真、Tracing 和传感器消息处理组合成可测试系统。
4 LESSONS
诊断与结课项目
把插件、仿真、Tracing 和传感器消息处理组合成可测试系统。