0 引 言
C 语言编程作为信息技术领域入门课程,被广泛开设于各高校。由于学生能力及热情的差异,如何确保学生有效掌握 C 语言是一大教学难题。同时随着生成式AI出现,它们能利用对话模型实现问题的快速解答与代码的快速生成,引发了诸多关于编程行业变革以及 AI 取代程序员的观点与担忧。
1 概 述
1.1 C 语言编程教学特点
目前超过 90% 的国内高校开设了 C 语言编程相关课程并将其编入理工科培养方案的核心部分,且大部分高校都将课程设置在新生入学的第一学年,因此其面向的群体十分复杂。由于此前经历的不同,学生在编程基础、积极性、知识接受能力等各方面存在差异。为确保各类学生的学习质量,C 语言编程的教学模式通常由课堂和实践环节组成:首先课堂教授基础知识,例如标识符等概念和规范;实践环节要求学生通过练习巩固知识,期间引发的问题对学生的逻辑思维、耐心、细节处理等解决能力有很高要求。
1.2 生成式 AI 冲击传统行业
C 语言编程知识点较多,学生通常会采用辅助策略来帮助学习,对正在学习 C 语言程序设计(以下简称 C 语言程设)的 100 名学生进行辅助策略调查,结果如图 1 所示。
由图 1 可得,“网络信息查询”策略选择近半,即借助百度、微软必应等搜索引擎或博客园、掘金等社区;“线下咨询”由于便捷性低,占比较小;“其他”包含着社交媒体等不常用手段;而“生成式 AI”虽近期出现,但随着相关工具的诞生,已成为超 1/3 学生的选择。
生成式 AI 通常指基于生成式预训练转化器(Generative Pre-trained Transformer,GPT)技术所搭建的聊天机器人,属于人工智能技术生成内容(Artificial Intelligence Generated Content,AIGC)的应用案例,此类工具能借助AI模型来识别与生成内容,实现用户交互。在国内,阿里巴巴的“通义千问”、百度的“文心一言”、商汤的“商量”、科大讯飞的“星火”、360 的“360 智脑”等均是已开启内测的生成式 AI。
生成式AI借助其庞大的知识量,以及上下文理解与记忆能力,能执行各类复杂任务,例如软件编程、学科问题解答、诗歌创作[1]。同时生成式 AI 已在计算机科学领域展现能力,它们能帮助编写文章、演讲稿,甚至根据自然语言生成代码[2]。此外它们还能辅助优化代码或为系统研发提供建议。这些能力使得研究人员能更顺利地进行科学写作,从而缩短并加速创新进程[3]。
目前学界对生成式 AI 的研究仍处于起步阶段,主要集中在 3 方面:一是分析能力表现;二是从技术角度探究算法原理;三是挖掘其在数字资源、教学实践、信息管理等层面的应用[4]。
2 基于教学实践对生成式 AI 能力的探究分析
本部分通过对生成式 AI 展开实验,并与编程相关人员进行讨论,最终得到其在编程(代码生成)与交流(解答问题)两方面的能力分析
结论[5]。
2.1实验内容设计
2.1.1编程实验
在生成式 AI 生成编程代码后首先利用“爱编程 OJ”(Online Judge System,OJ)评测其准确性,进而评价其代码规范。为确保严谨和丰富性,题目选择北京航空航天大学(以下简称北航)年 C 语言程设的 10 道期末赛题,它们难度曲线平滑,1300 余名学生的成绩也符合正态分布。
2.1.2交流实验
主要对比生成式 AI 和搜索引擎(选择使用率较高的微软必应)对 C 语言相关问题的回答情况,并结合编程实验人员与生成式 AI 的交流过程展开分析。
2.2实验对象选择
2.2.1生成式 AI
为确保结论普适性,编程实验选择较为知名的通义千问、文心一言、星火,交流实验为便于对比仅选择通义千问。
2.2.2编程实验习题
题目难度中 1 表示最简单,10 为最难,即难度1~3 为简单题,4~7 为中等题,8~10 为困难题。10道编程题的具体信息见表 1。
2.2.3 交流实验问题
选择 5 个问题,模拟 C 语言学习从入门到深入的过程,具体见表 2。
2.3编程实验与结果分析
2.3.1代码准确性与规范性
4 位实验人员在 2h 内借助 3 款生成式 AI 完成了对 10 道编程题的代码生成与评测,这里将各题最高分与最高分对应的最低交流次数进行汇总,情况见表 3。
1)准确性分析。
由结果可得,生成式 AI 在简单题上表现极佳,难度上升后的得分表现为断崖式下降,甚至无法得分;对于最高分合计的 450,在1300 余名参照学生中的排名为 570,位于前 50%。由此可见,仅从准确性考虑,生成式 AI 接近中等水平的 C 语言编程初学者,因此,其能对成绩偏下或中等的学生提供较大帮助。
2)规范性分析。
编程水平还涉及代码规范,规范评估将基于生成式AI生成的 4 份满分代码进行,选择专业的编程人员(北航软件学院的在读博士、硕士研究生)共 10 名作为评委,从命名规范、缩进规范、符号规范 3 方面进行评审,均分见表 4。
生成式 AI 的代码规范性并未由于题目难度的变化出现差异,始终保持较高水平。命名规范的低分是由于出现较多 i、j 等意义不明的变量名;符号规范的低分是由于在字符、字符串等内容上混用了单双引号。整体上看,其代码规范得到了专业人士认可,因此,生成式 AI很适合用于提高代码质量。
2.3.2编程的局限性
生成式 AI 的编程局限主要来自代码准确性在不同难度题目上表现的差异。
(1)简单题(ABD,概念题),题面简洁,简单描述后能很快得到高分代码。相比教材和网络,生成式AI的解答速度更快、代码更精确。
(2)中等题(CEFG,推理题),大多知识点单一,但需要时间思考,要多次引导让生成式AI理解。此时由于使用者水平的不同,代码准确性存在较大区别。
(3)困难题(HI,综合设计题),涉及多知识点和应用场景,一般人理解已很困难,令生成式 AI 理解更加困难,且容易由于表达不清得到错误结果,几乎无法基于生成式 AI 解答。
(4)创新题(J,图文结合题),通常题面包含大量图片公式,而由于生成式 AI 目前仅在基于文本的场景下能表现较好效果(部分版本可理解图片,但考虑通用性不在本文讨论),无法做到有效沟通,同样无法解答。
2.4 交流实验结果分析
2.4.1解答效率高
交流实验最终得到通义千问与搜索引擎的 10 项回答,邀请 10 位 C 语言编程初学者分别从速度(得到答案的时间)、准确性(结果是否匹配)、清晰度(结果是否有条理性)3 方面进行评分,结果见表 5。
搜索引擎的高评分可证明其作为常用辅助策略的优秀,而通义千问在3方面均实现了对搜索引擎的超越,进一步提高了交流效率。对于效率提高的具体表现,总结为如下两点。
1)减少用户筛选。
以交流问题 2“C 语言计算两点欧几里得距离”的回答为例:搜索引擎给出了若干页回答,内容均包含“C 语言”“欧几里得”等关键词;生成式 AI 则直接展开阐述,依次给出了步骤分析、具体代码及注意事项。深入研究后发现,搜索引擎给出了部分不准确匹配问题的结果,这是其基于关键词检索的机制导致的;而生成式AI能通过分析文本精准理解需求,并以简洁、可理解的方式提供各角度的答案阐述[6],可认为,只要问题表达清晰,用户便可直接获得无须筛选的准确答案。
2)结果更清晰。
得益于生成式 AI 的庞大训练数据,它能参考优秀文章给出有条理的内容,第 2 个例子即生成式 AI 针对交流问题 4“C 语言递归原理”的
答案。它给出了具备清晰思路的回答:首先讲解递归概念,进而给出递归函数的代码示例并解释含义,最终给出使用建议,这种具备条理性的内容可认为已达到互联网文章的中上水平。相比搜索引擎结果的良莠不齐,生成式AI的高质量回答进一步证明了其强大的辅助性。
2.4.2交流的局限性
通过前文可验证生成式 AI 对交流效率的提高,但深入分析后,它们的局限也逐渐暴露,具体细分为正确性局限、信息量局限和使用者局限 3 方面,下文结合额外测试进行证实。
1)正确性局限。
生成式 AI 不具备真正的理解能力,其对话模型的逻辑就像是因其记忆了大量数据,从而能基于描述给出理论上最为准确的回答。这种缺陷有时会让生成式 AI给出误导性的错误内容,例如令其推荐“路径优化算法”的文章,它给出的结果如图 2 所示。
图 2 的列表十分清晰,包含文章的标题、链接和简介,但当尝试访问第一篇文章的链接时,浏览器却跳转到了如图3所示的另一篇文章。
即使尝试引导 AI 去修正错误也可能失败,例如编程实验的E题由于细节多、不易描述,不仅实验人员首次生成代码均未通过样例,并且他们对错误修正的尝试也都以失败告终,导致该题最高 10 分。
2)信息量局限。
由前文可得,生成式 AI 是基于数据实现对话的,因此其知识范围直接受限于训练数据的范围。例如国外大火的 ChatGPT,在本文撰写期间,其开放的大众版本的训练数据均来自 2021 年 9 月之前,因此使用大众版本的用户在尝试询问该时间点之后的内容时它并不能给出有效回答,国内的各款生成式 AI 同样存在类似问题。虽然一些生成式 AI 能够通过实时更新数据来避免这种局限,但基本不是大众所能接触到的版本,因此这种局限对大众来说是暂时无法避免的。
3)使用者局限。
如要有效地规避上述局限、高效使用生成式 AI,这对使用者有要求。例如编程实验中,取得各题目最高分的几乎是同一人,取得相同分数时不同人员的交流次数也存在差异,这便是由于使用者能力不同导致的差异。
具体来说,生成式 AI 对使用者的专业知识和交流能力有要求,当使用者经验丰富、表达力强,他们能清晰描述问题,有助于 AI 准确理解,对于错误答案,他们也能更快速地引导修正,从而更大概率能得到准确答案。以生成式 AI 对交流问题 5“C 语言使用链表时要注意什么问题”的问答为例,如图 4 左侧所示。
生成式 AI 此时给出了简陋的注意事项,远不及搜索引擎,也因此得到低分,但只须像优质使用者一样完善提问为“C 语言使用链表时分别可能产生哪些方面的问题,这些问题出现的原因是什么,以及应该如何在使用过程中规避这些问题,请分类后给出这些问题的原因解释和解决方法”,便可得到如图 5 所示的优质回答。可看出,虽然长句问题对搜索引擎来说是低质量的,但对生成式 AI 而言是高质量的,此次回答在分析的角度以及解决方案的描述上都有改进,虽缺少代码,但只要在末尾补充“给出对应的代码示例”即可解决。
由于这种需要用户具备一定能力的局限存在,水平不高的用户更应注意验证其回答,避免一错再错;但只要用户不断提高自身能力,便能一定程度上规避这一局限。
3 传统教学模式不可取代
3.1 生成式 AI 无法应对复杂情况
前文分析可得,生成式 AI 的能力来自基于数据训练的AI模型,它们能模拟人类对话并有较为完备的逻辑性[7],但它们并不具备真正的理解力,有时会给出看似逻辑严谨但实际错误的回答。除上述 3 点交流局限性以外,生成式 AI 同样存在编程局限:它可能由于表达模糊给出错误代码,对于难以使用文本描述的题目甚至难以有效沟通,因此可得,“生成式 AI 取代传统编程教学”的观点无法成立。
考虑实际,C 语言编程的教师为了给不同水平的学生提供指导,通常会以系统化的角度、借助知识图谱来帮助学生理解:以一点为起始,不断延伸,最终完整传输知识。这里将从 CSDN 获取的一部分“C 语言知识图谱”与生成式 AI 给出的“知识图谱”进行对比(如图 6 所示)。通过生成式 AI 的回答可证明,知识图谱这类系统性总结是它目前无法做到的:一是由于图谱体系难以基于文本进行描述;二是知识体系须结合专业知识不断细化,对使用者水平有极高要求。可认为生成式 AI 无法真正帮助学生完整地理解编程世界,学生仍然需要教师的帮助。
3.2 教师的引路人身份无可替代
结合国外研究员 Wollowski[8]的比喻,目前的生成式 AI 像是能力不太强的高年级学生,它们能记住大部分知识但理解模糊,却自信地提供着可能错误的解答。而传统教学中存在着教师角色,他们负责教书育人、严格把控教学内容,并不断根据反馈进行改进,在确保准确后才传业授道。与生成式 AI 可能回传虚假信息[9]的情况不同,教师的严谨性是这些“高年级学生”不具备的。
同时由于生成式 AI 的强大解答能力,学生完全依赖其完成作业的情况已在世界范围泛滥,以至于纽约大学、图宾根大学等高校已禁止使用它们。这种现象来源于人类的惰性思维——“由俭入奢易,由奢入俭难”,人们不愿在高效手段(智能生成)出现后去使用低效手段(学习总结)。这种思想十分危险,它不仅会消磨学生对知识探寻的热情,还会导致教育事业灾难性的停滞。相反,教师在担负着教育重任的同时,也能清楚地认识到学习实践的意义[10],并而能通过交流等手段引导学生的品德素养,确保学生不受诱惑并真正理解学习的意义而坚持下去。
综上所述,教师的引路人身份无疑是不可替代的,这也反映了传统教学的根基地位。
3.3推动“AI+ 编程教学”新模式
目前来看,生成式 AI 虽存在局限,但确实具备诸多改进 C 语言编程教学的能力,无论对学生还是教师而言,它都能成为重要工具。
3.3.1学生的高效利器
生成式 AI 理论上已掌握 C 语言的所有知识,能对基础内容做到有条理地沟通交流,可提供如下辅助。
1)快速学习编程。
生成式 AI 面对各类知识点能给出清晰的介绍,有助于初学者进行记忆。参考其对交流问题 2、4 的回答,这种包含了概念、示例和注意事项的高质量解答有助于学生快速掌握陌生知识点以及复习旧知识点。其中的代码思路解释有助于学生锻炼编程思维,代码的高规范性也有助于学生阅读掌握后形成优良编程习惯。
2)智能辅助学习过程。
得益于生成式 AI 内部的诸多优秀文章与编程题库,它能参考学生情况快速制订合适的学习计划以及实践方面的参考习题清单,有助于形成由浅入深的高效学习历程,效果如图7所示。
综上所述,生成式 AI 可看作是传统网上查询策略的全面改进版,能作为高效利器护航学习过程,大幅提高学习效率。
3.3.2教师的得力助手
1)教学阶段。
生成式 AI 可以帮助教师寻找课程相关文章、视频等材料,并针对其他领域的概念或网络词汇等教师不擅长的内容进行解释,从而加快备课速度,优化讲稿内容,整体提高教学质量。同时其对基础问题的快速解答可以大幅缩短答疑时间,有助于教师更好地规划教学,讲解核心内容。
2)实践阶段。
针对特有的课后实践环节,生成式 AI 包含各大编程平台(例如力扣、CodeForce)的题目,教师可通过关键词快速得到参考,从而快速产出优质题目。经初步估计,在生成式 AI 的辅助下,一道日常练习题的平均出题时间可从半小时缩减到 10min。只要教师跟随时代脚步,教学效率将会在这一得力助手的辅助下不断提高。
4 结 语
基于结果分析可得生成式 AI 自身存在诸多局限,它将颠覆编程行业的观点过于夸大,至少目前尚不成立;但同时它确实具备优秀的编程与辅助能力,教师、学生均可借助其来提高工作学习的效率。
对编程教学者、学习者而言,生成式 AI 是机遇,它能作为得力助手及高效利器促使编程教学的改革推新。生成式 AI 能在教学的课前、课中、课后等各阶段应用,推动教学更加智能与高效,同时传统教学的优势与其中人的无可替代性也能得到进一步的发挥与体现,这种“AI+ 编程教学”新模式必定是编程教学的未来,也能成为生成式 AI 落地应用的先驱。
参考文献:
[1] ZDNET. ChatGPT can write code. Now researchers say it’s good at fixing bugs, too[EB/OL]. [2023-06-11]. https://www.zdnet.com/article/chatgpt-can-write-code-now-researchers-say-its-good-at-fixing-bugs-too/.
[2] Cornell University. Evaluating the code quality of AI-Assisted code generation tools: An empirical study on GitHub Copilot, Amazon CodeWhisperer, and ChatGPT[EB/OL]. [2023-04-21]. https://arxiv.org/abs/2304.10778.
[3] Van D E A M, Bollen J, Zuidema W, et al. ChatGPT five priorities for research[J]. Nature, 2023, 614(7947): 224-226.
[4] 钱力, 刘熠, 张智雄, 等. ChatGPT的技术基础分析[J]. 数据分析与知识发现, 2023, 7(3): 6-15.
[5] 张义花, 赵东, 安延涛, 等. 基于雨课堂的翻转课堂在专业课教学中的应用[J]. 高教学刊, 2019(12): 105-107.
[6] Rahman M M, Watanobe Y. ChatGPT for education and research: Opportunities, threats, and strategies[J]. Applied Sciences, 2023, 13(9): 5783.
[7] Stokel W C, Noorden R V. The promise and peril of generative Al[J]. Nature, 2023, 614(7947): 214-216.
[8] Wollowski M. Using ChatGPT to produce code for a typical college-level assignment[J]. AI Magazine, 2023(44): 129-130.
[9] 王天恩. ChatGPT的特性、教育意义及其问题应对[J]. 思想理论教育, 2023(4): 19-25.
[10] Cornell University. Exploring the use of ChatGPT as a tool for learning and assessment in undergraduate computer science curriculum: Opportunities and challenges[EB/OL]. [2023-04-16]. https://arxiv.org/abs/2304.11214.
基金项目:国家自然科学基金面上项目(61977002);国家自然科学基金青年科学基金项目(62107002,62106013)。
作者简介:王宇轩,男,北京航空航天大学硕士研究生在读,研究方向为软件工程;宋友(通信作者),男,北京航空航天大学教授,研究方向为软件工程、信号与信息处理、人工智能等。
引用格式:王宇轩,徐文浩,于浩淼,等.生成式AI为C语言编程教学带来的挑战和机遇[J].计算机教育,2024(8):133-141,145.
文章头图由“智谱清言”绘制而成。
(完)
更多精彩:
校长专访|扎根边疆民族地区 聚焦师范教育主业培养高素质应用型人才——丽江师范高等专科学校陈本辉校长专访
言十│计算机系统能力培养的回顾与前瞻
“以学生为中心”教学的理念及落地路径探讨
校长专访|推动学科交叉融合 培养新时代创新型人才——香港科技大学(广州)创校校长倪明选教授专访
第七届编委会新年寄语
计算学科课程思政教学指南
陈国良院士|计算机课程思政虚拟教研室文化建设
南大陈道蓄教授|变与不变:学习过程中的辩证法
言十│关于高校青年教师的“困境”思考及建议
徐晓飞等|元宇宙教育及其服务生态体系
【目录】《计算机教育》2024年第7期
【目录】《计算机教育》2024年第6期
【目录】《计算机教育》2024年第5期
【目录】《计算机教育》2024年第4期
【目录】《计算机教育》2024年第3期
【编委寄语】北京大学李晓明教授:由“课堂教学改进元年”想到的……
南大陈道蓄教授:教学生提问和教学生答问,哪个更重要?
【言十系列】:计算机学科发展趋势及其对计算机教育的影响
北大李晓明教授:从趣味数学到趣味算法到趣味编程——非专业学习者体会计算思维的一条途径?
一流计算机学科建设的几个问题思考
新工科与大数据专业建设
他山之石可以攻玉——中外计算机教育研究文章汇编