论文部分内容阅读
【摘要】编译原理是计算机学科的一门核心课程,本文结合教学实际,介绍了根据不同的教学目标,选择不同的教学内容。
【关键词】编译原理 教学目标 教学内容
【中图分类号】G42 【文献标识码】A 【文章编号】2095-3089(2017)38-0219-01
1.引言
《编译原理》课程理论知识较抽象,涉及到的算法较复杂,因此想学好该课程,需要投入较大的精力。同时,对于该课程又存在课时设置不足的情况。因此,在不同的教学目标下,选择合适的教学内容尤为重要。基于教学的现状以及笔者承担《编译原理》这门课程教学的体会,本文将阐述对于不同专业的需求,选择不同教学内容的认识。
该课程对于学生学习来说,难度较大;且真正从事主流编程语言编译器设计的虽然只是极少数一部分人,但是编译技术在计算机体系结构设计、提高软件开发效率与质量的工具开发等方面有着重要的应用,这是学习编译原理的主要理由[1]。
2.教学目标
目前,我校培养方案中,有三个专业开设了编译原理这门课程,分别是计算机科学与技术、软件外包和通信工程。软件外包专业是计算机科学与技术的一个分支,对该课的要求一致。每个专业根据需要设置了不同的教学目标。
(1)通信工程专业的教学目标是:通过各个阶段实现技术的学习,提高学习编程语言的能力,具体如下:
了解完整的编译过程。
了解各个阶段的功能及它们之间的衔接关系。
提高理解和使用编程语言的能力。
(2)计算机科学与技术的目标是:通过课程的学习,提高在程序设计中使用编程语言的能力,具体如下:
掌握各阶段的设计原理和实现技术。
提高学习编程语言能力。
提高程序排错和编写高质量程序代码的能力。
3.教学内容的选择
3.1 通信工程专业
该专业的学生学习该课程,旨在让整体上对编译系统的各个阶段使用到的编译原理和技术有所了解。针对编译系统的各个逻辑阶段,其教学内容如下:
(1)词法分析
词法分析是编译的第一个阶段,该阶段讲述的主线是词法分析器的生成器的产生,即正规式、有限自动机和化简。该阶段通过讲解正规式和有限自动机的概念,让学生明白为什么需要转换等问题。
(2)语法分析
语法分析分两类方法介绍,自上而下分析和自下而上分析。
自上而下的分析方法关键的问题是,非终结符有多个候选时,如何选择的问题。在教学中,需要重点讲述LL(1)分析方法的判别和预测分析表的构造。
自下而上的分析方法关键的问题是,寻找句柄。对于上下文无关文法的分析,LR分析方法是一种高效的方法,包括:LR(0)、SLR、规范LR和LALR方法。LR分析表的生成算法较为复杂,因此讲解时重点应放在LR实现的关键问题,即如何确定栈顶符号是否构成句柄。对于具体的算法,只需要让学生了解。
(3)语义分析
该阶段的主要内容有属性文法、语法制导翻译、中间语言和中间代码产生。
属性文法和语法制导翻译部分主要是基本概念;基于属性文法的处理方法。通过实例讲解S-属性文法的自下而上计算,使学生对整个过程中属性如何计算有个了解。
中间语言包括后缀式、图表示法和三地址代码。
中间代码产生部分主要通过实例讲解赋值语句的翻译,使学生了解从高级语言的赋值语句,翻译为中间语言的整个过程。
(4)優化
优化部分主要讲解局部优化和循环优化。让学生了解能进行什么样的优化。
(5)目标代码生成
该部分通过一个简单的寄存器分配策略的代码生成算法讲解,让学生有所了解。
3.2 计算机科学与技术专业
根据培养目标,软件外包专业的学生将来主要从事软件的开发、维护等工作。因此,对该专业的学生除了要求对编译原理和技术的全局把握外,还需要对编译系统的各个阶段使用到的编译原理和技术都有所掌握。其教学内容如下:
(1)词法分析
词法分析阶段让学生掌握正规式和有限自动机转换的技术、最小化的方法,让学生对有限自动机的识别功能,有个更深刻的理解。
(2)语法分析
自上而下分析时,主要讲述LL(1)分析法。涉及到一些基本的算法也需要学生掌握。
自下而上分析时,学生需掌握LR分析表的生成方法;LR(0)、SLR(1)的分析方法、规范LR和LALR方法。
(3)语义分析
掌握L-属性文法的自顶向下翻译、自下而上计算继承属性。中间代码产生部分需要掌握说明语句、赋值语句、布尔表达式和控制语句的翻译。
(4)优化
该部分通过实例介绍各类优化,让学生掌握编译器能完成哪些优化。
4.结束语
《编译原理》课程是计算机专业的核心课程之一,针对当前编译原理教学中任务重、学时少、教学目标不同等问题,就如何根据不同的教学目标,选择不同教学内容等作了一些研究和探索。
参考文献:
[1]张昱,陈意云.“编译原理”课程的教学内容选择的探讨[J].计算机教育,2009,(18):143-146
【关键词】编译原理 教学目标 教学内容
【中图分类号】G42 【文献标识码】A 【文章编号】2095-3089(2017)38-0219-01
1.引言
《编译原理》课程理论知识较抽象,涉及到的算法较复杂,因此想学好该课程,需要投入较大的精力。同时,对于该课程又存在课时设置不足的情况。因此,在不同的教学目标下,选择合适的教学内容尤为重要。基于教学的现状以及笔者承担《编译原理》这门课程教学的体会,本文将阐述对于不同专业的需求,选择不同教学内容的认识。
该课程对于学生学习来说,难度较大;且真正从事主流编程语言编译器设计的虽然只是极少数一部分人,但是编译技术在计算机体系结构设计、提高软件开发效率与质量的工具开发等方面有着重要的应用,这是学习编译原理的主要理由[1]。
2.教学目标
目前,我校培养方案中,有三个专业开设了编译原理这门课程,分别是计算机科学与技术、软件外包和通信工程。软件外包专业是计算机科学与技术的一个分支,对该课的要求一致。每个专业根据需要设置了不同的教学目标。
(1)通信工程专业的教学目标是:通过各个阶段实现技术的学习,提高学习编程语言的能力,具体如下:
了解完整的编译过程。
了解各个阶段的功能及它们之间的衔接关系。
提高理解和使用编程语言的能力。
(2)计算机科学与技术的目标是:通过课程的学习,提高在程序设计中使用编程语言的能力,具体如下:
掌握各阶段的设计原理和实现技术。
提高学习编程语言能力。
提高程序排错和编写高质量程序代码的能力。
3.教学内容的选择
3.1 通信工程专业
该专业的学生学习该课程,旨在让整体上对编译系统的各个阶段使用到的编译原理和技术有所了解。针对编译系统的各个逻辑阶段,其教学内容如下:
(1)词法分析
词法分析是编译的第一个阶段,该阶段讲述的主线是词法分析器的生成器的产生,即正规式、有限自动机和化简。该阶段通过讲解正规式和有限自动机的概念,让学生明白为什么需要转换等问题。
(2)语法分析
语法分析分两类方法介绍,自上而下分析和自下而上分析。
自上而下的分析方法关键的问题是,非终结符有多个候选时,如何选择的问题。在教学中,需要重点讲述LL(1)分析方法的判别和预测分析表的构造。
自下而上的分析方法关键的问题是,寻找句柄。对于上下文无关文法的分析,LR分析方法是一种高效的方法,包括:LR(0)、SLR、规范LR和LALR方法。LR分析表的生成算法较为复杂,因此讲解时重点应放在LR实现的关键问题,即如何确定栈顶符号是否构成句柄。对于具体的算法,只需要让学生了解。
(3)语义分析
该阶段的主要内容有属性文法、语法制导翻译、中间语言和中间代码产生。
属性文法和语法制导翻译部分主要是基本概念;基于属性文法的处理方法。通过实例讲解S-属性文法的自下而上计算,使学生对整个过程中属性如何计算有个了解。
中间语言包括后缀式、图表示法和三地址代码。
中间代码产生部分主要通过实例讲解赋值语句的翻译,使学生了解从高级语言的赋值语句,翻译为中间语言的整个过程。
(4)優化
优化部分主要讲解局部优化和循环优化。让学生了解能进行什么样的优化。
(5)目标代码生成
该部分通过一个简单的寄存器分配策略的代码生成算法讲解,让学生有所了解。
3.2 计算机科学与技术专业
根据培养目标,软件外包专业的学生将来主要从事软件的开发、维护等工作。因此,对该专业的学生除了要求对编译原理和技术的全局把握外,还需要对编译系统的各个阶段使用到的编译原理和技术都有所掌握。其教学内容如下:
(1)词法分析
词法分析阶段让学生掌握正规式和有限自动机转换的技术、最小化的方法,让学生对有限自动机的识别功能,有个更深刻的理解。
(2)语法分析
自上而下分析时,主要讲述LL(1)分析法。涉及到一些基本的算法也需要学生掌握。
自下而上分析时,学生需掌握LR分析表的生成方法;LR(0)、SLR(1)的分析方法、规范LR和LALR方法。
(3)语义分析
掌握L-属性文法的自顶向下翻译、自下而上计算继承属性。中间代码产生部分需要掌握说明语句、赋值语句、布尔表达式和控制语句的翻译。
(4)优化
该部分通过实例介绍各类优化,让学生掌握编译器能完成哪些优化。
4.结束语
《编译原理》课程是计算机专业的核心课程之一,针对当前编译原理教学中任务重、学时少、教学目标不同等问题,就如何根据不同的教学目标,选择不同教学内容等作了一些研究和探索。
参考文献:
[1]张昱,陈意云.“编译原理”课程的教学内容选择的探讨[J].计算机教育,2009,(18):143-146