《编译原理》课程教学的探讨
张 昱 陈意云 郑启龙
(中国科学技术大学 计算机科学与技术学院, 安徽 合肥)
中国科学技术大学计算机科学技术系张昱、陈意云、郑启龙,多年来在中国科大从事编译原理教学和科研。总结教学中的体会,探讨在编译原理课程上所进行的课程建设,供国内同行参考与切磋。
编译原理是计算机专业的一门专业基础课程。该课程介绍编译器构造的一般原理、基本实现方法。主要内容包括词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等。通过编译原理的学习,学生可以对程序设计语言的设计和实现有深刻的理解,对和程序设计语言有关的理论有所了解,对宏观上把握程序设计语言来说能起一个奠基的作用。编译原理课程的学习还有助于学生快速理解、定位和解决在程序编译、测试与运行中出现的问题。另外,大多数程序员同时又是一些简单语言(如输入输出、脚本语言)的设计者,掌握编译知识有助于提高他们设计这些语言的水平。
对软件工程来说,编译程序是一个很好的实例(基本设计、模块划分、基于事件驱动的编程等),编译原理课程所介绍的概念和技术能应用到一般的软件设计之中。还有,编译技术在软件安全、程序理解和软件逆向工程等方面有着广泛的应用。
课程难点
虽然只有少数人从事构造或维护程序设计语言编译器的工作,但是编译原理和技术对大学生和计算机软件工程技术人员是重要的基础知识之一。大家普遍反映“编译原理”是一门难学的课程,理由如下:
1. 编译程序规模大,不可能在一门课的时间内把所有的细节都讲清楚,这使学生对编译程序各逻辑部分之间的接口和一些算法