您好, 访客   登录/注册

编译原理课程教学改革探索与实践

来源:用户上传      作者:

  【摘 要】针对编译原理课程在长期的实践教学中存在学生学习目标不明确,课堂教学效果不佳等问题。文章针对这些现实情况,经过不断的教学实践,总结编译原理课程的教学现状,结合具体的教学实例,有针对性的对编译原理课程进行了改革和实践,设计几种课程教学改革的实施方案,取得了不错的教学效果。
  【关键词】编译程序;编译原理;课程改革;课程实践
  【中图分类号】G424 【文献标识码】A
  【文章编号】2095-3089(2019)02-0029-01
  编译原理是计算机科学与技术和软件工程专业非常重要的核心课程。具有很强的理论性、实践性和技术性。课程要求学生掌握和理解编译系统的结构、工作流程以及编译程序的设计原理和实现技术。帮助计算机相关专业的同学提升计算机问题求解的水平,运用编译算法解决软件问题,提升学生的专业素养[1]。
  一、编译原理课程教学中存在的问题
  1.学生的前期课程学习不足。
  编译原理是计算机相关专业的重要核心课程,主要介绍的是编译器构建的原理和方法。要求学生具有较好的计算机知识,对计算机的工作原理有一定了解,对应的先修课程包括数据结构,离散数学,高级程序设计语言。实际中存在前导课程学生掌握情况一般,知识体系缺失,这些是编译原理课程教学中效果不佳的原因。
  2.课程本身的理论性较强。
  编译器规模很大,且模糊了编译器的各个逻辑部分和某些算法的实现之间的接口,涉及到形式语言和自动机理论,语法指导等概念,对这些理论的研究很困难。编译原理课程中包括DFA确定和化简的算法,用于构建文法符号的符号集和后续符号集的算法,以及用于各种数据流方程的迭代求解算法,对于本科生而言,掌握这些算法是有难度的。
  3.学生的学习能力与自制力相对不足。
  根据课程实际的教学体验,现阶段大学生的学习动机不足,无法保证基本的学习时间。厌倦学习,缺乏课堂兴趣,没有明确的学习目标和学习计划。开设编译原理课程的年级一般是大三或者是大四,作为高年级的学生在学习上的自制能力尤为不够,更容易受到其它因素的影响,在学习的过程中遇到困难,容易放弃。
  二、探索编译原理教学改革的方法
  1.明确学习目标。
  首先是要提高学生们主动学习的兴趣,在编译原理课程的第一课,要向学生们阐述课程的意义。对现实问题进行抽象化和形式化表示是进行计算机问题求解的基本途径,编译原理课程教授同学们具有这种抽象化和形式化思维的能力[2]。编译原理课程集中体现了计算思维,采用理论和算法解决了高级语言到低级语言的翻译问题,为计算机和人对话提供了可靠的接口。学习本课程有助于学生理解高级语言的本质,增加学生的学习兴趣。其次,编译原理对很多领域理论的研究具有深远的意义,如计算机软件技术领域,计算机系统结构领域,人工智能系统的机器学习领域,并行处理技术领域等[3]。在讲解到具体章节的时候,我们注意对其说明,如:正规式和有穷自动机在文本编辑器中的广泛应用,有穷自动机在字符串查找中的运用,由文法来定义网络协议等。
  2.抽象内容具体化。
  编译原理课程中的一些概念比较抽象,不容易理解,在某种程度上增加了本门课程的难度。在讲解这些知识的时候,可从现实生活中找一些实例,通过类比学习,帮助学生们对于概念的理解。举例说明,在讲解编译过程的六个阶段:词法分析、语法分析时可类比一个英文句子翻译为中文的实例,从而明确整个语言的编译过程[4]。
  3.课堂教学生动化。
  为了更进一步提高学生的学习兴趣,提高课堂教学效果,利用现代多媒体技术,将需要在教学过程中解释的知识点动态表示的过程制作成CAI课件。比如自动机如何动态识别字符串,如何以交互方式设计自动机,如何完成正则表达式到自动机的转换,如何帮助学生设计语法分析表地等。可借助于JFLAP和JELLRAP软件解决上述问题[5]。该软件能够像向导一样辅助学生完成词法和文法设计的每一步,并且动态演示学生设计的每一个词法和文法分析器的工作过程。在课堂上,不仅仅使用单一的多媒体教学方法,还可将多媒体与传统教学相结合。对于在一张幻灯片中难以展现的内容,通过黑板板书的方式,使多媒体和黑板有机分工,两者相结合,学生可以更好地理解和掌握课程内容。
  4.理论教学与实践教学相结合。
  编译原理课程实验课的设计要与课程本身的理论体系相互遵循,原理要与技术相互对照。根据编译程序的结构,词法分析,语法分析,语义分析和中间代码生成,代码优化和目标代码生成五个阶段来设计实验内容。实践教学内容,可由学生根据自己掌握的程度和自学的能力选择,三种题目难度从高到低,分数所占的总评比例分别是50%,30%,20%。
  (1)手动构造小型的编译器。
  完整的编译器包括前端部分,如词法分析,语法分析、语义分析,中间代码生成和代码优化。还包括生成适用于特定计算机体系结构的可执行代码后端部分。学生在有限的实践教学中同时完成前端和后端是不现实的,允许学生可以只完成编译的前端。
  (2)自動构造编译器。
  对某一种语言,借助Lex和 Yacc等工具,自动生成词法分析程序和语法分析程序,然后组装成完整的编译程序。这种形式的实践,学生必须花费大量的时间研究开发工具的基本原理及使用方法,通过学习,学生对编译程序前端的理论知识有一很好的学习和提高。
  (3)采用分析现有编译器程序的方法。
  不需要设计和开发特定的编译器,可通过阅读现有的编译器来了解它的工作原理。这将确保大多数学生能够完成实践任务,并达到让学生通过课程实践理解编译过程的目的。
  三、结语
  编译原理是一门理论性和实践性都很强的课程,在计算机相关专业的教学体系中有着非常重要的作用。在实际教学中,课程虽然比较抽象,难度比较大,但是学生的学习效果还是有的,不仅掌握了基础知识,而且已经体会到教学中的深层次的内容,达到了提高教学效果的目的。
  参考文献
  [1]蒋宗礼.基本学科能力培养在编译原理课程教学中的实现[J].计算机教育,2007(1):28-30.
  [2]赵晓,张振国.编译原理课程教学改革探索[J].陕西教育(高教版),2008(11):39-49.
  [3]雷宇,马新娜.编译原理课程教学改革与实践[J].中国电力教育,2010(28):71-72.
  [4]郝爱峰.编译原理教学探索[J].电脑开发与应用,2008(12):73-74.
  [5]何炎祥,伍春香.现代教学理论指导下的“编译原理”[J].计算机教育,2010(1):46-49.
转载注明来源:https://www.xzbu.com/1/view-14751068.htm