一个开发者用AI写了1000行代码后,发现了比"AI取代程序员"更值得警惕的事。
Hussain Shamlooh最近做了件有点偏执的事:他故意让ChatGPT、GitHub Copilot等工具生成各种代码,不是为了用,而是为了"解剖"。结果翻完1000多行输出后,他说自己被"一种安静的、不舒服的方式"吓到了——不是机器人造反那种戏剧化恐惧,而是发现周围人还没注意到的重要隐患。
AI代码的"表面正确"陷阱
Shamlooh发现,AI生成的代码有个致命特点:看起来能跑,读起来合理,但仔细检查会冒出各种问题。他把这叫"表面正确性"——语法没报错,逻辑框架像那么回事,甚至能完成基础功能。可一旦往深处看,隐患就开始排队。
比如变量命名。AI喜欢用`data`、`result`、`temp`这种万能词,一个函数里能冒出三四个`data1`、`data2`、`data3`。人类写代码时,命名是思考过程的外化;AI则是在"预测下一个最可能出现的词",它不理解这些词在业务场景里的真实含义。
更隐蔽的是边界条件。Shamlooh测试了一个文件处理脚本,AI写的版本对空文件、超大文件、特殊字符文件名全部沉默通过——没有异常处理,没有日志记录,运行起来像开一辆刹车时灵时不灵的车。
安全漏洞的"合法化"伪装
真正让他后背发凉的是安全相关代码。AI会生成包含SQL注入风险的查询语句,会把用户输入直接拼进命令行,会在注释里写"TODO: add validation"然后永远不做。这些不是明显的错误,而是"看起来合理"的坏习惯。
Shamlooh打了个比方:AI像是个记忆力超群但毫无责任心的实习生,能复述所有最佳实践,却会在你转身倒水时把生产数据库的密码写进日志。
他统计了自己样本中的问题分布:约30%存在可维护性隐患(命名混乱、重复代码、魔法数字),15%有明确的安全风险,剩下55%属于"现在能跑,三个月后维护者想杀人"的技术债。没有一行在语法层面报错。
开发者正在养成的危险习惯
比代码问题更深层的是行为模式。Shamlooh观察到,当AI生成速度够快时,人类的"审查肌肉"会快速萎缩。他承认自己也有几次差点直接复制粘贴——"它看起来是对的"这个念头几乎战胜了检查的冲动。
GitHub 2023年的调研显示,Copilot用户中有35%会"经常或总是"直接采纳AI建议而不做实质性修改。Shamlooh的样本量更小,但现象更极端:他测试的7个常用提示词场景里,有5个生成的代码包含他定义的"严重隐患",但外观上都通过了基础功能测试。
「我开始把它们当作工具,后来变成了研究对象。」Shamlooh在复盘时写道,「最可怕的不是AI写得差,而是它写得足够好,好到让你停止思考。」
一个未被测量的成本
Shamlooh没有给出解决方案。他承认自己现在用AI更谨慎了——不是不用,而是强制自己逐行阅读生成的代码,像审查同事提交的PR(Pull Request,代码合并请求)那样。这让他效率变低,但睡得安稳些。
他最后提了一个没人能回答的问题:如果未来五年,代码库里50%的内容来自AI生成,而我们又没有养成审查它的习惯,那些"现在能跑"的隐患会在什么时候集体爆发?
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.