APP下载

基于ChatGPT的留学生编译原理课程实践方法

2023-09-15蒋凌云黄海平陈兴国

软件导刊 2023年9期
关键词:词法代码编程

徐 康,蒋凌云,2,黄海平,陈兴国

(1.南京邮电大学 计算机学院、软件学院、网络空间安全学院,江苏 南京 210023;2.南京邮电大学通达学院,江苏 扬州 225127)

0 引言

随着全球化的进展和教育国际化的发展,越来越多非洲、亚洲,甚至欧美的学生选择到中国留学,以获得更好的学习和发展机会。然而,留学生在新的学习环境和文化背景下,往往会遇到一系列挑战和困难。其中之一就是语言障碍,特别是对于非英语国家的留学生而言,其需要适应英语作为教学语言和交流工具,以及理解英文教材并学会运用相关教学资源。这对于留学生,尤其是计算机科学专业领域的学生是一个严峻挑战。

编译原理是计算机科学与技术领域的重要课程之一,教授学生编译器的原理和实现方法[1-2]。该课程主要涵盖词法分析、语法分析、语义分析和代码生成等内容。通过学习编译原理,学生可以理解程序转换过程和计算机语言的底层工作原理,培养其程序设计和问题解决能力。编译原理课程通常包含理论学习和实践环节两部分,其中实践环节对于学生的综合能力培养尤为重要[3]。然而,由于留学生在语言方面的障碍,使其在课程学习、交流沟通以及编程实践等方面会遇到各种问题。因此,有必要对留学生编译原理课程的实践环节进行改革,以帮助其克服语言障碍,更好地掌握与应用编译原理知识和技能。

近年来,人工智能技术取得了巨大进展,其中自然语言处理(Natural Language Processing,NLP)和生成模型的应用[4]逐渐成为研究热点。ChatGPT 作为一种基于预训练模型的语言生成模型,具有强大的语言理解和生成能力[5]。其可以通过与用户的对话交互,生成符合语境和逻辑的语句及回答,尤其是ChatGPT 可以将自然语言描述的用户意图转换成形式化的程序语言[6],这为留学生编译原理课程的实践环节提供了新的思路和可能性。

ChatGPT 在个性化教学、课程规划、专业指导等方面具有革新教育的潜力[7-9],其中Prompt 是可以与ChatGPT 交互的一种自然语言指令,促使ChatGPT 生成编程需求、程序代码以及计算机编程配套文档,还可以模拟编程系统的某些行为[10]。因此,设计一种基于ChatGPT 的编译原理实践环节改革方法,针对编译原理实践环节不同阶段的问题设计各种Prompt 模版,为留学生提供代码自动纠错功能以及个性化的学习解答和辅导,以促进其在编译原理课程中学习和实践能力的提升。

1 实践环节简介与现状分析

1.1 实践环节

编译原理是一门理论与实践结合紧密的课程。通过实验,使留学生加深对课内所学有关编译过程各阶段采用的主要算法、方法和技术等内容的理解,能把编译原理相关理论运用到软件开发中。在留学生手动生成词法分析器及语法分析器的过程中,使其对相关工作机理有一个详细了解,从而提高应用程序设计能力以及分析、解决问题的能力。

1.1.1 教学目标

(1)知识教学目标。目标1:使留学生理解编译系统工作流程和编译器各功能模块设计原理,能够利用基本原理和方法识别与分析计算机软件开发领域复杂的工程问题。目标2:使留学生掌握词法分析器、语法分析器开发方法,能够编写词法分析程序和语法分析程序,从而对编译原理相关理论知识有更深入的理解。

(2)能力教学目标。目标1:使留学生具有一定的自学能力和信息获取能力。目标2:使留学生具有系统能力,能站在系统的全局去看问题、分析和解决问题。目标3:使留学生具有设计、实现和阐述研究方案的能力。

1.1.2 实验内容

实验内容学时分配与基本要求如表1所示。

Table 1 Hour allocation and basic principle of experiments表1 实验内容学时分配与基本要求

1.2 现状分析

在传统的留学生编译原理课程中,实践环节往往存在一些问题和挑战。首先,语言障碍是留学生在实践环节中遇到的主要问题之一。留学生由于语言的限制,难以理解与运用编译原理相关概念和技术。其可能面临阅读和理解英文教材、与教师和同学进行讨论与交流的困难[11]。以南京邮电大学计算机学院的留学生为例,首先,学生大多来自非英语国家,对于英文资料的理解存在一定困难;其次,实践环节往往缺乏个性化的指导和支持[12]。每个留学生的学习需求和自身水平不同,但传统实践环节通常无法满足学生个性化的需求,可能导致一些留学生在实践项目中遇到困难时无法得到及时的帮助和指导。

此外,编译原理的实践项目通常需要学生进行团队合作,共同解决复杂的问题。然而,由于语言和文化差异,留学生可能面临与教师和同学之间的沟通障碍,从而影响团队合作和项目完成效果。另外,编译原理课程实践项目通常缺乏实际的应用场景,导致留学生无法在短期内将所学知识应用到实际问题的解决中。同时,传统的实践环节缺乏实时反馈,对于新手程序员来说,难以及时对程序进行调试和纠错[2,13]。

因此,针对以上问题,有必要对留学生编译原理课程的实践环节进行改革,以提供更好的学习环境支持,帮助留学生更好地掌握与应用编译原理相关知识和技能。

2 基于ChatGPT的交互式编译原理实践环节

为了解决留学生编译原理课程实践环节中存在的问题,本文提出一种基于ChatGPT 的交互式编译原理实践环节实现方法,旨在为留学生提供个性化的学习支持和指导,以促进其学习和实践能力的提升。

Prompt 作为发送给ChatGPT 等预训练大模型的指令,用于强制执行规则、自动化流程,以确保生成输出的质量(和数量)[14]。针对留学生对编译原理课程内容以及Chat-GPT Prompt[15-16]熟悉程度不一致的问题,设计一套编译原理编程实践专用的Prompt 模版[14],覆盖编译原理编程各类常见问题,协助留学生生成各类问题的Prompt,以提供个性化的指导。通过与ChatGPT 进行对话交互,留学生可以提出问题、寻求解释和示例代码等支持,而ChatGPT 将根据其预训练的知识和语义理解能力,生成相应的回答。

Prompt 模板主要包括两大模块,即基本功能实现模块和代码调试模块。其中,基本功能实现模块旨在引导学生在编译器实践中完成必要的基本功能,包括正确解析源代码、进行语义分析、生成目标代码或中间代码等,如表2 所示。代码调试模块可以辅助学生在编程实践环节中,针对遇到的各种类型报错进行代码调试,保证代码能够正常运行,如表3所示。

Table 2 Prompt template of lexical analysis表2 词法分析Prompt模版

Table 3 Prompt template of syntax analysis表3 语法分析Prompt模版

下文以词法分析错误代码调试为例:

当词法分析器无法识别某些词法单元时,学生可以根据自己熟悉的语言书写下列相关代码调试Prompt。以英文为例:

I encountered an unrecognized lexical unit.What steps can I take to debug the lexer and identify the problem?

根据Prompt(1),可以向ChatGPT 发送指令,如图1所示。

Fig.1 Prompt for error checking of lexical analysis图1 词法分析错误检查Prompt

ChatGPT 通过对源代码的分析,给出了错误检查的建议,可以帮助学生进行代码修改,如图2 所示。这里的答案输出也可以选择学生熟悉的语言,以解决留学生中对于英文和中文都不熟悉的情况。同时,如果对于给出的方案不满意,由于ChatGPT 具有上下文理解的能力,可在现有会话中继续追加Prompt,直至得到正确的方案来修正代码。

Fig.2 Solution provided by ChatGPT图2 ChatGPT给出的解决方案

在实践环节中,留学生可以利用ChatGPT 进行交互式学习。学生可以向ChatGPT 提出问题,如概念理解、代码调试和项目指导等,而ChatGPT 将根据其预训练的知识,生成相关的回答。通过与ChatGPT 的对话交互,留学生可以获得个性化的学习支持和指导,帮助其克服语言障碍,更好地理解与应用编译原理知识。

3 改革实践效果

在2022-2023 第二学期,通过对南京邮电大学2020 级留学生计算机科学与技术专业的两个班级进行试点分析,发现留学生本科三年级学生在编程基础整体不强的情况下,基本可以在ChatGPT 的辅助下完成编译原理课程中的词法分析和语法分析两个课内实验,并且学习效果较之前学期有明显改善。主要表现在以下几个方面:

(1)课程参与主动性增强。编译原理的实践环节不再是编程“老手”才能完成的事情,一些编程经验不足的学生,通过使用Prompt 与ChatGPT 进行互动,在编程的同时,可以补充理论课程中的知识盲点。编程能力一般的学生,可以通过ChatGPT 的辅助完成基本功能;编程能力较强的学生,可以在基本功能的基础上,利用ChatGPT 实现优化的功能。

(2)学习知识边界和学习模式的变化。在编译原理实践环节,学生不再单纯完成任务式地实现要求的基本功能,ChatGPT 庞大的知识体系和创造性可以扩宽学生的知识边界。学习不再是单纯的“教师—学生—教材”三位一体的枯燥模式,更多的是探索、尝试和头脑风暴,教师更多地指导学生如何正确使用Prompt从大模型中寻找答案。

(3)完成情况和学习效果。留学生获取知识的渠道已不仅局限于书本,而且有互联网中专业的网站(如Github)以及博客(如Quora)等,信息源多而杂。ChatGPT 为留学生提供了精炼的知识,同时也为留学生生成了很多创造性的内容。

4 结语

本文旨在探讨基于ChatGPT 的留学生编译原理课程实践环节改革方法。首先,基于ChatGPT 的自动化辅导系统可为留学生提供个性化的学习支持和指导。学生可以根据提供的模板设计Prompt 向系统提问并获得符合语境和逻辑的回答,帮助其克服语言障碍,更好地理解和应用编译原理知识。留学生通过参与实践项目,不仅能够应用所学的编译原理知识解决实际问题,而且能够与团队成员合作,共同分析和解决复杂问题。改革方案提供了个性化的学习支持和实践经验,有效促进了留学生在编译原理课程中学习和实践能力的提升。

猜你喜欢

词法代码编程
编程,是一种态度
编程小能手
纺织机上诞生的编程
创世代码
创世代码
创世代码
创世代码
谈对外汉语“词法词”教学
2010年高考英语“相似”考题例析