当前位置: 首页 > news >正文

机器码你也看不懂,为什么 AI 代码必须逐行看懂?

今天下午,我坐高铁去深圳,旁边是一位正在找实习的大三学生。聊了一会儿,发现她刚好要面试 AI 应用开发岗位,我就和她交流了一下 AI 开发的经验。

聊着聊着,她问了我两个问题:“现在大家都用 AI 做项目,我应该拿什么当作品集?”“如果以后都让 AI 写代码,我看不懂它写的代码怎么办?那我现在辛辛苦苦学编程还有意义吗?”

她的担心里藏着两个等号:

  1. AI 写代码 = 我学代码不再有价值。
  2. 我不能逐行理解 = 这份代码更差、更乱、更不可靠。

这两个等号,我先不发表意见。

我先想到的是另外两个问题:她为什么会把“AI 开始写代码”和“自己几年白学了”连在一起?为什么一想到自己不能逐行理解,脑子里先出现的就是“AI 写出来的东西可能很垃圾”?

而这两个问题,又把我带回了一个从 AI 编程出现起就没停过的争论:AI 写的代码到底能不能用?为什么有些人总是高高在上地嘲讽用 AI 写代码的人,尤其喜欢抓住一点:你连 AI 写的代码都看不懂,代码质量一定很差。

我觉得这件事刚好值得讨论一下。

为什么“必须逐行看懂代码”这件事情值得怀疑

先说“看不懂”这件事。别再拿“能不能逐行看懂 AI 代码”判断一个人配不配做开发。

我尤其想问那些人一句:你能看懂 0 和 1 吗?你能逐条审核编译之后的机器指令吗?如果做不到,凭什么把“逐行看懂”拿来当优越感?

今天写程序的开发者,有几个能逐条解释编译器生成的机器指令?不说机器指令,汇编语言懂的人又有很多吗?大部分也都是只会高级语言。

操作系统、数据库和网络框架的全部实现,又有几个人完整读过?现代软件本来就建在一层层抽象上。我们要知道所用能力提供什么、会在哪里失效,不需要先把下面几层重新手写一遍。

AI 当然不是编译器。编译器的语义相对稳定,AI 是概率系统,会误解需求,会重复造轮子,也会在一次看似无关的修改里破坏旧行为。我拿机器码做类比,不是要抹平这种差别,而是因为它们都在做同一方向上的事:把人的意图继续转成更低层的执行细节,让人的注意力向上迁移。

既然软件开发早就允许人依赖没有逐行读过的抽象层,为什么到了 AI 这里,“逐行看懂所有实现”又突然成了开发者的资格证?

我反对的不是理解代码,而是把“逐行看懂代码”当成开发者的阶层准入门槛。

AI 没有发明屎山,它只是放大器

先说第二个等号:不能逐行理解,就意味着代码更差、更乱、更不可靠。

如果一个人连自己的项目解决什么问题、为什么这样解决都答不上来,没有测试,没有回滚路径,只剩一句“AI 说它完成了”,这当然是垃圾工程。但这真的是 AI 的专长吗?难道人类不会产出屎山代码?

安全漏洞、重复代码、坏抽象和屎山都早于 AI。人一样会为了赶进度复制粘贴,会在没有测试时改坏旧功能,也会把临时方案留成谁都不敢动的永久架构。

AI 改变的是速度。以前一个人要花一周堆出来的混乱,现在一天就够。反过来,边界清楚、约束明确、测试扎实的团队,也能用同样的速度推进。

真正的问题是,代码生产突然变快了,验证体系却没有同步长出来。自动测试、接口契约、静态分析、变更记录、风险分级、真实环境验收和回滚设计,必须接住多出来的产能。我们缺的不是重新逼所有人逐行阅读,而是一套能判断这些代码究竟能不能交付的稳定方法。

所谓控制,是系统地图、风险边界和验证方法不能一起消失。证据不足时,就让 AI 解释、缩小改动或者重构;出了问题,就把范围收进某个模块、某条数据流或某次变更。

一个周末原型和医疗、金融、安全关键系统,当然不能采用同样的理解深度。失败代价越高、验证越弱、维护时间越长,人就越要深入实现,必要时直接接管关键部分。你承担多大的责任,就要拿出多深的理解和多强的证据。

代码可以有没逐行读过的部分,但工程不能跟着变成盲盒。

AI 编程争的到底是代码质量,还是话语权?

既然 AI 的风险是真的,为什么我还要把话说得这么尖锐?

因为很多围绕 AI 编程的争论,表面上在谈代码,底下争的却是:谁有资格定义什么叫开发者。

真正担心安全,就指出攻击面和失败样例;担心维护,就指出耦合、依赖和修改影响;担心回归,就看测试和发布门禁。这些都可以拿证据讨论。

可有些争论根本不谈证据。它们从“这段代码有什么问题”直接跳到:

你必须亲手写。

你必须逐行理解。

你必须按照旧有的方式完成学习。

否则,你就不算真正的开发者。

这就不再是在审代码,而是在划职业边界。

一个人花十年熟悉语法、框架、API 和各种工程细节,过去这些能力足以形成一道很高的门槛。现在 AI 把其中不少实现工作变得便宜,一个经验没那么深的人,也可能很快做出过去需要多年经验才能完成的功能。被威胁的当然不只是工作,还有晋升、薪资、自尊和专业地位。

这时最容易发生的,不是平静地承认“我的一部分能力正在失去稀缺性”,而是重新定义什么才算真正的开发:我最熟悉的方式,才是唯一正统的方式。

我不是说每个批评 AI 的人都害怕失业,也不需要猜每个人心里在想什么。只要看讨论有没有从“结果哪里不可靠”滑向“用这种方式的人不配”,就够了。前者是工程批评,后者是资格审查。

旧能力当然有价值。但任何一个职业群体,都不能因为新的工具威胁了自己的稀缺性,就把自己的不安全感包装成行业真理吧。

我反对的不是理解代码,而是把自己熟悉的那一层实现,包装成所有人进入开发者职业的唯一门票。

我在 Curio 里实际负责什么

拿我自己来说。我现在也基本上是用 AI 写代码。你说我不理解我的代码,我也不辩解。但我到底在做什么?

系统怎么分、功能接进哪条产品路径,是我定,它实现。

代码什么时候应该停下来简化,哪些函数和模块需要重新抽象,是我提出,它执行。

功能做到什么程度才算交付,是我定义,它完成,我验证。

这里面我没有消失吧?

开发 Curio 时,我更常先想清楚:用户现在在哪里,接下来最自然的动作是什么;中途改变主意时,什么东西不能丢;一个新功能应该接进现有哪条产品路径,而不是再造一套看起来差不多的页面。

需求还没对齐时,我不会急着让 AI 写正式代码。我先让它画原型,把理解变成一个看得见、点得动的东西。原型不对,就继续改理解,而不是先制造一堆以后要删的代码。

原型对齐以后,我再让 AI 去读代码、找实现位置、提出方案、补测试和完成修改。结构变复杂了,我会叫它停下来简化或者重构。出了问题,我未必会先扑进去逐行定位,但我会让 AI 挨个代码段检查、分析、测试,把问题缩到某个模块、某条数据流或者某次变更,再决定能不能交付。

我也不会看到“测试通过”四个字就觉得结束了。代码写完、自动测试、模拟器、真机、内测和公开发布,是不同的门禁。每一道门禁都只证明自己,一层层通过,我才会把新版本交到用户手里。

脏活累活可以让 AI 干,但产品应该是什么样、工程有没有失控、证据够不够、最后交不交,仍然是我负责。

所以如果问我在 Curio 里贡献了多少,我不会用代码行数回答。我负责定义什么算对,驱动 AI 把它做出来,再对最终交付负责。

基础没有失去价值,只是用途变了

回到列车上那位学生。她学过的代码当然没有白费,只是不必再把用途限定为亲手生产每一行。(而且所谓“亲手生产”,过去不也包括 Ctrl+C、Ctrl+V,以及去开源项目里“借鉴”吗?)

她学过的语法、框架和调试经验,今后更多会被用来判断 AI 的方案、识别风险、设计测试、控制复杂度,以及在关键位置接管。

你知道状态为什么会丢,才能要求 AI 检查数据生命周期;你知道模块为什么要有边界,才能看出它是不是为了赶功能把所有东西揉在一起;你真的调试过,才知道“页面能打开”和“问题被解决”之间还隔着多少东西。

基础没有失去价值,只是从生产工具变成了判断工具。

初学者仍然要亲手写、亲手调。没有那些失败和修正,所谓技术直觉只是自我感觉。区别在于,学习的终点不再是永远手写所有实现,而是能约束 AI、看出坏设计,并在必须接管时真的接得住。

AI 应用开发的作品集,到底该拿什么证明自己?

现在可以回答她的第一个问题了:AI 应用开发的作品集,到底该拿什么证明自己?

不要再凭空做一个 Todo List,也不要靠堆功能证明自己。找一款成熟、边界清楚、最好能单机运行的软件,实际用一遍,留下截图和录屏,再跟 AI 一起拆它的页面和流程:为什么搜索放在这里?为什么这个动作在右边?为什么先选东西再命名?

拆完以后,复刻其中最小的一条闭环。复刻的重点不是把界面描得多像,而是说清楚原产品为什么这样做、自己保留了什么、删掉了什么。AI 在实现中犯过的错,也应该放进案例里:错在哪里,怎样发现,最后用什么证明已经修好。

现在“做出一个东西”已经很便宜了。作品集继续晒代码量,意义只会越来越小。拿去面试时,她应该讲清楚自己怎样看懂这个产品,又怎样把一个问题一直带到交付。

如果第二天就开工,可以把这件事压成具体动作:

  • 第一件事:选一款成熟、边界清楚、最好单机运行的软件,截图并拆出最小闭环。
  • 第二件事:让 AI 协助分析设计、画原型、完成复刻,同时做一个不同于原产品的判断。
  • 第三件事:实现功能,建立测试、模块约束和变更记录,把 AI 犯过的错误也留下来。
  • 第四件事:整理为什么选、如何拆、AI 做了什么和错了什么、怎样验证、自己的判断是什么、最终交付到了哪里。

这份案例不靠功能数量取胜。面试官应该从中看到:产品由她定义,AI 参与实现,验证和交付由她负责。

至于她问的第二个问题——“我现在学代码,到底还有没有用?”

当然有。只是代码基础以后更多用来判断方案、发现风险和关键接管,不必再拿它和 AI 比谁写得快。

她也不需要先拿到某群人颁发的“真正程序员”资格,才开始做产品。把一件事做出来,说清楚为什么做、哪里有风险、怎样验证,并对结果负责,这些比“每一行是不是亲手写的”重要得多。

谁能定义问题、控制工程风险并完成交付,谁就在做真正的开发。

如果你看完了还觉得 AI 写代码是违背祖宗之法,那我只能说,你对。

http://www.jsqmd.com/news/1311029/

相关文章:

  • ConcurrentHashMap 深度解析:从分段锁到 CAS 的进化之路
  • 告别拼音文件名:3分钟掌握Calibre中文路径保护插件
  • 基于机器学习模型的缺失值填补:从MICE原理到scikit-learn实战
  • 苹果M5 Max芯片深度实测:专业用户如何评估MacBook Pro极限性能
  • 如何设计移动类型清单:从状态机到智能工作流的核心实践
  • 微信DAT文件在线解码工具:基于异或加密原理的纯前端图片还原方案
  • 基于渥太华大学轴承数据集的多转速故障诊断实战指南
  • N_m3u8DL-CLI-SimpleG:免费图形化M3U8视频下载工具终极指南
  • 代码随想录day8
  • 保研面试操作系统核心:进程线程、内存管理与I/O模型深度解析
  • gamma曲线图
  • AI芯片封装技术演进:从算力墙到封装墙的突破路径
  • 蓝牙串口透传模块(蓝牙Bee)从入门到精通:选型、配置与实战避坑指南
  • uni-app微信小程序实现车辆图片滑动查看功能详解
  • 局部莫兰指数(LISA)原理、计算与可视化:空间热点探测全解析
  • CCAA能源管理体系审核员职业路径全解析:从入门到精通
  • 2026年必看!专业匹克球拍工厂推荐榜单大揭秘,不容错过!
  • Altium Designer差分走线实战:从原理到PCB设计的完整指南
  • 理财风险等级R1-R5实战解读:从资产配置到避坑指南
  • # 门头招牌制作技术解析:工艺流程到数字化升级
  • 终极KMS激活指南:三步永久激活Windows和Office的完整教程
  • xHCI数据结构深度解析:从寄存器到链表,掌握USB 3.0驱动开发核心
  • 家装电线选购全攻略:从BV2.5规格解析到施工验收避坑指南
  • 作业3—策略路由练习实验
  • ELRS开源射频协议:LoRa与FSK混合技术如何实现远距离低延迟控制
  • 秒级克隆、零拷贝沙箱!不止 Lakebase,PostgreSQL 18 迎来瞬时分支能力
  • AI 电动保温瓶智能功率 覆盖加热驱动、电源管理与电机控制的核心选型方案
  • 小龙虾论坛热门部署帖,TopClaw免代码开箱即用直连多端
  • JavaScript字符串拼接性能优化:五种方法深度解析与实战指南
  • Linux内核-文件系统-超级块操作