陈 英 计卫星 王贵珍 李 侃
摘要:本文回顾了计算机学科重要的专业基础课——“编译原理”课程的发展,探讨了在计算机学科和技术飞速发展,IT人才的多向需求拉动的新形势下,按照“分类培养”的思路,对“编译原理”课程教学指导思想进行的新的定位和思考。进一步结合学校研究型人才的培养目标,基于课程教学指导思想的定位及课程特点,对在“编译原理”课程中通过计算机专业知识的融会贯通来提升学生的专业能力和素质。
关键词:编译原理;教学指导思想;专业能力;专业素质
中图分类号:G642 文献标识码:B
1引言
计算机学科是一门年轻的、发展迅速的学科,在人才培养、教学模式和教学体系的改革乃至具体的课程设置中都面临新的挑战。“编译原理”是计算机专业本科生的重要专业基础课程,其原理、方法和技术在语言处理、软件工程、软件自动化、逆向软件工程、搜索引擎甚至非编译系统等诸多技术领域有着广泛的应用。但是,学生普遍反映“编译原理”是一门难学的专业课程,毕业后也很少有从事编译器研发的机会,在该课程学习的认识上存在障碍。同时,随着教学改革的不断推进,课程理论教学学时不断缩减,这也是推动课程改革必须面对的问题。
鉴于“编译原理”课程的知识点涉及许多知识和技术领域,诸如离散数学、计算机体系结构、数据结构与算法、软件体系结构、软件测试、形式语言与自动机等,因此课程讲授面临诸多概念、知识点、原理和算法。如何将这些知识融会贯通,启发式地引导学生,提高学生的学习兴趣,加强他们对知识的掌握,达到提升学生专业能力和素质的目的,值得研究。为此,需要在课程的教学指导思想定位的基础上,从教学方法、教学手段及内容等诸方面协调保证
课程的教学目标和效果。
2 “编译原理”课程教学的发展与现状
国内“编译原理”课程最早开设于20世纪70年代末期,该课程的发展和改革至今仅有30余年的历史,其发展和改革进程大体可以概括为:
(1) 课程起步阶段。20世纪70年代,高级程序设计语言的课程纳入学校教学计划,与之配套的课程是“编译方法”、“编译技术”等,重点讲授高级程序设计语言的发展和编译的基础知识和技术。由于缺少配套的教材,主要结合一些实际编译程序的实现技术展开课程内容。该阶段后期,国内引入格里斯的教材上、中、下三册,本科生重点讲授上、中册。80年代初至80年代末,国内组织计算机专业统编教材,国防科技大学陈火旺教授于1983年编写出版了《编译原理》,国内多数学校采用了该教材,课程名称也相对统一称为“编译原理”。由于当时该课程参考资料缺乏,开设的学校较少,加之当时国内软件研发刚刚起步,对课程涉及的编译程序这类大型系统软件有关理论和技术理解受限,教师把握课程的精髓及学生学习皆感到有一定困难。为此,国内一些高校联合举办每两年一次的“编译原理”课程研讨会,交流课程教学计划、教学方法和教学手段等,对该课程的推进起到了很好的促进作用。
(2) 课程发展阶段。约从20世纪80年代初、中期开始至90年代中期,计算机学科及体系不断发展完善,许多较早设立计算机专业的院校成立了计算机系(院),许多院校结合学习、理解和分析IEEE教程,较系统梳理了课程体系,制定了“编译原理”课程新的大纲和知识体系,更新了教学内容。特别是设置计算机软件专业的本科院校,“编译原理”课程基本都设为必修课,有些学校还设置了“编译原理”的前驱基础课程“形式语言自动机基础”,为学生更深入、牢固地掌握编译理论奠定了良好的基础和系统的学习途径。
(3) 从20世纪90年代到现在,随着全球范围内IT业的迅猛发展及IT领域人才市场的需求拉动,对计算机专业的课程设置和改革提出了更高的要求。课程教学体系和教学模式不断提升,积累了丰富的教学资源。此阶段亦正值我国高等教育大发展大变革时期,自1999年开始,招生规模逐年迅速扩大,计算机专业已成为中国规模最大的理工专业,专业调整、合并不断推进。而本课程在此阶段的一些重要改革是:教育部高等学校计算机科学与技术教指委确立了“分类培养”的战略思想,在教材建设上更注重汲取世界上著名编译教材的优点,先后引进了本领域权威的“鲸书”、“龙书”和“虎书”等经典教材。国内许多高校结合自己多年积累的教学和科研经验,先后出版了适合自身教学要求的教材及教学参考书。与此同时,课程实验教学的改革与理论教学的改革同步,更注重通过编译原理教学培养学生综合的软件工程能力。
3基于专业能力和专业素质考量的教学指导思想
3.1人才培养目标主导课程教学指导思想
按照教育部计算机教指委“分类培养”的指导思想,根据学校为创建研究型大学而确立的“厚基础、宽口径、强能力、高素质”的人才培养目标,结合计算机学科的发展趋势和现代计算机人才的社会需求,我们明确了本专业“编译原理”课程的建设目标和指导思想是:立足夯实基础,拓宽课程相关领域,训练工程素质;使学生明确认知语言及语言的处理是求解问题的一种有效途径;培养学生对系统软件和中、大型软件的规划、组织、设计和实现的综合能力和素质。
3.2课程设计实施保障专业能力和素质提升
“编译原理”课程具有理论性、系统性、实践性强的特点,课程涉及的知识可以让学生领悟到计算机理论的精髓。在课程教学指导思想定位的基础上,结合课程规划、设计与实施,把面向知识的教育转变为能力导向的教育,探讨课程教学如何在学生专业能力和素质培养中发挥有效的作用。这需要教师有厚重的业务水平和教学经验的积累,凝练与之相适应的课程内容的内涵,注重对课程学习思维方法的启发和引导。以“编译原理”课程为例,我们的讨论关注其中的两点:
(1) 课程知识向专业能力和素质的升华
专业能力实际也是知识的综合体现。编译程序是一个庞大复杂的系统软件,涉及到计算思维能力,系统规划、实现能力,算法能力等知识点及可应用性。因此,编译的原理性研究、学习和实践,可以从多角度提高学生的逻辑思维能力、实践动手能力、编程调试及综合应用能力,有助于切实有效地提高学生的专业素质。
(2) 知识的融合和关联
“编译原理”的课程体系和知识点具有许多内在和外在关联,知识点的可应用性亦处处存在,可以经过专门的课程设计,启发式地让课程知识点融合或关联,有利于拓宽学生思维,将专业能力和素质的提升融入教学之中。
下面举例说明“编译原理”课程中知识的融合和关联。
例1:对语言的表示和分析,涉及形式化描述和自动机;自动机的化简是一种数学抽象,直接利用离散数学中等价划分、商集的基础理论和知识;而在软件测试中,理论上的测试用例往往是无穷集,亦可以划分为等价集设计高质量的测试用例。
例2:编译程序在从程序设计到程序运行产生输出结果这一过程中处于核心地位,编译系统对用程序设计语言编写的源程序进行编译,编译过程中会用到源语言自身的规范和库程序,需要操作系统提供的库程序和接口,以及目标体系结构的相关信息生成可执行的二进制程序。根据用户的需要,可执行程序由操作系统调度运行,并与下层硬件系统产生密切的关系。为此,编译课程所讲授的部分内容需要程序设计语言、操作系统和体系结构等课程内容作为支撑,这样才能使学生更好地理解计算机系统中从软件设计到程序执行这一完整的过程。
例3:对编译程序的组织与结构,若从软件体系结构层面考虑,将词法分析器作为语法分析器独立调用的子程序,则属于层次结构;若从接口关系上存在的直接I/O关系,可以认为属于过滤器结构。若从操作系统知识领域考虑,将词法分析器和语法分析器各作为一个独立线程,则对共享程序要解决互斥问题等。
再如,代码优化则是数学、逻辑学、结构程序设计、体系结构和优化理论的综合应用。
4结语
对课程教学指导思想的定位要紧扣人才的培养目标,有了明确的教学指导思想,才能有针对性地进行课程的教革,把面向知识的教育转变为能力导向的教育。本文结合学校研究型人才的培养目标、教学指导思想的定位及本课程特点,探讨在教学中将编译原理和技术与相关技术领域知识的融会贯通,提出在编译课程的教学改革中应加强与其他课程内容的交叉和联系,以提升学生的专业能力和素质。
参考文献:
[1] 陈英,陈朔鹰,王贵珍,等. 编译原理[M]. 北京:清华大学出版社,2009.
[2] 教育部高等学校计算机科学与技术教学指导委员会. 高等学校计算机科学与技术专业发展战略研究报告暨专业规范(试行)[R]. 北京:高等教育出版社,2006.
[3] 何炎祥,伍春香. 计算机专业不需要开设编译原理课程吗?[J]. 计算机教育,2009(4):61-62.
[4] 蒋宗礼. 推进专业改革,提高教学水平[J]. 计算机教育,2009(16):8-13.