3442 字
17 分钟
最近翻了翻以前的博客
2026-08-16
无标签

从 C++ 课设翻到毕设#

最近翻博客时,先看到了一篇 2021 年刚学完 C++ 后写的课程设计。那时候老师要求用 MFC 做一个学生成绩管理系统,我看了一圈觉得 MFC 实在不好用,于是刚学完 C++ 没多久,就跑去现学 Qt 了。现在看多少有点初生牛犊不怕虎,GUI 没写过,Qt 也没接触过,反正觉得既然也是 C++,应该能搞出来。

里面有些实现现在看起来相当离谱。比如学生数据要持久化,正常一点的思路大概是 SQLite,当时看到别人用数据库却觉得这也太重了:几十个学生的信息不就是一个二维数组吗,为了这个专门搞数据库多少有点杀鸡用牛刀。于是最后直接弄了个 txt,每个字段用空格隔开,启动的时候一行一行读出来,再 split 成数组。现在当然会马上想到字段里如果真有空格怎么办、写文件写到一半崩了怎么办,但当时完全没有这些顾虑,能读出来、能写回去就算成功。

更神奇的是修改和取消。当时需求里有一个“修改学生信息”的窗口,改完以后用户还可以点取消。我显然不知道事务、rollback、snapshot 这些概念,但又觉得既然允许取消,总不能改完以后恢复不了吧。最后想出来的办法是在程序启动时把 student.txt 复制一份叫 student_old.txt,修改的时候直接改原文件;点确定就把 old 文件删掉,点取消就删掉新的 student.txt,再把 old 改回去。现在看基本就是自己手搓了一个只有一层、粒度还是整个文件的“事务系统”,当时还觉得这个办法挺聪明的。

表格刷新也差不多。修改完数据以后发现 QTableView 不会自己更新,于是最开始的解决方案是在主界面放一个“刷新”按钮,告诉用户改完以后自己点一下。写着写着又觉得这样好像有点蠢,才继续研究能不能在新增、修改、删除窗口关闭的时候通知主窗口刷新。那时候连“状态同步”这个词都未必知道,但已经开始被这些问题逼着想,文件里的数据、程序内存里的数据和界面上显示的数据到底是什么关系。

成绩直方图更直接。老师要求最后画一个成绩分布图,我不知道 Qt 有没有现成图表组件,也没想着先去找,第一反应是:直方图不就是几根柱子吗?于是拿 QPainter 自己画。坐标轴、箭头、刻度、文字、每个分数段的柱子全部手算像素,代码里甚至直接写着 xi = 40、yi = 50 这种东西。现在让我再做一次,大概率几分钟就会找到一个 chart library,当时却真的是从“我要让屏幕上出现这几根线”开始一点点往下写。

还有不少类似的小地方。删除一条记录以后,看着那一行从表格里消失,会在文章里很兴奋地写一句“最终效果就是那一行消失啦”;一个函数写出来以后,又会逐行解释第三行干什么、第四行干什么。现在回头看代码水平当然不高,但那种状态挺有意思:手里只有刚学会的 C++,碰到什么需求都先想“这个东西我能不能自己拼出来”,很多方案甚至是在完全不知道标准做法的情况下从需求本身反推出来的。

继续往后翻,到了 2023 年毕设前后,思路已经明显不一样了。React 状态管理Next 和 Koa 的文件上传流式传输Buffer 和 ArrayBuffer,这些基本都是做项目时碰到问题,再顺着问题查下去留下来的。那时候已经不会像刚学 C++ 时一样什么都自己发明,会去找框架推荐的做法,也会开始注意状态到底属于谁、数据经过了哪些地方、一个看起来很普通的类型转换为什么会出问题。

但两段时期放在一起看也挺有意思。2021 年更像是“不知道正确答案,所以先凭直觉造一个出来”;到了毕设,则开始变成“我知道这里应该有一套更合理的模型,所以想把它搞明白”。前者留下了一堆现在看起来很野的实现,后者则留下了更多关于框架和底层行为的文章。现在回头看,那段时间可能确实是我技术学习最密集的时候。很多东西第一次接触,又必须自己把项目做出来,所以几乎每天都有新的问题。博客在那几年也最密集,2023 年写了 15 篇,2024 年还有 10 篇,之后两年加起来只剩下 3 篇。

上班以后,写代码这件事变了#

毕业以后,工作里的技术环境反而稳定了下来。项目主要是维护性质,技术栈也是比较老的 Vue2。真正占时间的是理解 PRD、历史业务逻辑、兼容已有实现、联调和测试。到了 2025 年以后,AI 编程又把写代码这件事进一步压缩了。最近大半年,已经很少从头到尾自己写一个功能,更多时候是先把需求和现有代码搞清楚,让 Agent 修改,再自己检查结果。

这也是最近偶尔会觉得自己离以前理解的“程序员”越来越远的原因。以前做项目时,想法和最终代码之间有一大段工作需要亲手完成。现在这段越来越短,工作内容看起来反而更像理解需求和验收结果。功能仍然是自己负责,但真正一行一行写代码的时间少了很多。

前几天重新折腾 Fcitx5 时,这种差别尤其明显。

最开始只是想调整几个输入法行为,后来又开始折腾高 DPI、Wayland 下的渲染,再突发奇想想在候选框旁边显示一张图片。以前碰到这种没有明确答案的问题,往往需要自己搜半天资料,试很多配置。有些问题查到最后仍然不知道为什么,只能先放着。

这次大部分排查和修改都直接交给 Codex。哪里表现不对,就把现象告诉它,让它继续查。最后从输入法配置一路查到 XKB、Cairo、Wayland 和 XCB,涉及的范围其实比以前自己折腾时还要深。

AI 少掉了一些弯路,也少掉了一些“必须弄懂”#

这件事让我重新想了一下 AI 到底改变了什么。

假如 2021 年就有现在的 GPT,当时那个学生管理系统大概会写得规范得多。我只要把需求说清楚,就能很快知道应该怎么组织数据、怎么管理状态、有哪些现成组件可以用。2023 年碰到 React 状态问题时,也不需要先写出一个不能触发更新的 class,再慢慢搞清楚为什么 useReducer 更合适。

少走这些弯路当然没有问题,但以前很多知识恰好是因为“不搞懂就做不下去”才学会的。现在功能能不能完成,和自己有没有理解实现细节,已经没有那么强的关系了。一个问题可以继续追问到底,也可以看到结果正确以后直接结束。

另一方面,Fcitx5 这次又说明 AI 并不一定会让问题停留在表面。以前有些问题不是不想继续研究,而是查资料和验证的成本太高。现在把这部分成本降低以后,反而可以一路追到以前很难碰到的地方。区别只在于,是否还会继续问一句“为什么”。

博客少了,倒不一定是因为没时间写#

写博客也有类似的变化。

以前写一篇技术文章,本身也是重新理解代码的过程。为了说明一段实现为什么这么写,需要再看一遍自己的代码,把当时的思路重新组织一次。现在连这部分都可以交给 AI。像这次 Fcitx5,折腾完成以后,Codex 本身就知道刚才改了哪些东西,可以直接根据整个过程整理出文章。

按理说写作门槛已经比以前低了很多,但博客反而越来越少。真正减少的大概不是把文字敲出来的时间,而是那些让我觉得“这个东西值得继续研究一下”的事情。公司里的问题每天都有,但很多是业务逻辑和历史兼容,解决以后也就结束了。不上班时重新折腾 Linux,反而又会为了一个没有什么实际价值的小需求花几个小时。

原来我一直只会写技术文章#

翻这些旧文章时还发现一个一直没变的地方。我这么多年基本只会写技术类文章,最多夹一点自己的感想。养猫、旅行或者其他日常生活,很少会产生“专门写篇文章记录一下”的想法。以前会觉得可能是因为从小语文就不好,也一直不喜欢写作文。

现在再看,可能和写作习惯也有关系。我比较容易从一个具体问题开始写,记录碰到了什么、为什么会这样、最后怎么处理。技术内容天然适合这种方式,所以一直有东西可写。生活里的很多事情没有明确的问题和答案,就很容易只留下一张照片或者几句话。

其实也没必要为了记录生活,突然去学着写以前最不喜欢的那种作文。猫什么时候从一只手就能托住长到五公斤,第一次带它出门是什么反应,过半年重新看照片发现哪里变了,这些本身也可以记。依然可以按照自己习惯的方式写,只是记录的对象不再是代码和电脑。而且现在至少不用太在意“这些零散的东西最后能不能变成一篇文章”。先把当时记得的细节留下来,什么时候觉得值得整理,再让 GPT 帮忙把材料组织起来。

这篇文章差不多也是这么来的。本来只是随手翻到几篇旧博客,想看看以前到底写过些什么,结果一路从刚学完 C++ 时那些现在看来有点离谱的实现,翻到毕设时研究 React、Node 和各种二进制问题,再看到现在对着 Codex 改 Linux。中间隔了几年,写代码的方式已经换了好几轮,连写博客这件事本身都变了。


以前总觉得,只有自己真的把一件事从头到尾做出来、再亲手整理成文字,才算是留下了什么。现在代码可以让 AI 写,文章也可以让 AI 帮忙整理,很多原本很费时间的事情突然都变得轻松了。刚开始多少会有点不适应,总觉得这样是不是少了些什么,好像以前那些查资料、踩坑、反复修改的过程才更“像开发”。

但翻完这些旧文章以后,又觉得真正值得留下来的未必是那些具体的写法。2021 年的 Qt 代码早就不会再那么写了,2023 年的一些前端方案以后大概也会继续过时。真正让我觉得有意思的,是还能从文章里看到当时自己为什么会对一个问题感兴趣,又是怎么一步步想出那些现在看来有点奇怪的方案。

以前写博客时,目的其实很简单。解决了一个问题,觉得这个 solution 以后可能还能用,就顺手记下来;或者刚学会一个东西,趁着还记得清楚,把过程重新写一遍,加深一下印象。现在再回头看,才发现这些文章还意外留下了另一层东西:当时习惯怎么想问题,又愿意为什么事情花时间折腾。

所以现在写博客,除了记录“怎么做”,也想多留一点“此刻是怎么想的”。以后再回来看 2026 年这些对着 Codex“许愿”的记录,说不定同样会觉得原始,甚至连现在这种 Agent 工作流都已经过时了。内容质量高一点低一点,是不是有 AI 帮忙,也没那么重要。只要几年以后还能顺着这些文字想起当时在折腾什么、为什么会对它感兴趣,这篇文章就已经有用了。 此刻会对过去这些变化产生感慨,也是因为当年的文章还留在那里。现在写下来的这些东西,几年以后大概也会变成另一个锚点。

最近翻了翻以前的博客
https://yuzi.dev/posts/notes/looking-back-at-my-old-blog
作者
Yuzi
发布于
2026-08-16
许可协议
CC BY-NC-SA 4.0