尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

从C++Primer到Aether:3年完整旅程(71篇)

从C++Primer到Aether:3年完整旅程(71篇) 42 篇基础 8 篇 CMake 21 篇实战给三年后的自己一、三年前的那个晚上三年前一个周末我在出租屋里写下 C Primer Plus 重读精讲的第一篇。当时刚换工作接手一个 60 万行的 C 项目。每天打开 IDE面对那一堆文件夹心里是慌的。语法我都认识可项目为什么这么组织为什么要分那么多层为什么要用插件、IoC、MVVM。没人告诉我。我逼自己把 C Primer Plus 重看一遍把笔记整理成文章发出去。没想过要写成一个系列。只是觉得如果当初有人帮我画一张从语法到工业级的地图我不至于在前三个月那么痛苦。第一篇发出去有人留言说终于有人讲这个了。于是有了第二篇。然后第三篇。42 篇 C 基础写完了。8 篇 CMake 实战也写完了。今天Aether 系列 21 篇是这套系列的终章。从入门到工业级这条路我陪你走完了。二、71 篇文章的全景地图如果把这 71 篇文章比作一张地图它长这样第一板块C Primer Plus 重读精讲42 篇基础语法 → 核心机制 → 标准库 → 高阶技巧 → 设计原则 ├── 变量/类型/函数 ├── 类/继承/多态 ──→ 为为什么这么设计打底 ├── 模板/异常/IO ├── STL 容器/算法/迭代器 ├── 智能指针/移动语义 └── 并发/原子操作关键词“是什么和怎么写”。那 42 篇解决的是最基础的问题。你看得懂每一行代码但看不懂为什么代码要那么组织。第二板块CMake 实战8 篇单文件 → 多目录 → 库管理 → 第三方集成 → 安装打包 ├── 最小 CMake 项目 ├── 目录结构与 target ├── 静态库/动态库 ├── find_package 原理 ├── 自定义模块 └── 安装与 CPack关键词“怎么构建”。那 8 篇补上了国内 C 教学最大的缺口。没有人教你怎么搭构建系统。42 篇学完语法你写得出代码但写不出一个能交付的产品。CMake 就是那道坎。第三板块Aether 实战21 篇本系列架构全景 → 核心机制 → 架构演进 ├── 01-03插件系统架构总纲 ├── 04-06IoC / 分层 / 命令模式设计模式落地 ├── 07-10主题 / 权限 / 国际化 / 序列化功能架构 ├── 11-13类型擦除 / 生命周期 / 多线程C 硬核技巧 ├── 14-16信号槽 / 通信 / CMake 进阶底层与构建 ├── 17-18重构 / 测试工程实践 └── 19-21跨平台 / 架构演进 / 终篇回顾与展望关键词“为什么这么设计和什么场景选什么方案”。这个系列不是教你语法也不是教你写 demo。它是一份工业级 C 项目的解剖报告。三块拼在一起才是一张完整的路线图板块篇数解决什么问题学习成果C 基础42看得懂代码语法过关CMake8能构建项目能搭工程骨架Aether21懂架构设计能设计可扩展系统没有 42 篇基础直接看 Aether会看不懂。没有 Aether 实战只学基础永远停留在写作业的阶段。这三块缺一个都不完整。三、从语法学习者到架构设计者我见过太多人卡在某个阶段再也上不去。比如我一个前同事C 语法滚瓜烂熟模板元编程信手拈来。面试的时候什么难题都答得出来。但入职后看项目代码他说了一句让我印象极深的话“每行代码我都懂合在一起我不知道它们在干什么。”这不是他的问题。这是 C 教育的普遍缺陷。我们把大量时间花在怎么表达上几乎没有花时间在怎么组织上。回顾我自己的成长路径大概分三个阶段第一阶段语法学习者目标能写正确的代码。这个阶段你在和编译器做朋友。你关心的是这段代码能不能编译通过这个模板特化语法对吗auto 和 decltype 什么区别42 篇基础文章覆盖的就是这个阶段。当时每篇文章后面都有人留言说终于弄懂了这个。标志性能力给你一个需求你能在 30 分钟内写出一个能跑的 demo。第二阶段工程实践者目标能写可维护的代码。这个阶段你在和团队做朋友。你开始关心这段代码别人看得懂吗重用时会不会出问题这个函数会不会被误用CMake 8 篇帮你搭好了工程骨架Aether 前 10 篇带你见识了工业级的代码长什么样。标志性能力给你一个模块你能独立完成开发、测试、打包。第三阶段架构设计者目标能设计可扩展的系统。这个阶段你在和未来做朋友。你开始关心如果需求变了这套代码要改多少如果新来 5 个人他们能快速上手吗如果这个模块要拆出去成本高不高Aether 后 10 篇讲的就是这个阶段的东西。插件系统、IoC 容器、中间件管道、主题/权限/国际化的设计思路。标志性能力给你一个业务场景你能设计出一套架构让 10 个人同时开发而不互相踩脚。三个阶段的核心转变维度语法学习者工程实践者架构设计者关注点编译器是否通过团队是否看懂系统是否可扩展代码量几千行几万行几十万行时间跨度单人一天多人一周多人半年核心问题对不对好不好值不值失败代价改代码重编改接口重测改架构重构没有第一阶段基础不牢。没有第二阶段写不出产品。没有第三阶段走不远。但很多人从第一阶段直接跳不是跳到了第三阶段而是跳出了编程这个行业。因为中间那段路从能写到能设计没有人带。这个系列就是来带这一段。四、Aether 给了你什么回头看这 21 篇有三样东西是实打实的1. 一个完整的工业级项目源码Aether 不是一个教学 demo。它是一个真正跑在产线上的桌面应用框架。插件系统、IoC 容器、MVVM 数据绑定、中间件管道、主题引擎、权限框架、国际化方案。每一样都是真实的工业级实现。你可以下载它编译它跑起来然后一行一行读源码。21 篇里每一篇都指向源码中的具体文件。你不只是在读文章你是在带着地图逛一座真实的代码城市。2. 一套可以复用的架构模式不是每个项目都需要插件系统不是每个项目都需要 IoC 容器。但你一定会在某些时候面临这些问题“这个模块太耦合了怎么拆”“业务逻辑散得到处都是怎么收敛”“加了新功能老功能就崩了怎么隔离”“这个代码只有我能改别人不敢动怎么办”Aether 给的不是你就该这么写的教条而是一套经过验证的参考答案。插件化对应解耦IoC 对应依赖管理MVVM 对应界面与逻辑分离中间件对应横切关注点。你不需要照搬。但你需要知道在真实的工业项目中这些问题有人解决过方案在这里。3. 一份从入门到工业级的路线图这是我最想给你的东西。前面说了C 的教学最大的问题不是教得不够深而是教得太散。语法点一个一个讲但没有人把这些点串成一条路。你学完 RAII学完模板学完多态然后呢然后你看一个 60 万行的项目还是不知道从哪里开始。这个系列做的事很简单把然后的那部分补上。42 篇语法 8 篇构建 21 篇实战 71 篇。从int a 0;到插件加载、IoC 容器、跨平台架构。这条路我帮你画出来了。五、回到最初的问题文章 01 的开头我问了一个问题“第一次打开 Aether我盯着屏幕看了 10 分钟一个字都敲不出来。你呢”那之后我们聊了很多。聊了插件系统的三种架构聊了 IoC 容器背后的依赖注入原理聊了为什么 MVVM 在桌面端比 MVC 好用。我们把 Qt 信号槽从源码到应用拆了个遍把 C 类型擦除的四种方案全部列出来对比过。聊了权限系统的设计失误聊了国际化不是翻译聊了跨平台移植踩了哪些坑。每篇文章下面都有你的留言。有人问那智能指针在 IoC 容器里怎么用有人在文章里发现了 bug 并提了 PR有人说看了这篇我才知道以前写的都是玩具。这些留言是这 21 篇能写下来的最大动力。现在回到最初那个项目。那个让我盯了 10 分钟的项目那个让我写了删、删了写、反复崩溃的项目。现在再打开它我知道每一层为什么这么放每一个类为什么这么设计每一条 CMake 指令为什么这么写。不是因为我变聪明了。而是因为我花了整整三年的时间走完了从语法学习者到架构设计者的路。而这条路你已经在路上了。六、接下来怎么走系列结束了你的学习没有结束。如果你不确定下一步做什么这里有三条路选一条你感兴趣的路线 A继续深挖精读源码Aether 源码里还有很多细节这 21 篇没有覆盖到。比如通信模块的完整实现日志框架的设计细节各个插件的具体业务逻辑单元测试的编写策略建议你用特征驱动的方式读源码。挑一个你当前工作中最头疼的问题比如线程安全、模块解耦、配置管理然后去 Aether 里找对应的实现。带着问题读效率最高。路线 B动手实践基于 Aether 模板做自己的项目Aether 的插件架构天然适合做上位机软件的脚手架。如果你想做自己的工具可以基于 Aether 的框架搭起来。插件系统、IoC 容器、MVVM 绑定、主题切换。这些通用的基础设施已经写好了你只需要写业务逻辑。具体怎么做文章 02 到 06 已经把核心框架的用法讲清楚了。打开 Aether 源码边看边写。路线 C面试准备这 21 篇覆盖了 C 后端/桌面开发面试中 80% 的架构类题目面试题对应文章如何设计一个插件系统02, 03IoC 容器怎么实现依赖注入04MVVM 在 Qt 里怎么落地05设计一个可扩展的命令系统06跨平台 C 项目怎么组织19如何做 CMake 模块化设计16C 类型擦除有哪几种方式11如果你在准备 C 架构相关的面试把这 21 篇里的设计思路理一遍面试时至少不会没话说。七、写在最后三年前我写下第一篇的时候没想过会有今天。当时只是觉得如果把这些笔记扔掉太可惜了不如整理出来发到网上。有人看最好没人看就当自己的学习记录。没想到42 篇基础写完了有人追着问有没有进阶。8 篇 CMake 写完了有人说终于有人讲这个了。21 篇 Aether 写完了有人私信我说因为你的系列我拿到了 offer。如果这个系列真的帮到过你哪怕只是一篇文章里的一个知识点让你在工作里少踩了一个坑那我就觉得这三年值了。最后我想请你做一件事。这篇是终章但我希望它不是你和工业级 C的告别。它是一个起点。请你在这篇文章下面分享你和 C 的故事。可以是你的入门经历可以是你在某个项目里踩过的坑可以是看到这个系列后改变了自己写代码的方式。三年时间71 篇文章。从语法到架构从入门到实战。这条路我帮你画了地图。真正要走过去的是你自己。如果你身边有朋友正在从 C 入门迈向工业开发转发给他。这篇不仅是一篇文章是一份三年来走过的完整路线图。️ 欢迎评论区写你的 C 成长故事。 转发给一起在这条路上走的人。这 21 篇属于 “Aether 实战系列”前 42 篇参见 “C Primer Plus 重读精讲”中间 8 篇参见 “CMake 实战系列”。感谢一路陪伴。
返回列表