“编译原理”课程的教学内容选择的探讨.docVIP

“编译原理”课程的教学内容选择的探讨.doc

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
“编译原理”课程的教学内容选择的探讨   摘要:本文根据国外“编译原理”教材的演化情况并结合笔者自己的教学和科研的经验,对国内“编译原理”的教学提出了普通高校本科、重点高校本科和研究生阶段三个不同层次的教学目标,并给出了这三个层次的教学内容的建议,供国内同行参考。   关键词:编译原理;编程语言;教学目标;教学内容   中图分类号:G642 文献标识码:A      1引言      编程语言的“编译原理”是计算机专业一门非常有用的核心课程,又是一门需要较大投入的课程。怎样激发学生的学习热情,努力学好本课程?在正确的教学目标下选择适当的教学内容是非常重要的一环。基于笔者长期承担“编译原理”教学的体会,以及多年从事编程语言理论和实现技术研究的积累,本文阐述笔者对该问题的认识。   国外和国内分别从二十世纪六十和八十年代开始设置“编译原理”课程,几十年来,“编译原理”课程可以讲授的内容越来越多,从文献[1,2]这两本专著的内容看出。和第一版相比,第二版压缩了编译原理传统部分的内容,大量增加了新技术内容,书的厚度从接近800页猛增到超过1000页。第一版中被删除的部分包括:语法分析中的算符优先分析法,语法制导翻译中的递归计算方法、语法制导翻译的实现细节和语法制导定义的分析,最后两章的编译器自展和一些具体编译器的介绍。在静态检查一章介绍的类型系统和类型检查被分散和弱化到中间代码生成一章中。第二版中增加的内容包括:   (1) 堆管理和各种垃圾收集算法。   (2) 独立于机器的代码优化增加了数据流分析的理论基础,强调了在一个数据流分析的一般框架下解决各种具体数据流问题,能使读者对程序分析和代码优化有更深刻的认识。   (3) 依赖于机器的优化,包括现代处理器体系结构、指令调度、基本块调度、全局调度和软件流水等。   (4) 并行性和数据局部性优化,重点介绍在多处理器系统上,使用数组作为数据结构,并且以简单而有序模式访问这些数据的计算密集型程序的优化问题。   (5) 过程间的分析,包括调用图、上下文敏感分析和指针分析等。   国外另一本著名的专著是Appel的《Modern Compiler Implementation in C(3rd. Edition)》(还有Java语言描述和ML语言描述的版本)。全书21章,表明它涉及的内容广泛,比Aho第二版覆盖的范围还要广,包括了面向对象编程语言和函数式编程语言的实现方法。但是全书不到550页。因为Appel强调编译原理的学习离不开具体的实践,他精心设计了一个“学生项目编译器”的框架和模块接口,每章的结尾给出与该章内容相关的编译器模块的设计任务,要求学生逐步实现一个编译器。对相关的理论,该书的介绍都比较粗略;对相关算法,除了直接用代码表达的以外,大多数只通过例子表达思想。   从这两本教材可以看出国际教材的变化趋势是压缩仅和编译器前端有关的部分,增加独立于机器的优化和依赖于机器的优化等内容。   国内的编译原理教材基本上都是根据国外教材编写的,在跟踪过程中,总显得有些滞后。例如,国外2000年以后出版的教材已经不介绍算符优先分析法,而国内2004年和2005年出版的一些较有影响的教材仍然介绍算符优先分析法。在增加新内容方面,国内教材也相对落后,笔者力图克服这一缺点,在新近改版的教材(详见文献[5])中,加入了依赖于机器的优化内容。   真正从事主流编程语言编译器设计的虽然只是极少数一部分人,但是编译技术在计算机体系结构设计、提高软件开发效率与质量的工具开发等方面有着重要的应用,这是学习编译原理的主要理由。在编译原理所涉及的知识越来越多,而“编译原理”课程的课时数不足的情况下,如何选择编译原理的教学内容是一件值得探讨的事情。      2教学目标      笔者认为,虽然编译原理和技术对计算机专业的学生来说是重要的基础知识之一,但是对不同层次的高校,应该编写不同深度的教材,讲授不同的内容,以达到不同的教学目标。   可以将教学目标分成三个层次:普通高校本科的目标、重点高校本科的目标和研究生阶段的目标。下面概述的这些目标中,后者包括了前者,并且边界不是绝对的。   (1) 普通高校本科的目标是:通过编程语言实现技术的学习,提高学习编程语言及在程序开发中应用编程语言的能力,具体解释如下:   提高学习、理解和使用编程语言的能力;   提高程序排错的能力,即快速理解、定位和解决在程序开发与程序运行中碰到的问题的能力;   提高编写高质量代码的能力。   (2) 重点高校本科的目标是:通过对与编程语言相关的理论和技术的学习,提高在软件工程中应用这些理论和技术的能力。和编程语言有关的理论和技术包括:   形式语言和自动机理论、语法制导的翻译技术、

文档评论(0)

yingzhiguo + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:5243141323000000

1亿VIP精品文档

相关文档