导语

很多 C++ 程序员现在真正关心的不是“AI 会不会写 C++”,而是:如果大家都开始用 vibe coding,把需求丢给模型、边跑边改、快速生成代码,C++ 这种重工程语言会被冲击到什么程度。我的判断是:冲击很大,但不是把 C++ 程序员整体替掉,而是把一部分重复编码、接口拼装、测试补齐、迁移改造的价值迅速压低,同时把架构判断、性能边界和工程约束的重要性抬高。

这篇文章更适合已经在写 C++、维护 C++ 项目,或者准备把 AI 编程工具接入 C++ 工作流的人看。它不讨论宏大的“程序员会不会失业”,只回答一个更实际的问题:哪些 C++ 工作会被 vibe coding 改写,哪些仍然不能放心交给 AI,以及普通团队该怎么调整自己的写法。

冲击不在替代,而在前移

vibe coding 对 C++ 最大的改变,不是让一个完全不懂 C++ 的人直接写出高质量交易系统、游戏引擎或数据库内核。真正的变化是,很多原本需要资深工程师亲自开头的工作,现在会被 AI 提前推到一个“能编译、能跑、能讨论”的状态。

过去写一个新模块,常见流程是先翻旧代码、找类似实现、搭目录、补 CMakeLists.txt、定义头文件、写几个空实现,再慢慢把业务逻辑填进去。这个过程不一定难,但非常耗注意力。vibe coding 出现后,工程师可以先描述目标:我要一个支持超时、重试、日志、单元测试的客户端封装。AI 很快能给出第一版代码、测试样例和构建脚本。

这会让“从 0 到 0.6”的速度明显变快。以前一个下午才能搭完的骨架,现在可能几十分钟就能进入 review。冲击就在这里:C++ 项目里大量低创造性的铺垫工作,会被压缩。

但 C++ 的问题也恰好在这里。能跑不代表能进主干,能编译不代表能长期维护。AI 生成的 C++ 往往看起来很完整,真正风险藏在对象生命周期、异常安全、并发边界、ABI 兼容、内存所有权和性能退化里。这些问题不是 vibe 一下就能消失的。

最先被改写的是样板代码

C++ 里最容易被 AI 改写的,是那些模式明确、反馈快速、风险可隔离的代码。

比如写命令行工具、配置解析、日志包装、协议字段转换、简单的 DTO 到业务对象映射、enum 和字符串互转、单元测试补齐、老接口迁移到新接口。这些工作有一个共同点:规则清楚,局部上下文足够,错了也容易通过编译、测试或人工 review 发现。

在这些场景里,继续手写所有细节的性价比会越来越低。尤其是测试代码。很多 C++ 项目不是不会写测试,而是懒得补齐测试样例、mock 边界和异常分支。AI 很适合先生成一批覆盖常规路径的 gtest 用例,再由工程师删掉没意义的、补上关键边界。这个模式比“等有空再补测试”现实得多。

另一个明显场景是老代码整理。C++ 项目经常有很多历史接口、命名不统一、重复分支和陈旧封装。AI 可以帮你做局部重构建议,列出函数职责,生成迁移前后的调用点对照。它不一定能独立完成重构,但能把“读代码”的第一层成本降下来。

所以最先受冲击的不是最难的 C++ 能力,而是中间那层“熟练但重复”的劳动:照着已有模式扩一个类,补一组转换函数,写一批测试,改一堆调用点。

C++ 的难点不会消失

如果把 vibe coding 当成“自然语言编译器”,在 C++ 上会很容易翻车。因为 C++ 的很多 bug 不会马上以红色报错的形式出现。

一个 Python 脚本写错了,通常运行到那一行就炸。一个前端组件写错了,页面行为很快暴露。C++ 不一样。一个错误的引用生命周期,可能在压力测试时才偶现崩溃;一个多线程数据竞争,可能只在特定机器上出现;一个看似无害的拷贝,可能让热点路径多出明显延迟;一个 ABI 变化,可能让下游插件在运行时才出问题。

AI 最容易在这些地方给出“看起来合理”的答案。比如它可能用 std::shared_ptr 解决所有所有权问题,用 std::mutex 包住所有共享数据,用异常处理所有失败路径,用模板把简单问题写得过度泛化。这些代码能编译,甚至能通过简单测试,但未必符合项目里的性能、风格和部署约束。

这也是 C++ 和很多脚本语言面对 vibe coding 时最大的区别。C++ 的核心成本不只是“写出代码”,而是“证明这段代码在边界条件下仍然可靠”。AI 能降低输入成本,却不能自动承担验证成本。

适合交给 AI 的 C++ 工作

如果你想在 C++ 项目里用 vibe coding,最好先从低风险、可验证、上下文明确的任务开始。

第一类是脚手架和胶水代码。比如新建模块骨架、补 CMake 配置、写简单的命令行入口、生成序列化和反序列化样例。这些代码价值在于快,后续可以通过编译和测试迅速筛掉问题。

第二类是测试和用例扩展。让 AI 根据已有函数签名和旧测试,补充正常路径、空输入、边界值、异常返回、资源释放等用例。工程师的重点不是接受全部生成结果,而是挑出真正能防回归的部分。

第三类是局部迁移。比如把一批旧接口调用迁移到新接口,把裸指针调用改成项目约定的智能指针封装,把重复的错误码处理整理成统一路径。这里要注意范围必须小,最好一次只改一个目录或一类调用,不要让 AI 横跨整个仓库做大规模重构。

第四类是代码解释和风险清单。让 AI 先读一个类,输出它的职责、状态变化、外部依赖和可能风险。这个用法往往比直接让它改代码更稳,因为它帮你节省理解成本,而最终判断还在工程师手里。

不适合直接 vibe 的工作

反过来,有些 C++ 工作不要直接交给 vibe coding,至少不要在没有强 review 和测试的情况下交出去。

性能热点不要直接交。比如交易撮合、音视频处理、游戏主循环、数据库执行器、编译器优化路径。这些地方的正确性不只看功能,还看延迟、吞吐、缓存命中、分配次数和尾延迟。AI 可能会写出逻辑正确但性能灾难的代码。

底层并发不要直接交。涉及无锁结构、线程池调度、跨线程对象生命周期、内存序、锁粒度设计时,AI 生成的代码非常需要人工拆解。它可以给思路,但不能替代并发设计。

跨 ABI、跨平台、跨编译器的代码也要谨慎。很多 C++ 项目最痛的不是语法,而是平台差异。Windows、Linux、不同编译器、不同标准库实现,都会让看似普通的代码出现差异。AI 不一定知道你们项目真实的构建矩阵。

还有一类是安全边界代码,比如解析外部输入、处理网络数据、插件加载、权限控制。这里不能只看“能不能跑”,还要看异常输入、越界、资源耗尽和攻击面。AI 生成代码如果缺少威胁模型,很容易留下隐患。

更稳的用法是先约束再生成

在 C++ 里用 vibe coding,最重要的一点是:不要只给需求,要先给约束。

一个低质量提示词是:“帮我写一个缓存类。” 这会得到一个看似完整但未必可用的实现。更好的写法是:“在现有项目风格下,写一个仅用于单线程读写的 LRU 缓存,容量固定,不抛异常,不使用全局状态,接口包含 get、put、erase,并补充 gtest。不要引入新依赖。”

这类约束会显著降低 AI 发散的空间。C++ 代码最怕“自作主张”:自作主张引入依赖,自作主张抽象模板,自作主张改异常策略,自作主张换所有权模型。提示词里把这些边界说清楚,比生成后再一点点纠偏更省事。

一个比较稳的工作流是四步:先让 AI 读现有类似代码,总结项目约定;再让它只生成最小实现;然后要求它补测试和列风险;最后由工程师跑编译、测试、性能检查和 review。这个流程慢于纯 vibe,但适合 C++。因为 C++ 的成本不是打字,而是验证。

如果团队已经有清晰的 clang-format、clang-tidy、单测、benchmark 和 sanitizer,AI 的收益会更大。因为工具链能替你拦下一批低级问题。反过来,如果项目没有测试、没有静态检查、构建还很脆弱,vibe coding 只会把“不确定代码”生产得更快。

对 C++ 程序员的真正冲击

从个人能力看,vibe coding 会让“会写语法”和“会套模板”的价值下降。未来写 C++,只会背标准库接口、熟悉常见写法,优势会越来越小。因为这些内容 AI 很擅长补齐。

更值钱的是三类能力。

第一是把需求切小的能力。你能不能把一个模糊目标拆成可生成、可测试、可回滚的小任务,决定了 AI 是帮你提速,还是帮你制造一堆难 review 的代码。

第二是工程约束表达能力。你能不能说清楚这个模块的性能要求、异常策略、所有权边界、线程模型、平台限制,决定了生成结果是不是接近可合并。

第三是验证能力。你能不能设计测试,能不能看出潜在 UB,能不能用 sanitizer、benchmark、日志和线上指标判断风险,决定了你能不能安全接住 AI 生成的代码。

所以 C++ 程序员不是被“不会写代码的人”直接替代,而是会被“懂 C++、懂工程约束、又会用 AI 放大产出的人”挤压。差距不在是否使用 AI,而在是否能把 AI 纳入一个可靠的工程流程。

团队该先改工作流

如果你是技术负责人,不建议一上来就要求全员“用 AI 提效”。这句话太空,最后往往变成大家各用各的,生成代码风格不一致,review 压力反而变大。

更实际的做法是先选三类任务试点:测试补齐、脚手架生成、局部迁移。每类任务都规定输入格式、输出边界和验收标准。比如测试补齐必须基于已有测试风格,不能引入新测试框架;局部迁移必须限制目录范围,必须附带编译结果和变更说明;脚手架生成必须符合现有目录结构和命名约定。

同时要把 review 标准从“这段代码是不是 AI 写的”改成“这段代码是否满足项目约束”。不要迷信人工写的代码,也不要歧视 AI 生成的代码。C++ 项目真正需要的是可验证、可维护、可追责。

如果团队没有自动化测试,先别急着追求大规模 vibe coding。先让 AI 帮你补测试、整理文档、解释旧模块,把验证体系搭起来。验证能力越强,AI 生成代码的收益越大;验证能力越弱,AI 生成代码的风险越难控制。

结论

vibe coding 对 C++ 的冲击会很大,但它冲击的不是 C++ 的底层价值,而是 C++ 开发流程里大量低效、重复、上下文明确的部分。样板代码、测试补齐、接口迁移、局部解释会越来越快;性能热点、并发模型、安全边界、跨平台约束仍然需要强工程判断。

对个人来说,最值得做的不是争论 AI 会不会替代 C++ 程序员,而是把自己的工作从“亲手写每一行”升级成“准确描述约束、快速生成初稿、严格验证结果”。对团队来说,最值得先做的不是全面拥抱 vibe coding,而是从低风险任务开始,把提示词、测试、review 和工具链连成闭环。

C++ 不会因为 vibe coding 变简单。它只会让简单部分更快暴露,困难部分更难被忽略。谁能更早建立这套工作流,谁就能真正吃到 AI 编程的红利。