摘要针对“编译原理”课程理论内容多、实验难度大、算法过程复杂的特点,该文将目前学生最感兴趣的“人工智能”相关内容融入“编译原理”课程的课堂和实验教学中,并进行了理论和实验教学实践,取得了良好的教学效果。关键词
人工智能;编译原理;
融合;教学方法Research on the Teaching Methods of “Compiler Princi-ple ”Based on Artificial Intelligence //ZHOU Ruyan,HONG Zhonghua,WANG Jing,HAN Yanling,MA Xin
Abstract In view of the characteristics of the Compiler Principle course,such as much theoretical content,difficult experiments,and complex algorithm processes,this paper integrates the “arti-ficial intelligence”related content that students are most inter-ested in into the classroom and experimental teaching of the Compiler Principles course,and conducts theoretical and experi-mental teaching practice,having achieved good teaching effect.Key words artificial intelligence;Compiler Principle;integration;teaching methods
“编译原理”是计算机科学与技术专业的专业基础课,也是计算机科学及其相关专业教学计划中的核心课程,但由于“编译原理”课程理论内容多、算法过程复杂[1]
,同时涉
及“离散数学”“数据结构”“汇编语言”“高级语言”等多门课程相关知识,使它成为计算机相关专业本科阶段最难的课程之一[2]。此外,加上“编译原理”课程一般是开设在大三学期,很多学生此时已经进入研究生考试复习阶段,导致很多学生学习本课程的积极性不高,
课程学习的效果不好。但“编译原理”课程内容所涉及的形式语言翻译、自动机理论及应用,以及语言、词法、语法和文法的定义和分析,能够使学生学习到语言翻译的基础知识、领悟到计算机理论的精髓、掌握大型应用软件的全过程,因此,“编译原理”及其相关技术是计算机专业学生必须掌握的基本原理和技术,
是计算机专业非常重要的专业课程之一[3]。
笔者通过多年编译原理课程的教学实践,将当前研究进展迅速、应用日益扩大,同时也是目前学生最感兴趣的人工智能相关内容和案例融入“编译原理”课程的课堂理论教学和实验教学中,并进行了理论和实验教学的实践,取得了良好的教学效果,大大提高了学生学习的兴趣和积极性。
1融入人工智能的“编译原理”
课堂教学“编译原理”理论课程涉及一个编译器各个阶段的全部设计过程,包括词法分析、语法分析、语义分析和中间代码生成、代码优化和目标代码的生成,本教学研究在其中的多个环节融入了“人工智能”相关知识和案例。1.1绪论+人工智能语言
绪论部分从“十大编程语言排行榜”开始,引入问题1:Python 为何会排名越来越靠前?问题2:排行榜中哪些是编译型语言,哪些是解释型语言?问题3:编译型语言与解释型语言的区别和特点,各有什么优势?通过问题,从C 语言和Python 语言的排行榜顺序调整排行榜中语言的应用领域,引入解释型语言Python 作为人工智能算法主流语言的特点,引入翻译器、编译器和解释器的讲述,使学生对语言的分类以及编译器有非常直观的认识和理解。1.2引论+图灵测试
在开始进入编译器讲述之前的引论部分,让学生完成一项“图灵测试”,题目为连续六个相同的问题,如连续六次提问:“你会下中国象棋吗?”并请学生回答,虽然学生的回答各不相同,但不论每位学生如何作答,都会对自己回答的问题是否能通过图灵测试进行一系列思考,首先会思考计算机是如何听懂或看懂问题的,学生会明白看懂问题是回答问题的前提,学生也就会思考翻译的功能需要如何实现,然后再考虑如何回答图灵测试的问题、回答问题是否需要策略,以及需要采用哪些策略。此案例通过人工智能的经典问题,引入编译过程各个阶段的讲述,
既可以调动学生回答The Science Education Article Collects
No.36,2021Sum No.552
2021年第36期总第552期
融合人工智能的“编译原理”
课程教学方法研究周汝雁
洪中华
王
静
韩彦岭马
新
(上海海洋大学信息学院
上海
201306)
中图分类号:G642.0
文献标识码:A
DOI:10.16871/jki.kjwhc.2021.12.038
基金项目:上海海洋大学重点课程建设项目(项目编号:A1-2005-21-300307)。
作者简介:周汝雁(1970—),女,河南郑州人,博士,副教授,研究方向为人工智能;洪中华(1982—),男,河南郑州人,博士,副教授,研究方向为遥感导航;王静(1984—),女,河南平顶山人,博士,讲师,研究方向为智能图像处理;韩彦岭(1974—),女,河北石家庄人,博士,教授,研究方向为遥感图像处理;马新(1998—),男,四川射洪人,本科生,研究方向为计算机科学。
117
. All Rights Reserved.
教改教法
问题的积极性,又可以引发学生进行深入的思考。1.3词法分析+NLP
在词法分析过程的授课中,在高级语言定义及其语法描述部分加入了自然语言处理NLP 技术。NLP 是使用自然语言与计算机进行通信的技术,
是让计算机“理解”自然语言,也叫自然语言理解NLU,是语言信息处理的一个分支,又是人工智能的核心课题之一。学生在前期程序语言学习中,特别是在编译过程的错误提示中,以及有波浪线错误提示的文档撰写过程中,对编辑错误和语义错误是有一定了解的,但对于词法、语法和语义的理解并没有清晰明确的认识,在高级程序语言词法分析部分引入的NLP,使学生对高级语言的理解和自然语言理解的最初过程中词法分析的差异有了明确的认识,对编译技术中的词法分析有了更深入的理解,对词法分析的方法掌握也更容易接受,同时对于编译过程中出错处理的必要性和基本方法的掌握也有较好的引导作用。
1.4语法分析+深度学习+强化学习
NLP 不仅涉及自然语言的词法分析,也涉及语法分析,目前人工智能的深度学习方法和强化学习方法的研究和应用已经渗透到学生的日常生活和学习中,
因此,在语法分析过程中加入了人工智能在NLP 领域取得的进展,如机器翻译、阅读理解、问答系统、聊天机器人等。编译技术中讲述的高级程序的语法是上下文无关文法,采用语法树方法进行语法分析,高级程序的语法分析只需要分析语句是否符合规定的语法定义,而自然语言的语法属于上下文有关文法,NLP 不但包括了单句语言的语法分析,还包括上下文学习,利用上下文进一步提升对当前句子的处理能力,
因此,需要采用深度学习和强化学习方法进行分析。通过人工智能对于NLP 的处理对比,使学生对高级语言的语法分析和自然语言的语法分析方法的不同有了更加清晰的认识,同时也可以认识到与自然语言的词法分析和语法分析相比,高级程序语言的词法分析和语法分析相对简单,也降低了学生对于编译原理课程的畏难情绪。1.5语义分析+深度学习+强化学习
对于编译器来说,语义分析的结果是语法制导翻译生成中间代码就可以完成编译前端的语义分析,而相比于编译过程的语义分析,NLP 需要进行知识的学习,不但包括学习语言学知识、领域知识,还包括跟
环境学习的技术,通过强化学习的方式提升学生对NLU 的理解能力;还需要结合上下文学习,利用上下文进一步提升对当前句子的处理能力;甚至还需要通过用户画像学习体给出个性化的分析结果。因此,自然语言的语义分析和理解会采用与编译器不同的技术进行,而且相比编译器的语义分析更加复杂。1.6代码优化+并行处理+GPU
代码优化是把编译代码转化成同等效果的代码,以提升代码的执行速度和减少代码长度,
或者减少即时编译JIT 时间。编译器可以转化循环、条件语句和递归函数、
消除整块代码,以及其利用目标指令集的优势,让代码变得高效而简洁。也可以使用更快的算法、
引入线程级并行机制或利用框架特性进行优化。特别是目前高性能计算机的广泛应用使得人们对高效并行的需求更加强烈。并行化编译技术是解决这些问题的主要途径之一。由于当前学生普遍对于电脑性能、多处理器、多核及GPU 性能有所了解,特别是目前随着游戏软件的普及、图形处理技术的研究和应用的快速发展,学生对并行处理和GPU 处理有了更多的了解,在优化部分加入人工智能相关技术,特别是在图像处理中,应用广泛的并行处理技术和GPU 技术进行对比讲述,学生更容易明白优化的重要性和必要性,更容易理解并行化编译技术是要通过多种技术手段自动检测串行程序中潜在的并行性,并将串行程序转变为等价且高效并行程序的翻译技术。1.7编译技术应用领域+AI
为了让学生更多地了解编译技术的应用,提高学生学习编译原理的兴趣,在编译技术的应用的课程讲授中,在讲述了编译技术在程序设计语言的应用———程序设计(PLA)、程序设计语言的翻译———编译器的构造(PLT)、程序设计语言的设计———语法语义(PLD )这三大应用领域的应用之外,还给出了以下多个领域的关键词:(1)Siri/安卓智能手机助理/google assistant/百度大脑/微软小冰;(2)游戏引擎;(3)人工智能;(4)脚本语言;(5)编译型语言/解释型语言;(6)命令式编程/声明式编程;(7)归纳推理/演绎推理/形式逻辑;(8)机器人;(9)阿尔法狗;(10)无人驾驶;(11)自动机/图灵测试。
以上领域很多涉及人工智能和相关技术,有的是技术相关,有的是流程相关,让学生自行选择感兴趣或者自己了解的主题查编译技术的应用,
并撰写报告进行课堂交流,大大增加了学生对于编译技术应用范围的了解,拓宽了学生对于编译原理的学习范围和理解视角。
“编译原理”课程理论授课的目标是让学生掌握编译器各个阶段的设计,包括词法分析器的1~3种设计方法、语法分析器的两大类设计方法中的多种设计方法、语义分析及中间代码产生器的设计方法、目标代码生成器的设计方法,理解代码优化器的设计原则和方法。该课程的理论性较强,但是直观性不强,很多枯燥的理论概念降低了学生对学习这门课的兴趣,而学生易于接受新事物,对新出现的技术比较感兴趣,在课堂上他们会针对高级语言处理和自然语言处理的问题不断进行追问,
同时他们也对目前进展迅速的机器翻译等问题非常感兴趣。因此,
在理论原理和技术讲授的过程中加入当前最热门的人工智能技术和应用的相关对比,再加之同时采用了基于提出问题—问题引导—学习探讨解答问题的方法[4]和基于教育心理学的教学方法[5],对激发学生的学习兴趣和提升学习效果起到了非常好的作用。
2融入“人工智能”的“编译原理”
实验教学编译原理实验课程的目标是在理论课上理解并掌握一
118
. All Rights Reserved.
般编译器工作的各个阶段原理的基础上,掌握编译器各个阶段的设计,包括掌握词法分析和语法分析器、语义分析器、中间代码生成、目标代码生成器、优化器编制,并能将理论知识应用于编译原理技术相关应用领域,提高学生对于复杂的程序系统的认知、分析、开发与应用能力。
编译原理实验不仅涉及很多计算机专业和基础课相关知识,还要在学习了一定编译原理知识和相关技术之后才可以进行,编译器的编写综合性高、连贯性强、难度较大,再加之不少学生认为后续考研或者工
作也并不会进行编译器相关的研究或者从事相关的工作,对完成编译器设计和编制实验的积极性不是特别高。针对这种情况,之前虽然采用了可选难度的实验教学,对于不同学习程度的学生完成编译器的编制有较好的效果,但是对于提高学生对于编译原理实验的重要性的认识和学习积极性的提高收效甚微。2.1“重复率检查”实验案例
“重复率检查”实验案例包括以下3个选项,学生可以任选其中一个项目完成:
(1)完成两个(段)C或C++或其他语言程序的重复率检查。
(2)完成两个(段)英语文档的重复率检查。
(3)完成两个(段)中文文档的重复率检查。
重复率检查是大家都非常熟悉的一项查重操作,此案例设计为编译原理实验中的第一个实验,设计目的之一是进行词法分析器的预处理,另外一个目的是消除大家的畏难情绪,大家普遍认为编译器的编制非常难,而且对自然语言的翻译和高级语言的编译没有太明确的认识。通过此案例的选择以及实验的完成,学生明确了解了词法分析是编译器编制的第一阶段,词法分析器的预处理是词法分析的必要过程,也明确了自然语言翻译过程和高级语言编译过程的异同,降低了学生认为编译器难写的情绪。
2.2“智能人机对话”实验案例
“智能人机对话”实验项目设计如下:
(1)实验目的:通过编写一个人机对话程序,了解语言的理解和人工智能相关知识、技术和方法,并与编译器设计过程进行对比。对话专题可自选。
(2)程序实现功能:运行该程序可进行人与机器的对话,即计算机能根据输入的文字(英语或中文)进行相应的对话:
①机器无幽默感,只进行相应对话。
②机器有幽默感或具有某种情感。
(3)实验要求:给出程序的基本设计思路、语言判断方法和回答策略。
计算机语言排行榜2021“智能人机对话”实验项目设计在实验开始时就发布给学生,但是验收可以持续到实验课程最后结束之时。学生对此项目非常感兴趣,会上网了解人机对话的应用案例,学习相关的知识,不少学生能完成一个比较完整的自己感兴趣专题的人机对话小系统,虽然大多数学生采用了调用编码器-解码器模型和seq2seq等已有模型,但仍然会对自然语言处理过程中原始语料处理和语言的理解过程、模型训练和模型的运用,以及人机对话回答问题策略等有比较深入的了解。
学生通过“智能人机对话”实验项目,对语言的翻译过程会有更直观的理解,在后续的课程学习中更愿意去学习高级程序语言的翻译过程,对编译原理理论和技术的学习,以及编译器的编制更感兴趣,有助于提高学生进行编译器实验的积极性和主动性。通过“智能人机对话”实验项目,也可以将编译理论中的某些知识点应用于看似不相关领域,但其本质也是编译原理技术所涉及的应用领域,使学生对于编译原理技术的应用有了新的认识。同时,“智能人机对话”是一个较为复杂的计算机语言应用系统,此项目的完成对培养学生对于大型的、复杂的计算机程序系统的认知、分析、开发与应用能力有很好的效果,这也是编译原理实验课程的主要目标。
3结论
本文结合“编译原理”课程特点,在“编译原理”课程理论授课过程中,将人工智能主流语言与C语言的特点对比、人工智能经典案例图灵测试、自然语言处理NLP技术、深度学习及强化学习以及并行处理与GPU技术分别融入编译技术的词法分析、语法分析、语义分析、代码优化等各个阶段,并在实验课程中融入“智能人机对话”等与人工智能技术相关的知识和实验案例,通过传统经典课程与新兴热门课程的结合,有效地调动学生学习编译原理的学习热情和参与编译器设计的积极性,取得了较好的教学效果。不仅提高了学生学习编译原理课程的兴趣和热情,开拓了学生对编译技术和人工智能技术的结合应用,同时也提升了学生对于抽象问题的认知和对比分析能力,以及复杂系统的综合概括和解决能力。
参考文献
[1]孙士保.“编译原理”课程教学方法研究与探索[J].中国电力教
育,2012(1):69-71
[2]王春玲,王纪川,薛纪文.编译原理教学改革研究[J].实验室研
究与探索,2007(12):281-283
[3]何炎祥,伍春香.计算机专业不需要开设编译原理课程吗?[J].
计算机教育,2009(4):61-62
[4]周汝雁,张云,韩彦岭,等.计算机专业课程PBL教学方法探究
与实践:以“编译原理”课程为例[J].工业和信息化教育,2014
(5):39-42
[5]周汝雁,韩彦岭,张明华,等.基于教育心理学的“编译原理”课
程教学方法改革[J].计算机教育,2014(9):66-68.
编辑江嫣萍
教改教法
119 . All Rights Reserved.
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论