正在加载图片...
第1章概述 第1章概述 1.1本书的目标 编译原理是构造编译器的重要理论和技术基础。随者计算机技术和社会应用需求的发 展,编译原理及技术也越来越多地运用在诸如编辑器、排版系统、数据处理等更广阔的领域, 因此《编译原理》这门课程对于计算机及相关专业的本科生来说也越来越显得重要。 在实际的《编译原理》教学和学习中,大家普遍认为这门课程非常抽象而难学,剖析其 中的主要原因是实践环节比较薄弱。一方面是缺少系统的编译原理实验教材,另一方面是学 生很少实践或实践的深度不够。 十几年来,中国科学技术大学计算机专业学生的编译原理实验一直以阅读和扩展P心 语言的编译器为基础。PL0语言过于简单,甚至没有函数参数,这就限制了以这个语言为 基础的编译原理课程实践的深度和意义。另外,实验主要停留在阅读PL0编译器已有的源 代码层次上,学生实际动手很少。而要掌捏编译原理的知识,实践是非常重要的。很显然 这种实验设置已经不能适应教学的需要和对不断发展的编译技术的学习理解。 为给计算机及相关专业的学生设计合适的编译原理课程实验,笔者调研了一些国外知名 大学的编译原理实验设置。他们的编译实验已经非常成熟,并且与课程很好地搭配,覆盖了 编译原理的主要知识点,这些经验值得我们借鉴。例如,加州大学伯克利分校、加州理工 学院等学校的编译原理课程实验,尽管它们在实验语言的定义上有所差别,但是都要求在 一个学期内实现一个简单的高级语言,也就是要完成一个功能完备的编译器:此外,加州大 学伯克利分校还要求学生实现词法分析器和语法分析器的生成器,在难度上就更高一些。 这些编译实验的设计对当前的编译技术考虑得很周到,定义的语言一般具有面向对象的 特性,符合现代高级语言的特征。从学生的角度来看,实验的难度较大,但实验的设计遵循 了循序渐进的原则,在必要的时候给予学生足够的帮助。这使得学生能保持对这种技术的兴 趣,并且学生成功完成一个实验所获得的成就感会激发他们挑战更高难度的实验任务。学生 在完成一个学期的实验后,对编译原理与技术的理论知识可以理解得更加透彻:而实验中涉 及到的对一些编程语言和工具环境的使用,更是为学生积累了宝贵的实践经验,学生的动手 能力和科研能力都会有大幅度的提升。 在加州大学伯克利分校的编译实验设置基础上,笔者和曾经的一些学生(他们是吕博海、 赵雷、周清博、王伟、张吴中、李勋浩)一起尝试做这些实验,然后设计适合国内学校学生 的编译原理课程实验。目前,整个课程实验设计尚未全部完成,但是主体部分已成系统。这 本书即是反映我们当前的主要成果,其中一部分的内容还很粗糙,需要进一步的完善。 笔者热忱欢迎大家对本书提出宝贵的意见,并将吸纳其中的精髓,来继续完善这本书: Ras Bodik.UC Berkeley CS164 Pro Compilers Fall 003. http://www.cs.caltech.edu/courses/cs134/cs134b/第 1 章 概述 1 第1章 概述 1.1 本书的目标 编译原理是构造编译器的重要理论和技术基础。随着计算机技术和社会应用需求的发 展,编译原理及技术也越来越多地运用在诸如编辑器、排版系统、数据处理等更广阔的领域, 因此《编译原理》这门课程对于计算机及相关专业的本科生来说也越来越显得重要。 在实际的《编译原理》教学和学习中,大家普遍认为这门课程非常抽象而难学,剖析其 中的主要原因是实践环节比较薄弱。一方面是缺少系统的编译原理实验教材,另一方面是学 生很少实践或实践的深度不够。 十几年来,中国科学技术大学计算机专业学生的编译原理实验一直以阅读和扩展 PL/0 语言的编译器为基础。PL/0 语言过于简单,甚至没有函数参数,这就限制了以这个语言为 基础的编译原理课程实践的深度和意义。另外,实验主要停留在阅读 PL/0 编译器已有的源 代码层次上,学生实际动手很少。而要掌握编译原理的知识,实践是非常重要的。很显然, 这种实验设置已经不能适应教学的需要和对不断发展的编译技术的学习理解。 为给计算机及相关专业的学生设计合适的编译原理课程实验,笔者调研了一些国外知名 大学的编译原理实验设置。他们的编译实验已经非常成熟,并且与课程很好地搭配,覆盖了 编译原理的主要知识点,这些经验值得我们借鉴。例如,加州大学伯克利分校 1 、加州理工 学院 2 等学校的编译原理课程实验,尽管它们在实验语言的定义上有所差别,但是都要求在 一个学期内实现一个简单的高级语言,也就是要完成一个功能完备的编译器;此外,加州大 学伯克利分校还要求学生实现词法分析器和语法分析器的生成器,在难度上就更高一些。 这些编译实验的设计对当前的编译技术考虑得很周到,定义的语言一般具有面向对象的 特性,符合现代高级语言的特征。从学生的角度来看,实验的难度较大,但实验的设计遵循 了循序渐进的原则,在必要的时候给予学生足够的帮助。这使得学生能保持对这种技术的兴 趣,并且学生成功完成一个实验所获得的成就感会激发他们挑战更高难度的实验任务。学生 在完成一个学期的实验后,对编译原理与技术的理论知识可以理解得更加透彻;而实验中涉 及到的对一些编程语言和工具环境的使用,更是为学生积累了宝贵的实践经验,学生的动手 能力和科研能力都会有大幅度的提升。 在加州大学伯克利分校的编译实验设置基础上,笔者和曾经的一些学生(他们是吕博海、 赵雷、周清博、王伟、张昊中、李勋浩)一起尝试做这些实验,然后设计适合国内学校学生 的编译原理课程实验。目前,整个课程实验设计尚未全部完成,但是主体部分已成系统。这 本书即是反映我们当前的主要成果,其中一部分的内容还很粗糙,需要进一步的完善。 笔者热忱欢迎大家对本书提出宝贵的意见,并将吸纳其中的精髓,来继续完善这本书! 1 Ras Bodik. UC Berkeley CS164 Programming Languages and Compilers, Fall 2003. http://www.cs.berkeley.edu/~bodik/cs164-fall-2003/ 2 Jason Hickey. Caltech Compiler Design Laboratory. http://www.cs.caltech.edu/courses/cs134/cs134b/
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有