简介:当学生交上由AI生成、自己却讲不明白的代码时,教师不必急着禁止。本文分析编程能力价值的迁移逻辑:会写代码正在贬值,会定义问题、会验收结果、会判断边界正在升值;并结合AI生图教学的类比与可落地的作业改造方案,给出从任务设计、过程性评价到学术诚信重建的完整应对策略,帮助教师把“AI依赖”转化为新的教学资源。
一、一个真实的课堂困境
批改作业时,教师常会遇到这样的场景:提交的代码整洁规范、注释完整、逻辑顺畅,可一旦追问细节——这个变量为什么这样命名?这个异常分支为什么这样处理?学生却答不上来。他只是把需求描述贴给了智能编程助手,把模型返回的代码原样交了上来。
许多教师的第一反应是焦虑,甚至想退回“禁止使用AI”的老路。但禁令很难奏效:AI辅助编程已成为行业常态,学生迟早要在真实工作中与这些工具共处。真正值得做的,是把“学生用AI”从纪律问题,重新定义为一个教学设计问题。
二、价值迁移:从“会写”到“会问、会判、会改”
业界近年有一个被广泛引用的判断:过去的编程是显式的,每一行代码都要由受过专门训练的人亲手写出,“把想法翻译成代码”的打字能力构成了程序员的准入门槛;而当编程逐渐变成隐式的——人只需要向AI描述意图,代码由模型生成——打字环节的稀缺性就快速下降了。
这个判断未必在每个细节上都精确,但它揭示的趋势值得教师认真对待:当代码的边际成本趋近于零,真正稀缺的能力变成了另外几样:
换言之,敲代码正在从“核心能力”降级为“中间环节”。如果教学仍把评价重心放在“能不能独立写出这段代码”上,衡量的是一个正在贬值的能力。
三、“看不懂AI写的代码”到底要不要紧?
先还原我们要求学生读懂代码的原始目的。这条目的链大致是:
读懂代码 → 出问题时能定位 → 能修正 → 最终保证交付质量。
注意,“读懂”只是手段,“保证质量”才是目的。当链条上游的两个前提发生变化时,手段的必要性就需要重新评估:
前提一:代码出错的比例。如果AI生成代码的缺陷率持续下降,甚至在常规任务上低于人类平均水平,逐行读懂的边际价值就在缩小。
前提二:修正的分工。如果学生只需把失败用例、报错信息或测试结果反馈给AI,模型就能自查并给出修正——就像让作者重读一遍自己的稿子——“人工定位缺陷”这一环节也可能被部分替代。
这两个前提当然还没有完全成立,但在越来越多的常规场景中,它们正快速逼近。因此更严谨的结论不是“懂不懂无所谓”,而是:
理解的重心需要迁移——从“逐行读懂语法与实现”,升级为“能验证行为、能判断边界、能界定责任”。
学生可以不知道某个语言特性的冷门细节,但必须能回答三个问题:这段代码在什么输入下会失败?失败造成的后果有多严重、由谁承担?我凭什么相信它这次是对的?这三个问题不依赖逐行阅读,却构成了AI时代真正的“读懂”。
同时也要守住底线:涉及安全、隐私、资金、生产环境的关键系统,人对代码的实质性理解在可预见的未来仍不可豁免——不是因为AI一定会写错,而是因为责任必须有人承担,关键判断必须有人做出。
四、来自AI生图教学的类比
笔者在学校讲授演示文稿课件制作课程。从去年开始,课程专门安排课时讲解AI辅助图片生成:教学生使用当下流行的AI生图工具,为课件产出所需的图片素材。
这门课提供了一个很干净的观察样本。对AI生图而言,最终交付物就是图片本身;课堂上教的提示词写法、对不满意区域的引导修正,都属于使用方法与经验,而不是原理层的东西。从原理上说,AI绘图是从一张随机噪声图出发,在文字条件的引导下逐步去噪、补全细节,最终“凝”出一张清晰图像。但把这套原理讲得再透彻,对生成一张更好的图片几乎没有直接帮助。
对工具的使用者来说,学会把技术用得更好,明显比搞清技术原理更重要。一句话概括:得到满意的图片并放进课件,才是学习目的;懂不懂原理,并不妨碍这个目的达成。
更有意思的是技能的贬值速度。早期的生图工具往往需要专业化、结构化的提示词才能输出高质量结果,于是提示词写作一度是核心技能;而随着模型能力提升,自然语言描述已经足够,提示词技巧的价值快速缩水。反而在升值的是两样东西:想象力——知道要一张什么样的图;共情力——知道这个场景下什么样的画面能引发受众共鸣、支撑内容表达。
把这条曲线平移到编程教学上,结论是同构的:语法与实现技巧正在贬值,问题定义、方案品味、对用户真实痛点的共情以及验收能力正在升值。课程内容若不跟着这条曲线调整,学生就算“弄懂了”旧地图,也找不到新大陆。
五、教学落地:四步改造方案
第一步,重构任务类型。把传统的“实现型作业”(写一个XX函数)改为三类新任务:
第二步,改造提交物。作业不再只交最终代码,而是一组过程材料:需求描述、与AI的多轮迭代记录、测试用例及运行结果、审查与复盘报告。评价维度随之从“代码对不对”扩展为“需求是否清晰、测试是否覆盖边界、缺陷是否被发现、决策是否有依据”。
第三步,设置分层要求。对不同程度的学生设定不同的“懂”的标准:入门阶段要求能运行程序并解释输入输出行为;进阶阶段要求能针对空输入、非法输入、并发等典型边界构造测试;高阶阶段要求能评估方案取舍、识别安全与合规风险。
第四步,重建学术诚信的定义。要求学生在作业中如实披露AI参与的方式与程度——这不只是诚信要求,本身就是职业训练:在真实工程实践中,“说明哪些部分由AI生成、验证过程是什么”正在成为常规要求。相应地,“抄袭”的定义也应从“复制了代码”更新为“未经任何验证与理解就采纳了产出”。
六、一个改造后的作业示例
以“计算平均分”这道经典题目为例,展示改造前后的差别。
改造前:编写函数,计算学生成绩列表的平均分。学生可以直接让AI生成,教师无从判断其真实能力。
改造后按四步执行。学生先写需求约定,例如:输入为成绩列表;列表可能为空,为空时返回 None 而不是抛出异常;需附带覆盖空列表、正常列表、含非法元素的测试用例。随后让AI生成代码,学生运行测试并撰写审查报告。
假设AI返回了这样一段典型代码:
def average(scores):return sum(scores) / len(scores)
审查点由此自然浮现:
修复后的参考实现:
def average(scores):if not scores:return Nonereturn sum(scores) / len(scores)
在这个流程里,学生“是否逐行理解实现”不再是唯一评分重点,“是否预见了空列表、是否构造了测试、是否推动了修正”成为核心得分点——这恰恰是前文所说的、正在升值的能力。当学生把失败用例反馈给AI、由模型自查修正时,他们也在提前演练未来真实的工作方式。
七、结语:教育目标的重心迁移
回到最初的问题:发现学生的代码是AI写的、他自己也没弄懂,怎么办?
答案不是简单的“鼓励”或“禁止”,而是一次重心的迁移:把教学目标从“培养能逐行写出代码的人”,调整为“培养能定义问题、验收结果、承担责任的人”。学生没弄懂的那段代码,正是一个绝佳的教学切入点——顺着它追问:需求写清楚了吗?边界想到了吗?测试跑过吗?敢为结果负责吗?
当提问方式改变,“AI依赖”就不再是教学的敌人,而成了最好的教材。