人人都是开发者的时代,学编程还有用吗?

欢迎大家在 GitHub 上 Star 我们:

分布式全链路因果学习系统 OpenASCE: https://github.com/Open-All-Scale-Causal-Engine/OpenASCE

大模型驱动的知识图谱 OpenSPG: https://github.com/OpenSPG/openspg

大规模图学习系统 OpenAGL: https://github.com/TuGraph-family/TuGraph-AntGraphLearning

4月16日的百度AI开发者大会上,李彦宏提到:未来,自然语言将成为通用编程语言。只要会说话,就可以成为一名开发者,用自己的创造力改变世界。

这个观点是否正确我们无法预测,但AI确实已经改变了开发者的工作习惯,以及即将成为开发者的计算机专业学生的学习方式。

在本文中,我们将讨论代码大模型给计算机教育带来的挑战和机遇,重点介绍入门编程课堂。我们围绕两篇计算机教育文献中的基础文章展开讨论,这两篇文章写于人们对代码生成语言模型开始有所认识的时候。第一篇(发表于2022年1月)评估了代码生成模型在典型入门级编程问题上的表现,第二篇(发表于2022年8月)探讨了由这些模型生成的学习资源的质量和新颖性。现在,我们根据“新的模型能力”以及“教育工作者将此类模型纳入教学实践的经验教训”等方面来思考对计算机教育的影响。

大型语言模型与代码。自 2022 年 GitHub 的 Copilot 进行技术预演,人工智能驱动的编程才成为公众可实行的现实,Copilot 最初被称为“您的 AI 配对程序员”,撰写本文时,Copilot 声称自己是“世界上采用最广泛的 AI 开发工具”。其他的AI赋能代码生成工具包括Amazon的CodeWhisperer和Google的Bard。

Codex 模型是为 Copilot 提供动力的原始模型。作为 GPT-3 的后代,Codex经过了超过5000万个、总大小达159GB的公开GitHub仓库代码的微调训练。尽管现在官方已宣布弃用Codex,转而支持更新的聊天模型,但Codex能够接收英语提示并生成多种编程和脚本语言的代码,包括JavaScript、Go、Perl、PHP、Python、Ruby、Swift、TypeScript、shell等。此外,它还可以在编程语言之间翻译代码,以多种自然语言解释代码功能,并返回其生成代码的时间复杂度。

此类工具在教育领域的应用尚处起步阶段且变化迅速。直到2022年6月,Copilot才免费向学生开放,而其对教育产生影响开始显现后,又于2022年9月向教师开放。2022年11月ChatGPT发布,随后GPT-4于2023年3月发布。OpenAI持续为这些模型添加新功能,如文件数据分析、图像分析和辅助网页搜索。

前方挑战

LLM驱动的代码生成工具能够准确、可靠地解决许多编程入门课程中常见的问题。这为教育工作者带来了一系列重要问题。例如,这些工具究竟有多出色?一个毫无编程知识但手握LLM代码生成器的学生能否通过典型的编程考核?我们是否需要采取不同的教学方法?

进行测试。为探究LLM在编程入门情境中的表现,我们使用真实考试题目对Codex进行提示,并将其性能与参加同一考试的学生进行对比。此外,我们还让Codex解决CS1级别编程问题(“降雨问题”)的多个变体,既评估其解决方案的正确性,也考察方案的多样性。这项工作最初于2021年9月进行,几周后 OpenAI 提供了对 Codex 模型的 API 访问。这篇论文于 2022 年 1 月发表,是计算机教育领域中第一篇评估 LLM 代码生成能力的论文。

我的AI想知道它的成绩是否会四舍五入。我们选取了两份已由学生完成的Python CS1编程考试的所有题目,原封不动地输入给Codex。这些考题涉及Python常见数据类型,包括字符串、元组、列表和字典,难度从简单计算(如计算一系列模拟骰子投掷之和)到复杂数据操作(如从字典中提取映射至最大值的键并排序)不等。为了评估生成的代码,我们使用评估学生考试相同的测试集对其进行运行。这一评估方法与Codex开发人员所采用的类似。如果Codex输出与预期输出仅存在格式上的细微错误(如缺少逗号或句号),我们会作出相应修正,就像学生使用Codex完成考试时会做的那样。

为了将Codex模型的表现置于具体情境中,我们按照与真实学生相同的评分方式对其回答进行打分,包括相同的问题权重以及对错误提交的累积扣分。Codex在考试1中得分为15.7/20(78.5%),在考试2中得分为19.5/25(78.0%)。下图绘制了2020年完成这两场考试的71名CS1课程学生的分数(按最大分100进行标准化)。Codex的成绩以蓝色“X”标记。综合考虑考试1和考试2的表现,Codex在71名学生中排名第17,处于班级前四分之一。

图1:学生在考试 1 和考试 2 中的分数,用圆圈表示。Codex 的 2021 年分数由蓝色“X”表示。GPT-4 在相同问题上的 2023 年得分用红色的“X”表示。

我们注意到一些Codex答案中存在琐碎的格式错误。我们还观察到,当要求不允许使用某些语言特性(例如,使用split()对字符串进行分词)时,Codex的表现较差。Codex 通常不会生成避免使用这些受限特征的代码,因此在这种情况下,模型往往无法通过自动评分器。当被要求生成格式化的ASCII输出(如字符组成的几何形状模式)时,尤其是要求必须从提供的示例输入和输出中推断,而非在问题描述中明确说明时,Codex的表现也较差。

是的,我确实亲自编写了这段代码。为了理解回答的变异性,我们为研究较为深入的“降雨量”问题(计算集合中值的平均值)提供了七种变体描述,每种描述重复提供50次,共生成350个回答。每个回答针对10个测试用例进行了执行(总共3,500次评估)。在所有变体中,Codex的平均得分接近50%。当输入中未提供有效值(例如,要计算平均值的集合为空)时,Codex的表现不佳。我们还统计了所有“降雨量”变体源代码的行数,不包括空白行和注释行。此外,我们将解决方案中采用的通用算法方法分类,作为算法变异性的一个指标。我们发现Codex对同一输入提示提供了多样化的回答。根据提示的不同,生成的程序采用了不同的编程结构,但最终倾向于对每个问题变体使用预期的方法(即,使用for循环处理列表,使用while循环处理标准输入)。

快速进步。鉴于过去两年模型能力的显著提升,观察当前最先进的模型(撰写本文时为GPT-4)在同一组问题上的表现十分有趣。2023年7月,一个在计算机教育背景下探索LLM的工作小组在相同条件下使用GPT-4复制了这项研究。GPT-4在考试1中得分为99.5%,在考试2中得分为94.4%,这次仅被71名学生中的三名学生(GPT-4在图1中以红色“X”表示)超过整体得分。在“降雨量”问题上,GPT-4成功解决了所有变体,有些情况下虽然生成了正确结果,但存在轻微的格式错误。另一项后续研究考察了生成式AI在CS2考试问题上的表现,发现在该背景下其表现相当出色。新型模型还能以相当高的准确率解决其他类型的编程练习,如帕森斯问题,且这一准确率预计会随时间提高。

学术诚信。软件开发往往鼓励代码重用和协作开发实践,这使得在计算机领域中对学术诚信进行形式化定义颇具挑战。尽管如此,在计算机课程中个人作业仍然普遍存在,对于从事个人项目的同学而言,他们被期望编写自己的代码而非抄袭他人编写的代码。这一要求通常通过传统抄袭检测工具进行验证。然而,近期研究表明,常见的抄袭检测工具往往无法有效应对AI生成的解决方案,这为教育者在正式评估中监督学术诚信带来了重大忧虑。

学术不端行为。尽管学术不端行为在计算机教育界已被讨论许久,但LLM的出现带来了一组新的、棘手的挑战。首要问题是如何准确分类其使用行为是否构成某种类型的学术不端,抑或根本不在其列。

“教师应当明确指出何时允许学生在评估中使用生成式AI工具,怎么样去使用。”

一项针对计算机教育工作者的最新访谈研究显示,对于生成式AI工具的使用,初期反应存在分歧——从全面禁止到认为抵抗最终无济于事。限制生成式人工智能工具的使用可能会(至少在短期内)将实践转向更多使用安全测试环境,更加注重过程技能的培养和评估。

代码复用与许可。当使用代码生成模型生成内容时,即使模型数据公开可用,也可能出现许可问题。用于训练LLM的大量公开可用代码适用多种不同的许可协议,通常这些许可要求复用者对其使用的代码进行署名,即使该代码为开源。开发者使用AI模型生成代码时,可能在不知情的情况下使用了需要遵守许可的代码。此类问题已在法庭上出现。显然,这不仅涉及教育领域软件的使用,但作为教育工作者,我们有责任告知学生在复用代码时应履行的职业责任。

“作为教育工作者,我们有责任告知学生在复用代码时应履行的职业责任。”

学习者过度依赖。Codex开发人员指出,实践中使用代码生成模型的一大风险是用户过度依赖。尤其是新手使用Copilot等内置支持的IDE时,可能会很快习惯自动建议的解决方案。这可能对学生的学业产生多方面负面影响。

元认知。培养计算思维能力对新手程序员至关重要,因为它能促进高层次思考与反思。元认知,即“对思考的思考”,是计算思维(以及一般问题解决)的关键组成部分。由于学习编程本身就是一个挑战性过程,需要付出高程度的认知努力去记忆语言语法、进行计算思维、理解领域特定知识,使用元认知知识和策略有助于问题解决,防止初学者感到无所适从或迷失方向。过度依赖代码生成工具可能阻碍这些关键元认知技能的发展。

“培养计算思维能力对新手程序员至关重要,因为它能促进高层次思考与反思。”

模型失效时。尽管有如本文所示的令人鼓舞的结果,但对AlphaCode生成解决方案的分析表明,11%的Python解决方案存在语法错误(产生SyntaxError),35%的C++解决方案无法编译。最近的研究显示,即使允许专家修改自然语言问题描述,多达20%的入门级编程问题仍未被代码生成模型充分解决。Codex开发人员指出,它可能会推荐语法错误的代码,包括未定义或超出代码库范围的变量、函数和属性,并表示“Codex可能会建议表面看似正确但实际上并未执行用户预期任务的解决方案。这可能对新手程序员影响尤甚,且根据具体情境可能带来重大安全问题”。过度依赖模型输出的学生在遇到建议代码错误且无法通过自然语言提示解决时,可能会尤其难以继续推进。

偏见与不良习惯。人工智能中的偏见问题广为人知。除了影响几乎所有AI生成输出的普遍偏见(如对特定人群和性别的表现)外,AI代码生成也可能存在独特偏见。

适用于初学者。新手通常从学习简单编程概念和模式开始,逐步提升技能。然而,这些AI模型所训练的大量代码多由经验丰富的开发者编写。因此,我们应预期AI生成的代码有时可能过于高级或复杂,令新手难以理解和修改。近期研究表明,即使是最新的生成式AI模型仍会生成使用超出新手能力或课程范围的概念的代码。

“AI 生成的代码有时可能过于高级或复杂,新手无法理解和修改。”

有害偏见。Codex开发人员发现,代码生成模型引发了偏见和代表性问题,特别是Codex可能生成反映性别和种族负面刻板印象的代码注释(以及可能的标识符名称),并可能包含其他贬低性输出。此类偏见显然存在问题,尤其是在新手依赖这些输出进行学习时。值得注意的是,Amazon CodeWhisperer的功能列表包括从生成代码中移除有害偏见的能力。一些来自竞争对手微软的最新研究对这一功能的可靠性表示怀疑。

安全性。不出所料,AI生成的代码可能存在安全隐患,需要人工监督才能确保AI代码生成系统的安全使用。然而,新手程序员缺乏提供这种监督的知识。最近对新手使用AI代码生成工具的研究发现,他们始终编写含有字符串加密和SQL注入等特定漏洞的不安全代码。更令人不安的是,这项研究中拥有AI代码生成工具的新手程序员更可能认为自己编写的代码是安全的。这揭示了亟需提高学生和教育者对当前生成安全代码模型局限性的认识。

计算机与社会。使用AI生成的代码为探讨伦理和计算机在社会中的应用提供了许多机会。此外,这些技术可能成为一种工具,使新手用户能够更早地探索更高级的想法,利用“新闻中”技术带来的自然吸引力。教授入门课程的教师长期以来一直告诉自己,学生将在后续课程中学习测试、安全和其他更高级的主题。然而,随着越来越多的学生选修入门课程但未主修计算,以及代码生成技术赋予的能力,对于CS1和入门课程来说,在造成实际危害的风险变大之前尽早提出这些问题的利害关系更高。

“使用AI生成代码为关于伦理和计算机在社会中应用的讨论提供了许多机会。”

机遇在前方

尽管必须应对诸多挑战,但代码生成工具仍有可能彻底改变计算领域的教学与学习。事实上,此类模型的开发者特别强调了它们对教育产生积极影响的潜力。在介绍Codex时,Chen等人概述了一系列可能的好处,包括“辅助教育和探索”。类似地,AlphaCode的开发者认为此类工具“有可能对社会产生积极的、变革性的影响,具有广泛的应用领域,包括计算机科学教育”。在本节中,我们将讨论代码和文本生成模型在计算机教育中产生变革性影响的一些具体机会。

“代码生成工具有可能彻底改变计算领域的教学与学习。”

丰富的学习资源。入门编程课程通常使用各种各样的学习资源。例如,编程练习是一种非常常见的资源,用于帮助学生练习编写代码。同样,代码的自然语言解释是另一种有用的资源。它们对于帮助学生理解复杂代码的工作原理,或是作为评估学生对代码理解程度的工具,都具有重要价值。然而,对于教育者而言,要针对个别学习者的兴趣生成大量高质量的练习,并为众多代码示例制作不同抽象层次的详细解释,是一项重大挑战。我们探讨了LLM(大语言模型)减少教师生成上述两种学习资源(编程练习和代码解释)所需努力的潜力。这项工作最初于2022年4月进行,并于2022年8月发表,是计算机教育领域首个探索LLM生成学习资源的论文。

编程练习。下图展示了我们用于生成新编程练习的输入示例,使用了Codex技术。这个“预热”练习包含一个单次示例(与期望输出相似的完整示例)以及用于引导生成新输出的部分提示。在这个例子中,预热练习的格式包括标签(练习1),以及针对练习上下文主题(甜甜圈)和编程相关概念(函数、条件语句)的关键词,自然语言表述的问题陈述以及解决方案(以Python函数形式)。出于空间考虑,我们省略了测试用例列表,但对于编程问题,也可以包含这些内容。预热输入以明确提示生成新练习(练习2)以及通过关键词表示的所需概念和主题(篮球、函数、列表、for循环)结束。

图2:一个“启动”练习,包括一个完整的示例,然后提示一个新示例。

下图展示了当向Codex提供如图2所示提示时生成的一个输出。请注意,在本例中,根据输入提示中的关键词信息,问题陈述与篮球相关,模型解决方案包含涉及列表和for循环的函数。为了更全面地评估这种方法,我们通过改变编程相关概念和上下文主题生成了240个编程练习。我们尝试对生成的代码进行执行,并以语句覆盖度作为衡量测试套件详尽程度的指标,对其进行测试案例分析。

表1总结了这些结果,显示在大多数情况下,模型生成的编程练习所包含的示例解决方案均可执行。类似地,大多数时候,模型也会生成一组测试,从而产生了共165个同时包含示例解决方案和测试集的编程练习。示例解决方案往往未能通过所有生成的测试,但在其通过的情况下,测试套件在除三例以外的所有情况下均实现了全语句覆盖。

图3:Codex 使用图 2 中的启动练习生成的示例输出。

表1. 对生成的240个编程练习的分析,展示了满足关于示例解决方案和测试用例标准的比例。

我们还发现,绝大多数(约80%)的练习完全新颖,即问题描述的片段未被任何搜索引擎索引。相似比例的练习也符合期望的主题和主题。虽然这远非完美,但显然有潜力以这种方式生成新的有用资源,而且消除不良结果(可以自动化)的成本几乎肯定小于手动生成大量练习和配套测试用例。通过添加可自动化的筛选步骤,理论上可以生成无穷无尽的、与学生兴趣相关的新型资源。

代码解释。代码解释可以在不同抽象层次上生成,从高层次摘要到每行详细说明。我们专注于后者,因为这些在学生调试代码时通常很有用。我们使用一个简单的输入来提示Codex,该输入包括待解释的源代码、文本“上述程序的逐步解释”,最后是“1.”以影响输出包含编号的行。我们从完整性和准确性方面分析了生成的解释,发现90%的解释涵盖了代码的所有部分,近70%的单行解释正确。常见错误主要与关系运算符和分支条件有关(例如,Codex陈述“小于或等于x”,而对应的代码检查的是“小于x”)。

快速进展。在本节中,我们描述了早期使用2022年初可用的Codex模型版本(具体为“code-davinci-001”)生成代码解释的工作。不到一年后,ChatGPT等模型生成的代码解释明显更好且更一致准确。图4展示了当仅提供图3所示“示例解决方案”区域中的代码,并使用本节所述的逐行解释提示时,ChatGPT生成的一个代码解释示例。

图4. ChatGPT 模型生成的代码解释,如图 3 中的“示例解决方案”区域所示。

LLM 生成的学习资源的质量很可能随着模型能力的提升而持续提高。例如,MacNeil 等人发现 GPT-3 模型生成的代码解释在一致性上比 Codex 生成的更为有用。他们生成了多种类型的代码解释,并将其部署在一个在线交互式电子书中,结果发现学生们认为对代码的高级概要总结相较于对每行代码的详细低级解释更有助于他们的学习。近期研究还发现,学生对 LLM 生成的代码解释的评价平均而言高于其同龄人创建的解释。

“学生们表示,相较于逐行详尽的低级解释,对代码的高层次概述对于他们的学习更有帮助。”

我们看到了 LLM 在制作与计算机教育相关的各类学习资源方面的巨大潜力,并预计基于近期趋势,生成资源的质量和准确性在短期内将显著提升。

改进编程错误消息 。超过六十年来,研究者一直指出编程错误消息(PEM)质量低下是一个问题,该领域仍有大量工作待完成。近期研究尝试通过关注可读性,将错误消息转化为更自然的语言,已证明这有助于学生理解错误消息并增加成功修正代码的次数。虽然显而易见的是,提高 PEM 的可读性对新手有益,但如何大规模且跨语言地实现这一目标仍是一项挑战。Leinonen 等人探讨了 LLM 在改进 PEM 方面的可能性[19]。他们收集了先前研究中报告为最难以理解的 Python 错误消息,并生成了能产生这些错误消息的代码示例。他们将代码和错误消息一同作为提示输入 Codex API,以生成对 PEM 的解释及可行的修复方案。他们发现 Codex 生成的大多数解释均可理解,并且 Codex 对大多数输入都能输出带有解释的结果。

更近的研究进一步扩展了这种方法,将 GPT 增强的 LLM 解释直接集成到编译器或自动化评估工具中。Taylor 等人在 CS1 和 CS2 课程中将 GPT 解释部署到 C/C++ 编译器中,发现其在 90% 的编译时错误案例和 75% 的运行时错误案例中提供了准确的解释。Wang 等人发现,在大规模入门编程课程中,收到 GPT 增强 PEM 的学生重复错误的频率降低了 23.5%,解决错误所需的尝试次数减少了 36.1%。尽管要彻底解决这个存在数十年的问题还需付出努力,但以这种方式揭示 PEM 的奥秘无疑是一个近期才成为可能的令人兴奋的机会。

典型解决方案。学生在编程时常常寻求典型解决方案,或是用来检查自己的代码,或是作为遇到困难时的参考。然而,教师可能没有足够的时间为每个练习(包括历年的测试和考试题目)提供模型解答。AI 生成的代码提供了一个节省时间的替代方案,能够生成多种解决方案,有助于学生理解和欣赏问题解决中的不同权衡,正如 Thompson 等人所建议的。能力:将代码示例解决方案自动生成的能力,可以将重点从单纯确保代码正确性转移到关注多个正确解决方案之间的差异,以及对代码风格和质量做出判断的需要。大量关于代码同行评审益处的研究表明,考虑问题的多种解决方案(即使其中一些存在缺陷)是有益的。代码生成模型可用于创建质量各异的解决方案,这些方案可用于要求学生运用批判性分析技能进行代码评估的评估任务。这有助于开展关于不同方法和解决方案质量的讨论,并为重构练习提供机会。

新教学法:计算机教育工作者仍在探索LMMs在课堂中的影响,对于如何更新教学法尚未达成共识。然而,一些早期的方法已开始显现。“计算机教育工作者仍在探索LMMs在课堂中的影响。”

LMMs初期:在传统的CS1课程中,初始重点通常始于语法和基础编程原则,学生可能需要一段时间才能熟练掌握这些基础知识。一种快速过渡到复杂问题的新颖方法是教导学生如何使用LMMs处理低级实现细节。这在Zingaro和Porter的教科书“Learn AI-Assisted Python Programming: With GitHub Copilot and ChatGPT”中得到了体现。在学生学会编写一行Python代码之前,就向他们介绍Visual Studio Code IDE中的GitHub Copilot插件。采用自顶向下方法,学生将大型项目分解为更小的函数,然后通过提供自然语言注释,利用Copilot解决这些函数。这本书为入门课程如何最初更多关注问题解决和算法、依赖自动代码生成进行实现,并将深入细致的语法讨论推迟到后期提供了蓝图。

解释算法概念清晰。众所周知,LLM产生的输出对其输入非常敏感。实际上,“提示工程”,即精心设计有效提示,在使用这些模型时已发展成为一门独特(且新兴)的技能。例如,当使用Codex解决概率和统计问题时,将提示设计为包含解决问题策略的明确提示极为有效。Denny等人发现,描述算法步骤的提示工程策略对于解决Copilot最初生成错误解决方案的编程任务非常有效。近的其他研究表明,开发人员在将较大的编程语句分解为较小的任务并明确提示Copilot执行每个子任务时,与Copilot合作更为成功。学生可能需要培养新的技能,以有效地与这些模型沟通。关键技能之一将是能够用自然语言描述他们希望实现的计算步骤,以此指导模型产生有效的输出。

专注于规范的任务。学生学习如何创建有效提示的一种方法是关注编写任务规范。在传统的入门课程中,新手会收到由教师精心制定、清晰无歧义的问题陈述。此类详细规范为代码生成模型提供极好的上下文,以便产生正确的代码解决方案。新型问题可以要求学生自己生成清晰的规范,从而加强他们在LLM提示方面的技能。例如,这是“提示问题”的目标,其中向学生展示一个视觉表示的问题,说明如何将输入值转换为输出。他们的任务是设计一个提示,引导LLM生成解决问题所需的代码。由提示生成的代码会自动评估,并可迭代细化,直至成功解决问题。最近关于课堂使用提示问题的研究表明,学生发现它们有助于增强其计算思维技能,并使他们接触到新的编程构造。

重构为重点。学生们在编程作业开始阶段有时会遇到困难,这种现象常被称为“程序员的写作障碍”。近期研究发现,Copilot能够通过立即提供起始代码帮助学生克服这一障碍,使他们能够在已有代码基础上进行构建,而非面对空白的代码编辑器从零开始。这种方法可能需要将注意力转向诸如重写、重构和调试代码等任务,但它为在实际环境中帮助学生保持动力提供了机会,在这类环境中,评估、重写和扩展代码的能力往往比从头编写每一行代码更为重要。

设计LLM 工具。世界各地的程序员,不仅仅是新手,未来将在更大程度上使用代码生成器。探索将LLM直接集成到教育环境(如自动评分系统和在线教科书)将是未来重要的研究方向。在这样的环境中,需要适当的防护措施,确保生成的输出以有益的方式支持学习,而不是立即揭示答案或因反馈的复杂性或数量过大而让新手感到无所适从。

事实上,GPT-4的发布就提到了一个“苏格拉底式导师”的例子,它会对学生的请求提出探究性问题,而非直接给出答案。计算机教育中此类集成的一个示例是Liffiton等人关于CodeHelp的工作,这是一个由LLM驱动的工具,通过基于提示的防护措施为编程学生提供实时帮助,但不会直接揭示代码解决方案。总体而言,调整LLM生成的反馈以最大限度地提高教育环境中的学习效果,很可能是未来一段时间内重要的研究焦点。来自该领域最新工作的具体建议已经开始出现。

首先,新手使用代码生成器通常会减少他们看到的错误数量,这看似是一种积极的体验,但他们似乎缺乏应对所见错误的能力。这意味着工具必须设计成帮助用户(无论技能水平如何)顺利度过错误-反馈循环。

其次,生成并插入大量代码对所有级别的用户来说可能都适得其反。这要求用户阅读他们未编写的代码,有时其复杂程度可能超出他们的熟悉范围。新手可能会被此类代码生成吓到,或者花费过多时间阅读与他们的目标无关的代码。因此,AI代码生成器应包含一种方式,让用户控制代码插入量,并指定如何逐步浏览多部分生成代码段。

第三,由于AI代码生成器是黑箱,所有技能水平的程序员都可能难以建立其工作原理的正确心理模型,这可能损害他们充分利用生成器或从其输出中学习的能力。可解释AI(XAI)模式在此可能有所帮助,例如在生成的代码建议上方显示置信度值和用户技能估计。这三条建议只是关于如何设计有助于新手学习且提升程序员生产力的易用AI代码生成器这一新研究途径的开端。

我们将会去往哪里?

强大的代码生成模型的出现引发了对未来计算学科走向的猜测。在《通讯观点》最近的一篇文章中,Welsh 认为这些模型预示着“编程时代的终结”,并认为一场几乎无人准备的重大变革即将来临,因为绝大多数经典的计算机科学将变得无关紧要。而在更近一篇发表于BLOG@CACM的文章中,Meyer同样对这些突破印象深刻,将其与万维网和面向对象编程相提并论,视为一代人一次的技术革新,但他持更为乐观的态度。事实上,Meyer预测经典软件工程技能如需求分析、制定精确规格以及软件验证的需求将会复兴。

虽然生成式AI工具对软件开发人员的影响已显而易见,但其对计算机教育的长期影响尚不清晰。专家之所以欣赏这项新技术,是因为他们已经理解了其底层原理。快速生成大量代码的能力并未消除理解、修改和调试代码的需要,反而突显了培养这些基本能力的重要性。代码读写能力对于批判性地分析生成内容以确保意图与生成代码之间的对齐至关重要。如果没有阅读、测试和验证代码是否实现预期目标的能力,用户可能会沦为生成内容的被动消费者,更多依赖盲信而非专业知识。

我们认为,编写代码仍然是新手学习代码读写这一基础概念的有效途径。尽管专业开发者在未来可能确实会减少编写“低级”代码的时间,但我们认为生成的代码仍需进行修改并整合到更大的程序中。我们确实预计在入门课程中会看到一些重心转移,转向修改由AI工具生成的代码,但在当今高级语言环境中编辑此类输出并编写代码很可能仍是计算学生的一项基本技能。这与Yellin最近的观点一致,即随着程序复杂性的增加,自然语言作为指定它们的工具过于模糊。在某个节点上,直接编辑代码比用自然语言发出澄清指令更为有效。

像Copilot和ChatGPT这样的工具,如果使用得当,有可能成为这种学习的宝贵辅助工具。我们认为这些工具可以发挥宝贵的教辅作用,用于向广泛多样化的学习者解释概念,生成示例代码来说明这些概念,并生成针对个人兴趣的相关学习资源。我们还期待出现利用代码生成工具的新教学法,包括明确教授与工具有效沟通的方法,以及侧重问题规范而非实现的任务。

鉴于生成式AI工具的快速采用,教育工作者必须更新教学方法和评估方式。课程大纲也应扩展,涵盖生成式AI的更广泛社会影响,包括相关的法律、伦理和经济问题。我们认为,领先于这些工具的使用、从一开始就将它们融入课堂、教导学生负责任地使用它们至关重要。简而言之,我们必须拥抱这些变化,否则就会被时代淘汰。拥抱这一转变不仅是必要的,它还代表了一次激发我们教育实践的机会。

文章推荐

一文掌握Stable Diffusion提示技巧,秒变AI灵魂画手,让你的图像活起来

小扎万字深度访谈:最强开源大模型Llama 3发布,Meta的AGI路径和开源哲学

AI已悄悄改变职场,微软如何推动数十万员工都用上Copilot?

如有侵权,请联系删除。参考链接:

https://cacm.acm.org/research/computing-education-in-the-era-of-generative-ai/

关注我们

OpenSPG:

官网:https://spg.openkg.cn

Github:https://github.com/OpenSPG/openspg

OpenASCE:

官网:https://openasce.openfinai.org/

GitHub:[https://github.com/Open-All-Scale-Causal-Engine/OpenASCE]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/2654.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

检查*.bib参考文献是否重复

安装bibtexparser pip install bibtexparser 代码 import bibtexparser from difflib import SequenceMatcherdef parse_bib_file(filename):with open(filename, r, encodingutf-8) as bibfile:bib_database bibtexparser.load(bibfile)return bib_database.entriesdef fi…

【电控笔记5.10】Luenberger估测器

Luenberger估测计 单积分器:pi控制器的补偿 双积分器:使用pid控制器的补偿 除了受控厂跟传感器,其他都在mcu 去掉Rs就是一个PLL锁相环 带宽比PLL更大

齐护K210系列教程(九)_## 播放音频文件wav

播放音频文件wav 播放音频只支持带喇叭的型号:AIstart_掌机、AIstart_Mini AIstart可以播放SD卡中的wav音频文件,在编写程序前请将文件准备好存放到SD卡内。 注:播放wav格式音频:wav格式的音频频率不能超过16KHZ。 1&#xff0…

ui生成代码详细教程

被askmanyai的图生代码技术秀到了!前端开发效率,提升到秒级 完全吊打了阿里的图生代码技术! 上传一张网站图片或者UI稿,然后用askmanyai生成实现这个网站的代码的教程来啦! 在askmanyai的中文网站上一分钟就能实现&…

simulink使用俩种方式封装(mask)画板/子系统的步骤

文章目录 创建子系统创建封装编制封装以参数控件方式封装以代码方式封装 添加约束效果 对封装概念不熟的可以看simulink封装概述,这是我简化的。我还是推荐看官方帮助文档 创建子系统 搭建一个简易的加法模型 ,创建子系统 创建封装 右键-》封装-》创建封…

spring @value @configurationProperties比较

今天项目中需要使用数组的方式 来加载一批 配置 yml: xxxx: - xxxxx - xsssss javaBean Value("${xxxxx.xxxxx}") private List<String> xxxs; 启动时候报错&#xff0c;无法加载&#xff0c;TM试验了1个小时&#xff0c;我一开始想到是格式的问题&#x…

VirtualFlow亮相核反应堆技术全国重点实验室2024学术年会

为加强先进核能技术领域科技创新与应用&#xff0c;核反应堆技术全国重点实验室及先进核能技术全国重点实验室2024年学术年会在四川成都启幕&#xff0c;9名院士和近百家科研院所、高校和企业等近700名专家学者齐聚一堂&#xff0c;聚焦和探讨核反应堆及先进核能重大基础理论和…

震惊!小红书矩阵账号管理-批量发布笔记

“小红书引流软件矩阵工具-笔记批量发” 昨天&#xff0c;有个粉丝急匆匆地来找我&#xff0c;一脸焦急地说&#xff1a;“大佬&#xff0c;我现在运营着好几个小红书账号&#xff0c;每天都要发布内容&#xff0c;可把我忙坏了&#xff0c;有没有什么高效的管理方法啊&#xf…

【学习笔记二十五】EWM PPF自动WT后台配置和前台展示

一、概述 SAP EWM(Extended Warehouse Management)模块中的PPF(Post Processing Framework)是一个用于执行通用功能和流程的工具。PPF为SAP EWM提供了一个统一的接口,用于触发各种动作,例如打印托盘标签、交货单、拣选票或发送消息和传真。这些动作在特定条件满足时生成,…

电力作业平台车必备:防倾倒预警装置,智能守护你的工作

引言 在电力作业中&#xff0c;平台车作为一种重要的高空作业设备&#xff0c;广泛应用于线路检修、设备维护等工作场景。然而&#xff0c;平台车在高空作业过程中存在的倾倒风险&#xff0c;一直是困扰作业人员的难题。为了有效预防此类事故的发生&#xff0c;防倾倒预警装置…

电子温度计不准需要怎么处理?

电子温度计不准需要怎么处理&#xff1f; 首选将温度计完全浸入温度为0℃左右的水中&#xff0c;使温度计指示值与0℃相等&#xff0c;拿出测量待测物的温度。其次将温度计完全浸入温度为100℃左右的水中&#xff0c;使温度计指示值与100℃相等&#xff0c;拿出测量待测物的温…

男生一般穿什么裤子好看?五大爆款男装精选测评!

男生裤子要怎么选才能找到适合自己的裤子呢&#xff1f;这肯定是大家选裤子时经常出现的一个疑问了&#xff0c;现在的市面上虽然款式风格非常多&#xff0c;但是由于品牌鱼龙混杂的原因&#xff0c;不同的裤子质量也参差不齐。为了帮助各位男同胞能选到适合自己的裤子&#xf…

抖音老阳讲的选品师项目普通人能赚钱吗?

随着互联网的快速发展&#xff0c;电商行业也迎来了前所未有的繁荣。在这个背景下&#xff0c;选品师这一职业逐渐走进人们的视野。老阳作为行业内的知名人士&#xff0c;经常分享选品师的经验和项目。那么&#xff0c;普通人能否参与老阳讲的选品师项目并且赚钱吗?答案是肯定…

为什么要写技术方案?

技术方案是为研究解决各类技术问题&#xff0c;有针对性&#xff0c;系统性的提出的方法、应对措施及相关对策。技术方案设计是一个技术开发者必备的能力&#xff0c;特别是对于高级、资深、架构师等角色。技术方案设计不仅能够帮助我们明确需求&#xff0c;规划架构&#xff0…

【计算机网络】MAC地址简介

MAC&#xff08;Medium Access Control&#xff09;&#xff0c;即媒介访问控制&#xff0c;是计算机网络通信中的重要概念。每个NIC&#xff08;Network Interface Card&#xff09;&#xff0c;即网络适配器&#xff0c;都具有独自且不变的MAC地址&#xff08;烧录的&#xf…

windows/linux 安装php的 sql server 扩展

Windowsphpstudyphp7.1 下载&#xff1a;ODBC、下载php 的sql server 扩展 路径&#xff1a;下载地址 版本&#xff1a;我的是7.1 对应的ODBC 是13&#xff0c;php 的sql server 扩展为4.3 安装&#xff1a;msodbcsql 直接安装、sqlsrv43 安装完把 扩展复制到php71 的扩展文…

今天我要和 javaScript 勾搭一下

今天阳光明媚&#xff0c;心情好好呀。&#x1f970; 文章目录 前言一、javaScript 是一门编程语言二、JavaScript 的重要性三、TypeScript 会取代 JavaScript 吗 &#xff1f;更多知识点继续看我的博客吧&#xff0c;最近在慢慢优化文章&#xff0c;耐心等待&#xff0c;嘿嘿。…

三丰云搭建QQ-bot的服务器python运行环境

网址&#xff1a;https://www.sanfengyun.com >> 三丰云免费云服务器 使用 点击Python项目管理器的小三角 新建新项目 按照下面的说明勾选和填写&#xff0c;点击确定即可 然后就可以开始运行代码了

【论文笔记】设计一款针对情境障碍的视力减弱型文件浏览应用程序(下)

论文关键点 ps&#xff1a;这篇文章可以学习的内容比较多&#xff0c;笔记内容也比较丰富因此本次论文笔记会分为上下期 提出的问题&#xff1a; 不方便视觉障碍的情况下(通勤、走路、眼睛疲劳也算)会用text-speech 系统,但是这种听觉是线性的,不适合skim 推导出了融合听觉和…

InternLM2-lesson3作业+笔记

茴香豆 https://www.bilibili.com/video/BV1QA4m1F7t4/?vd_source902e3124d4683c41b103f1d1322401fa 一、笔记 RAG RAG(Retrieval Augmented Generation)是一种结合了检索(Retrieval)和生成(Generation)的技术&#xff0c;旨在通过利用外部知识库来增强大预言模型的性能。…