现在靠AI写代码速度确实很快。输入一行注释,它就能一次性补齐十行代码。但不少场景下,开发者不敢直接拿来用。不是不想省功夫,而是承担不起后果。一旦出故障,带来的不只是返工重写,还可能产生巨额赔偿、刑事责任,甚至危及人身安全。这类场景,依旧沿用传统手写代码的模式。
先说嵌入式开发,包含单片机、PLC以及各类传感器硬件。设备内存往往只有几K,主频仅几十兆。AI生成代码时常附带各类库函数,依赖大量库资源,硬件根本装载不下。开发者只能翻阅数据手册,核对寄存器,自行计算时序参数。I2C总线需要引出几条信号线,SPI时钟极性设置是否正确,中断服务函数内部能不能加入延时操作,这些细节AI给出的代码看起来完整,烧录进硬件之后却无法正常运行。拿示波器抓取波形,很容易发现时序异常。这类代码只能逐行手写,逐个断点调试排查。

内核与驱动开发的情况更加典型,像Linux驱动、RTOS任务开发。让AI帮忙添加锁机制,它可能直接返回mutex锁代码,但这种锁不能在中断上下文使用。需要编写内存屏障相关逻辑,AI往往只留下一段注释。内核层面的竞态条件,隐患可能潜伏数月之后才突然触发。项目维护人员不会直接接纳AI生成的大段代码,开发者需要通读源码,查阅邮件列表,自行编写补丁,同时解释代码修改的缘由。传统手写编程在这里不是可选方案,而是准入门槛。
安全关键领域也属于这一类。医疗设备、飞行器飞控系统、核电站、汽车制动系统,对应的规范有DO-178C、IEC 62304、ISO 26262。这套体系要求每一行代码都可追溯,需求、设计、实现、测试内容必须一一对应。AI产出的代码来源无法确认,内部逻辑难以解释,没法通过认证流程。代码必须人工编写,人工评审,配套的工具链都是老旧版本。编译器版本被指定,不能联网,不允许自动更新。在这类行业,手写代码本身就是合规要求的组成部分。
金融交易系统同样无法依赖AI。低延迟交易场景,时间精度达到纳秒级别。AI输出的通用排序算法无法直接投入使用。开发者要考虑CPU缓存行、无锁队列、内存对齐、系统调用带来的开销。部分场景需要手写汇编指令,或是调用intrinsics内置函数。网络协议栈需要绕开内核,网卡依托DPDK框架运行。这类代码不是教科书现成内容,是反复压力测试打磨出来的。AI训练数据集里,缺少交易所各种隐蔽的边界坑点。
老旧系统维护工作更明显。银行、保险、政务体系留存大量COBOL、Fortran、Delphi、VB6编写的程序。当初开发人员大多已经退休,配套文档丢失。AI训练数据存量不足,补写出来的代码甚至语法都会出错。开发者只能逐行阅读原有代码,手绘流程图,推导变量含义,修改一行代码就要连续测试数日。这种手写编程,相当于一边考古一边精细维修钟表。
离线保密环境,比如军工、情报机构、部分实验室。工作电脑禁止接入互联网,无法使用GitHub Copilot、ChatGPT。可用资料仅限本地文档、纸质手册、离线编译器。代码只能手动录入,版本信息手动维护。这不是怀旧选择,是物理隔离带来的硬性约束。
教学与算法竞赛场景,老师和面试考官都会限制AI使用。不是否定工具价值,而是要考察思考过程。算法题目交由AI完成,学习者很难收获提升。竞赛现场网络断开,只能依靠自身推导。这种手写编程,用来夯实基础能力。
密码学和底层安全开发。让AI编写AES加密代码,它可能返回查表实现方案,但缓存时序会泄露密钥。常数时间编码、侧信道攻击防护,AI经常编造错误逻辑。智能合约风险更高,一处重入漏洞,就会造成资金损失。这类代码需要行业专家手写,逐行审计,还要完成形式化验证。
编译器、数据库、虚拟机开发。编写JIT即时编译模块,处理寄存器分配、指令选择环节,AI给出的方案过于宽泛。性能相差百分之十,代码就无法上线。开发者需要研读源码,修改IR中间表示,持续运行基准测试。手写代码在这里属于日常工作。
还有部分开源项目,维护者明确拒绝接收AI生成的PR提交。不是单纯歧视,而是这类代码难以开展评审。提交者要吃透项目原有代码,手写实现,清晰写明改动理由。手写编码,属于社区既定规则。
传统手写编程并没有消失,只是收缩到容错率极低、断网隔离、不能敷衍的业务场景。AI可以辅助撰写注释、测试用例、文档材料。但核心关键代码,依旧需要开发者静下心,逐行打磨。不是传统手写模式本身有多优越,而是有些开发任务,根本快不起来。

