当前位置:首页 > 专题范文 > 公文范文 >

《编译原理》教学方法初探

时间:2022-10-21 12:00:03 来源:网友投稿

摘要:编译原理是计算机学科的一门核心课程,因其理论性和实践性较强,内容抽象,算法复杂成为计算机专业较难的一门课程。本文介绍了编译原理授课的现状,就存在的问题,从明确学生的学习这门课的目标,提高学习兴趣、精选教学内容和加强实践环节三个方面进行了讨论。

关键词:编译原理;教学方法

TP314-4

编译原理是计算机相关专业的核心课程,是一门公认比较难学的课程。通过学习编译知识,有助于学生从宏观上把握编程语言;编译技术涉及到计算机的系统结构、指令集结构以及相关的操作系统,掌握编译技术有助于更进一步地理解计算机系统;从软件工程的角度来看,编译器是一个很好的系统软件,它所涉及的算法和技术可直接复用于软件开发的实践[1]。

一、教学现状

编译原理课程的理论性和实践性较强,在该课程的学习过程中涉及到大量抽象的理论知识,而实践动手环节的教学效果受制于对理论的理解程度。教学过程中,存在的问题有以下几个。

首先,学生对编译原理课程不够重视,缺乏学习动力。大多数的同学认为,编译原理课程的学习,与今后的就业没有多大的联系。而且就目前计算机领域的发展现状而言,并不需要重复编写构造编译器;课程本身的难度较大,有同学反应,课堂上老师讲授的知识可以理解,但是下课后往往想不起来;从而导致学生在学生过程中,学习积极性不够,动力不足。

其次,编译原理课程综合性较强,难度较大。涉及到的先修课程包括离散数学、程序设计基础、算法与数据结构、汇编语言、操作系统等,学生对这些先修课的基础知识的掌握程度参差不齐,甚至于有些学生根本没有掌握必要的基础知识;另外,该课程涉及的理论知识抽象,难以理解,如自动机理论等,涉及到的算法复杂,不容易实现,如语法分析阶段的自下而上的分析算法等,对于编译程序这个系统软件,各模块之间接口复杂,学生从整体上理解编译程序也存在一定困难。

第三,实践效果不理想。该课程的实践涉及许多其他相关课程的知识,因此,需要学生有较高的综合运用知识的能力,对于大多数同学,实践具有较大难度,对于基础知识较差的同学来说,很难达到课程的要求。

二、教学思路

(一)明确课程学习目标及其重要性

编译原理课程理论性较强,在讲授过程中,理论性的知识是授课的重点和难点。因此,整个上课过程中要让同学们明确学习该课程的意义,以及为什么要开设该课程,即学习编译原理的重要性,在整个课程的讲授过程中,可以多采用启发式教学方法,以期提高学生的学习兴趣。编译原理课程能够提高学生计算机思维能力。所谓计算机思维能力指的是具有抽象化与形式化思维的能力,编译器在设计过程中就运用了计算机思维的思想与方法,对学生进行计算机思维能力培养将有助于其更好地把握编译原理的目标[2]。另外,编译技术应用广泛,如软件系统安全、现有程序理解和软件工程的逆向工程等方面。

(二)精選教学内容

我们可以借鉴国内外知名大学在编译原理教学方面积累的宝贵的经验,如教学内容、教学方式以及教学手段等。但是,对于应用型普通本科院校而言,我们需要从自身的实际出发,根据我们的学生水平、课时的多少以及学校的办学特点,对编译原理的教学内容适当的选择,突出重点,是学生能够把握编译技术的核心内容。现在多数同学的注意力集中在一些细节的算法上,因此教学内容的选取原则是让学生宏观把握编译原理和技术。

编译原理主要包括五个阶段的讲解,即:词法分析阶段、语法分析阶段、语义分析与中间代码产生、代码优化和目标代码产生。

词法分析阶段,这部分内容的主线是正规式与有限自动机的相互转换,以及将有限自动机最小化。通过介绍正规式和有限自动机的概念,为什么需要转换,以及如何转换,让学生对有限自动机的识别功能,有个更深刻的理解。

语法分析阶段,该内容包括自上而下语法分析和自下而上语法分析两种。根据两类分析方法的特点,指出每种分析方法面临的问题或者说所需解决的关键问题,每种分析方法适用的文法环境,然后讲解如何实现每种分析方法。这一部分主要讲解两种具体的分析方法,即LL(1)分析方法和LR(0)分析方法。

自上而下的分析方法关键的问题是,非终结符有多个候选时,如何选择的问题,因此相关知识点较多,如消除递归(包括直接和间接)、消除回溯和求FIRST集FOLLOW集。对于这部分知识,学生容易把注意力集中在以上的具体算法上,所以,我们在教学中,需要重点讲述LL(1)分析方法的判别和预测分析表的构造,预测分析程序的构造和实现过程。可以采用案例教学法,以一个具体的小程序为例,讲解预测分析程序的实现过程,增强学生的直观感。

自下而上的分析方法关键的问题是,寻找句柄。对于上下文无关文法的分析,LR分析方法是一种高效的方法,包括:LR(0)、SLR、规范LR和LALR方法。LR分析表的生成算法较为复杂,因此讲解时重点应放在LR实现的关键问题,即如何确定栈顶符号是否构成句柄。对于这部分内容,重点让学生掌握LR(0)的分析方法。因为SLR(1)已经能够适应大多数的文法,所以规范LR和LALR方法部分,只需要让学生了解即可。

(三)加强实践环节

编译原理是一门理论性和实践性较强的课程。理论知识抽象难懂,我们可以通过实践,使学生加深对理论知识的理解。在实践教学中,我们可以从基本的验证试验开始,让学生循序渐进的学习,避免一开始就要求学生完成很难的任务,打击学生的信息和积极性。试验内容方面,比如对于词法分析,让学生先练习LEX的使用,之后设计编制调试一个具体的语法分析程序,要求功能简单,能把源程序中的关键字、标识符、运算符、常量和分隔符等识别出来即可,旨在加深学生对词法分析基本原理的理解。最后可以交给学生一个综合性的试验任务,让学生将零散的知识点串接起来,形成一个整体概念。

三、结束语

《编译原理》课程是计算机专业的核心课程之一,针对当前编译原理教学中存在的问题,就如何提高学生学习兴趣、合理安排教学内容等方面作了一些研究和探索。

参考文献:

[1]何炎祥,伍春香.计算机专业不需要开设编译原理课程吗?[J].计算机教育,2009,(4):61-62

[2]王福宁,李娜,闫爱平.编译原理课程教学改革研究综述[J].创新教育,2014(35):87

推荐访问:教学方法 初探 编译 原理