Commenting with Copilot: A Taxonomy and Multi-Year Analysis of Student Code-Generation Specifications
本文通过对四年间本科生编程提交内容的分析,引入了一种用于描述作为 AI 代码生成规范的学生注释的三维分类法,揭示了学生主要编写“是什么(What)”类注释,在处理过程性任务时转向编写“如何做(How)”类注释,并且优先考虑验证生成的代码而非反复重写规范。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一下你是一位大厨,但你的工作不是切菜或搅拌锅里的食物,而是担任一名超快速、超具创造力的机器人副厨的“指挥官”。你的职责不是亲自烹饪,而是用通俗易懂的英语写下食谱指令,让机器人去执行烹饪。这正是研究人员观察 1,161 名大学生在计算机课上进行的操作。他们并没有逐行编写代码,而是通过编写注释(小笔记)来告诉一个名为 GitHub Copilot 的 AI 工具如何构建程序。
以下是研究人员发现这些学生“指挥官”是如何与他们的机器人助手交流的。
核心发现:“是什么” vs. “怎么做”
最大的惊喜在于:大多数学生并不像程序员那样说话。他们更像是描述一个目标的人。
- “是什么”派 (77%): 绝大多数学生编写的注释都是关于他们想要得到“什么”结果。例如,他们不会说“遍历这个列表并检查数字”,而是写道:“如果数字是负数,则返回 false。”他们描述的是目的地,而不是驾驶路线。
- “怎么做”的转变: 然而,当任务变得复杂时——比如需要重复某个步骤多次,或者需要执行复杂的动作序列——学生们就会切换模式。他们开始编写“怎么做”类的注释,给出步进式的指令。这就像当你告诉朋友“给我做一个三明治”(这是“是什么”),但如果你需要一个特定的、复杂的俱乐部三明治,你突然就必须说:“先烤面包,然后铺上火鸡肉,再加入酸黄瓜……”(这是“怎么做”)。
“不要修改食谱”规则
你可能会认为,如果机器人犯了错,学生会手忙脚乱地反复重写指令。该论文对此提出了反对意见。
数据表明,学生很少重写他们的注释。事实上,一旦他们写下了注释,大多就不再去管它了。
- 现实情况: 在每 100 条注释中,大约有 48 条完全未被改动,另有 41 条是全新的。只有极小的一部分(约 4%)被大幅度重写或完全废弃。
- 真正的核心工作: 既然他们没有在重写笔记,那么他们在做什么呢?他们在扮演严格的质量检查员。学生们把精力花在检查机器人的工作、运行测试以及修复机器人生成的代码上,而不是不断修改自己的指令。论文指出,难点不在于编写提示词,而在于验证输出结果。
学生们的说法(反思)
在完成任务后,学生们撰写了反思报告,研究人员从中发现了 13 个主要主题。以下是其中最重要的几个:
- 速度至上: 学生们非常喜欢这个工具,因为它很快。它感觉像是一个“脚手架”,帮助他们快速起步,而不至于卡在枯燥的细节上。
- “熟悉感”陷阱: 机器人非常擅长处理简单的、重复性的任务(如样板代码),但当任务变得古怪、非常具体或需要独特的解决方案时,它就会显得力不从心。
- 信任问题: 尽管机器人很快,但学生们知道不能盲目信任它。他们感到一种沉重的“验证负担”。他们必须反复检查一切,因为机器人有时给出的答案看起来是对的,但实际上是错误的。
- 学习 vs. 拐杖: 一些学生担心,如果过度依赖机器人,他们将无法学会独立“烹饪”。他们觉得将该工具作为“拐杖”使用,可能会损害他们未来独立解决问题的能力。
本研究排除了哪些可能性
了解这项研究没有发现什么同样重要。
- 它不是“魔法按钮”: 论文明确拒绝了“学生只是向 AI 请求一个完整方案然后走人”的观点。这种做法效果并不好。成功的学生是将 AI 视为一个需要他们引导和检查的伙伴。
- 它并非关于“完美”的代码: 研究并未发现 AI 总能生成完美的代码。事实上,学生们注意到 AI 经常会添加多余的代码或遗漏微小的技术细节。
- 它不是一个“已解决”的问题: 论文并不声称教学生如何编写 AI 提示词是一件容易的事,也不认为现在每个人都成了专家。它表明这是一种新的技能集,需要练习,尤其是知道何时需要具体化,以及何时需要检查工作。
我们的结论有多可靠?
研究人员对这些数字非常有信心,因为他们查看了一个庞大的数据集:来自四年课程的 10,257 次提交尝试。他们使用自动化工具统计了超过 136,000 条注释,并高精度地分析了学生的反思内容。
- 他们发现 99.3% 的学生最终使他们的代码通过了测试。
- 他们以数学上的精确度测量了注释的“修改”情况,发现大规模重写是非常罕见的。
- 然而,论文也承认了一些局限性:这仅仅是一个使用 Java 语言的大学课程。我们不知道是否在不同的语言或不同类型的课程中也会出现完全相同的模式。此外,该研究只观察了学生“提交”的注释,而没有观察他们在工作过程中可能输入又删除的注释。
总结
论文表明,在 AI 时代,最重要的技能不仅是编写代码,而是明确说明你想要什么,并验证你得到的东西是否正确。学生们意识到,编写清晰的“是什么”只是第一步,真正的魔力在于当你扮演老板的角色,检查机器人的工作,并在机器人迷失方向时才介入提供“怎么做”的指令。这并不是让 AI 代替你思考,而是学习如何与它沟通,从而让它与你一起思考。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。