我干了十几年 Qt C++。从 Qt4 到 Qt6,从单线程到多线程池,从 GDI 绘图到 OpenGL 硬件加速,从 Windows 桌面到嵌入式 Linux 再到安卓跨平台。我熬过的夜、踩过的坑、调过的内存泄漏、追过的段错误,加起来能绕地球半圈。
我做过视频监控系统,手写 Onvif 协议解析、GB28181 信令交互、FFmpeg 硬解码渲染;做过物联网平台,多线程并发采集 Modbus/ MQTT 数据;做过自定义控件大全,几百个控件从零绘制;做过地图控件,海量点实时轨迹、瓦片地图离线加载;做过音视频组件,极低延迟的推流拉流、语音对讲......
这些项目,每一个都是一行一行 C++ 代码敲出来的。没有花里胡哨的框架,没有现成的 SDK 一把梭,很多时候是抓包、看协议文档、啃源码、调指针。
结果现在,一个实习生,装了 Cursor,装了 Claude,prompt 写得溜一点,写出来的 Qt 代码能跑,界面能出来,甚至多线程都给你整上了。
那一刻,我真的有点怀疑人生。
二、那些年我们引以为傲的东西,正在贬值
咱们这代 C++ 程序员,学编程是实打实"啃"出来的。
记得刚工作那会儿,为了搞懂 Qt 的信号槽机制,我把 QMetaObject 的源码翻了三遍,moc 预处理器的原理背得滚瓜烂熟。为了弄懂为什么 deleteLater 比直接 delete 安全,我在 Qt 源码里跟了整整两天。为了搞懂 FFmpeg 的 AVFrame 内存管理,我盯着 valgrind 的输出看到眼冒金星,就为揪出那一个悬垂指针。
那时候,懂这些是真本事。面试的时候能跟面试官掰扯半小时 Qt 事件循环和线程亲和性,工资就能多要五千。
为了做那个视频监控系统,我自己手写 Onvif 设备搜索,组播报文一个个字节拼,SOAP 响应一个个字段解析。为了做地图控件,我研究瓦片金字塔算法,自己写下载器、写缓存策略、写坐标转换。为了做自定义控件,我重写了无数个 paintEvent,调 QPainter 的抗锯齿、渐变、阴影,就为让界面看起来精致那么一点点。
那时候,一个流畅的仪表盘控件、一个实时刷新的波形图、一个支持 16 路硬解码的视频监控画面,都是能拿出来吹半年的硬货。
可现在呢?
你问 AI:"给我用 Qt 写一个支持多线程采集的 Modbus 通信组件。" 它三秒钟给你整出一套像模像样的代码,有 QSerialPort、有 QThread、有协议解析,骨架绝对不差。
你问 AI:"这段 C++ 代码有内存泄漏,帮我找找原因。" 它不光能找到,还能告诉你 QObject 父子关系没设置好,甚至顺手把智能指针的改法给你写好。
你问 AI:"帮我设计一个支持 GB28181 协议的视频监控平台架构。" 它能从信令交互到媒体流转发,给你整一套完整的方案图,虽然不一定完全贴合你的硬件环境,但看起来绝对专业。
那些我们曾经花几年时间积累下来的"硬知识"------指针操作、内存管理、协议解析、性能优化、跨平台适配------在 AI 面前,正在以肉眼可见的速度贬值。
就像你苦练了十年铁砂掌,结果对手掏出了一把 AK47。
三、道心崩塌之后,我躺平了大半年
说实话,那段时间我状态很差。
早上不想起床,不想开 Qt Creator,不想看 .pro 文件。打开 IDE 就觉得没意思------反正 AI 写得比我快,我写的意义是什么?
我甚至在想,这十几年是不是白干了?
那些为了做一个流畅的自定义委托,重写 QStyledItemDelegate 调到凌晨的日子;那些为了让视频监控在嵌入式板子上跑起来,交叉编译 Qt、裁剪库文件、调 GPU 驱动的周末;那些为了让地图控件支持百万级海量点,研究空间索引算法、优化绘制性能的夜晚------在 AI 面前,是不是都成了笑话?
我做过那么多东西:自定义控件大全、物联网组件、音视频硬解码组件、雷达模拟仿真、人脸识别、二维码解析、数据库多线程组件、PDF 阅读器、安装包制作工具......每一个都是心血。可现在 AI 似乎什么都能写,而且写得还不差。
有天下班,我在地铁上看到一个外卖小哥,戴着耳机等红灯。我突然特别羡慕他。
至少他的工作,AI 暂时还替代不了。而我,一个干了十几年的老 Qt C++ 程序员,居然开始怀疑自己的存在价值。
