浅谈普通本科院校计算机专业《编译原理》课程教学

2016-03-09 00:37江赟
电脑与电信 2016年7期
关键词:普通本科自动机计算机专业

江赟

(重庆工商大学计算机科学与信息工程学院,重庆 400067)

浅谈普通本科院校计算机专业《编译原理》课程教学

江赟

(重庆工商大学计算机科学与信息工程学院,重庆 400067)

《编译原理》课程是计算机专业的一门经典核心专业课程,课程内容丰富而抽象,教与学的难度都比较大。本文从教学目标、教学内容及教学方法三个方面对普通本科院校计算机专业的《编译原理》课程教学进行探讨,并提出一些见解。

编译原理;教学内容;教学方法

1 引言

计算机学科是一门同时具备技术性、工程性和应用性的学科,其学科体系是有基础理论支撑的。近年来,随着信息技术的迅猛发展及其应用领域的不断深化,计算机知识正在成为各专业的基本教育内容,几乎所有专业的大学毕业生都要求掌握基本的计算机操作技能,非计算机专业学生需要通过计算机等级考试,而电子信息、通信工程、信息管理、电子商务等与信息技术密切相关的专业在课程设置上更是与计算机专业大量重叠。在这种背景下,计算机专业学生的专业优势应该体现在:通过系统地学习与训练,熟练掌握专业的原理性知识以及基本的应用技能,能够做到“知其然”,并且“知其所以然”。要达到这种专业优势,学生必然少不了要接受专业基础课程的熏陶,而编译原理就是这样一门介绍原理性知识的专业基础课程。

《编译原理》课程是计算机专业中的一门经典的核心专业课程,该课程具有理论与实践相结合的鲜明特点,具体而形象地说明了经典理论与先进技术之间的联系。通过系统学习编译理论,学生可以认识到科学理论的基础作用,提高学习理论的兴趣,形成理论素养,另外,通过课程的实验部分,分析改进编译程序或工具,学生可以提高运用理论知识解决实际问题的能力。通过《编译原理》课程的理论学习和实验,学生可以体会到理论学习的意义和动手实践的乐趣。

然而,在普通本科院校的计算机专业中,由于《编译原理》课程的教学内容涉及到理论的抽象性,并且课程内容覆盖广泛,与高级语言、离散数学、数据结构、算法设计与实现等很多课程的知识相关联,这使得学生对课程内容的理解有较大的困难。此外,学生毕业后很少有人直接参与编译系统的设计与实现,他们认为本课程对其毕业后的职业发展没有作用,于是学生的学习积极性较差。因此,笔者从教学目标、教学内容及教学方法三个方面对普通本科院校计算机专业的《编译原理》课程教学进行探讨,并提出一些见解。

2 教学目标

按照教育部高等学校计算机科学与技术教学指导委员会的发展战略研究报告,计算机专业的本科人才应该被分为科学型、工程型和应用型,而且绝大多数应该是工程型和应用型的。而从普通高等院校计算机专业本科毕业生的就业情况来看,绝大多数毕业生都不会专门从事计算机理论的研究工作,也很少有人研究和开发编译系统。但《编译原理》课程中涉及到的一些经典理论和方法,特别适合于传授学生计算机科学研究的方法,并且训练他们“抽象及自动化”的计算思维。在当今计算机技术飞速发展的时代背景下,计算思维可以让学生在理论的指导下寻找解决问题的方法,在未来更好地适应新技术,朝不同的方向发展。因此,编译原理课程不应被片面理解为编译程序的介绍性课程,而应该提升到培养专业素质、训练思维的层面,特别是培养学生从实际问题中抽象出科学问题并运用科学的思维方式进行问题求解的

思想。考虑到普通本科院校计算机专业大多数学生的需求,我们对学生提出以下要求:

(1)较为全面地了解课程,熟悉编译程序的构造过程,理解编译程序构造过程中涉及的基本算法和基本技术。

(2)掌握形式语言与自动机的基本理论和基本概念。

(3)能够使用有穷自动机的理论和方法,解决常见离散时间问题。

(4)从系统级别上提升对程序、算法的认识,提高学习、理解和实用编程语言的能力,提高编写高质量代码的能力。

3 教学内容

国外从上世纪60年代开始开设《编译原理》课程,而国内则从上世纪80年代开始。经过几十年的发展,《编译原理》课程的教学内容越来越多,课程涉及的知识越来越多。但是以目前教学的基本学时数来看,《编译原理》课程的课时数不足,要讲授教材中的所有内容基本不可能,这就需要教师在有限的课时内充分合理地安排教学内容。针对编译过程的各个逻辑阶段,笔者根据普通本科院校计算机专业学生的理解情况对相关的教学内容进行适当取舍。

(1)词法分析:有穷自动机是一个经常使用的概念和工具,可以详细讨论不确定的有穷自动机及其确定化,确定的有穷自动机及其最小化,有穷自动机与正则式的关系,并介绍词法分析器的生成器。

(2)语法分析:作为必备的基础知识,需要对上下文无关文法做出介绍。在介绍语法分析方法时,侧重点应放在自上而下分析方法,其中应该先介绍比较直观、便于学生接受的LL(1)文法和预测分析方法,然后举一个较为简单的LL(1)文法的预测分析程序作为例子帮助学生理解。而对于自下而上分析方法,建议只介绍其基本概念、使用LR分析表进行分析及分析器的自动生成器等知识点。

(3)语义分析:对静态语义检查进行概述,重点应放在类型检查上。

(4)中间代码生成:主要介绍中间代码的各种形式;对于赋值语句和控制流语句,主要介绍翻译的语义动作;对于类型和变量声明语句,主要介绍如何组织符号表。

(5)符号表及存储管理:这部分内容在数据结构等前序课程中已经介绍过,没有必要在这里重复介绍。如果课时数允许的话,可以考虑从编写程序和程序排错的角度介绍三种全局存储分配策略,以及如何实现各种参数传递方式。

(6)代码优化:通过实例介绍编译器可以完成的各种优化,各种优化算法不做强制要求,学有余力的学生可以在课后自学。

(7)代码生成:选择一种简单的代码生成算法进行介绍,让学生对代码生成有所了解即可。

4 教学方法

《编译原理》课程是计算机科学与技术专业众多专业课程中理论与实践相结合的典范,在教学过程中也要从课堂教学和实验教学两方面着手。

4.1 理论教学

在课堂教学过程中,学生要理解编译原理中抽象的基本概念,还要掌握解决问题的思路和方法,教学难度比较大。针对编译系统中的一些抽象概念可以采取图示、类比等方法使抽象的内容直观化形象化,以保证课堂教学质量。

(1)图示法。在文法与语言这一章里,学生往往会对句型、句子、语言、短语、直接短语、句柄等抽象概念觉得无法理解或一知半解,只能死记硬背,于是在求解短语时容易出错。求解短语的问题其实可以通过画语法树的方法来解决,这种方法简单直观,使用的是学生在数据结构课程中学习过的树与森林的相关知识,可以遍历所有的情况不会有遗漏。在讲到词法分析一章时,会涉及到有穷状态自动机这个在解决离散事件问题中非常重要的思维模型。在解决离散事件问题时,可以通过有穷状态自动机来反映问题的抽象分析,还可以运用状态转换图使得问题的解决变得更加形象直观。

(2)类比法。在讲解一些抽象概念的时候,可以选取学生熟悉的实例,通过类比的方法帮助学生进行理解。比如,在课程的开始部分介绍编译过程时,一般都会讲到编译的过程分为词法分析、语法分析、语义分析及中间代码生成、代码优化、目标代码生成等五个阶段。学生要记住这五个阶段比较容易,但是要理解分阶段的依据则有些困难,这就需要回到编译的定义。编译是一种翻译,将高级程序语言翻译成低级程序语言。与之类似的,外文翻译也是一种翻译,外文翻译的过程可以分为五个步骤,包括识别句子中的单词、分析句子的语法结构、初步理解句子的含义并形成翻译初稿、对译文修饰、写出最后的译文。学生在学习英语的时候经常遇到这种翻译,他们很熟悉外文翻译的过程。将外文翻译与编译进行类比,可以帮助学生更深层次的理解编译,并帮助他们理解编译分为五个阶段的原因。

除了上述教学方法外,在课堂教学中还应当安排一定数量的习题课讨论课,以教学补偿的手段对学生的知识薄弱点进行针对性的训练。比如在文法和语言一章中有很多形式化的概念,文法、语言、推导、归约、句子、句型、短语、直接短语、句柄、乔姆斯基文法分类等等。学生大多数是第一次接触到这些概念,理解起来有一定难度,往往会因此失去学习积极性。对此可以选择一些与教学内容相关的习题,集中进行分析和讨论,便于学生理解和掌握,并通过练习来巩固和

训练学生对知识的运用能力。而对于有穷自动机的理论和应用,则可以选择一些从实际问题中抽象出来的问题进行分析讨论,鼓励学生用所学的理论知识去分析和解决现实生活中遇到的问题,激发学生学习探索的积极性和创造性。另外,对于课程中出现的一些概念和算法,教师可以组织学生课后搜集相关资料,课堂上集体讨论并指导学生阅读和分析,从而达到拓宽学生知识面、提高学生理解及应用能力的目的。

4.2 实验教学

《编译原理》课程兼具很强的理论性和实践性,该课程的实验教学有助于加深学生对理论知识的理解,有助于培养学生的计算思维,并且对提高学生的算法设计分析和程序设计实现等能力具有重要的作用。《编译原理》的实验课课时少,对学生的基础知识及动手能力要求高,这些原因造成实验效果不好。对此,从以下几个方面考虑进行调整:

(1)实验内容:合理安排实验内容,将实验分成词法分析、语法分析、语义分析和目标代码生成四个模块进行,最后进行一次综合实验并演示。

(2)实验组织:将学生分为四人一组,每人负责四个模块中的一个,四个模块依次进行,最后小组进行一次联调并演示,这样既保证了每个学生实验的独立性,又培养了小组成员之间的协同合作精神。

(3)实验的考察验收:以往考察实验结果都是以实验报告的形式,学生写起来往往流于形式,因而达不到考察的效果,可以考虑实验报告以科研论文的形式给出,学生从而可以在写论文的过程中结合做实验的体会更深层次地理解《编译原理》课程中的理论知识。

5 结束语

《编译原理》课程是计算机专业的一门重要课程,要把这门课上好,达到培养学生计算思维的目的,需要教师不断与时俱进,适时调整教学内容和方法。本文提出了一些教学方法,在教学过程中取得了一定的效果,未来要想获得好的教学效果,还需要对课程的教学方法和内容改革付诸努力。

[1]张素琴,吕映芝,蒋维杜,戴桂兰.编译原理[M].北京:清华大学出版社,1998.

[2]Alfred V.Aho.Compilers:Principles,Techniques,and Tools(英文版第2版)[M].北京:机械工业出版社,2011.

[3]陈火旺,刘春林.程序设计语言编译原理(第3版)[M].北京:国防科技大学出版社,2014.

[4]张世辉.编译原理习题详解与考研辅导[M].北京:国防科技大学出版社,2008.

[5]陈意云.编译原理和技术(第2版)[M].合肥:中国科学技术大学出版社,1997.

[6]蒋宗礼,姜守旭.编译原理[M].北京:高等教育出版社,2010.

[7]蒋宗礼.形式语言与有穷自动机理论(第3版)[M].北京:清华大学出版社,2013.

Discussion on the Teaching of Compiler Principle for Computer Major in Universities and Colleges

Jiang Yun
(Chongqing Technology and Business University,Chongqing 400067)

Compiler principle is a classic and core course in computer major.The content of the course is rich and abstract;as a result both the teaching and learning of the course are quite difficult.In this paper,the teaching of compiler principle for computer major in universities and colleges is discussed from three aspects,which are teaching goal,teaching content and teaching methods.

compiler principle;teaching content;teaching method

TP314-4

A

1008-6609(2016)07-0025-03

江赟,女,湖北黄冈人,讲师,研究方向:生物计算及智能算法。

本课题受重庆市教育科学“十二五”规划2015年度高等教育质量提升专项课题,项目编号:2015-GX-023;重庆工商大学校级教改项目,项目编号:2015111。

猜你喜欢
普通本科自动机计算机专业
几类带空转移的n元伪加权自动机的关系*
{1,3,5}-{1,4,5}问题与邻居自动机
普通本科院校:于“普通”之处见精彩
211高校与普通本科院校税收专业人才培养方案比较研究——以四川、广东和广西三所高校为例
“以赛促学,以赛促教”促进计算机专业教学理念创新与实践研究
SSE教学模式在普通本科-儿科专业后期临床教学中的应用
一种基于模糊细胞自动机的新型疏散模型
一种基于模糊细胞自动机的新型疏散模型
广义标准自动机及其商自动机
国家创新体系下地方普通本科高校应用型转型的国际化思考