“编译原理”课程与专业能力培养

2009-12-30 03:41蒋宗礼
计算机教育 2009年21期
关键词:专业能力计算机

摘要:“能力导向”教学符合本科教育的基本追求,更有利于培养学生的可持续发展能力。“编译原理”作为计算机专业的传统核心课程,其所含知识是本专业实施能力培养的最佳载体之一,对学生专业能力的培养具有重要意义。本文从专业能力培养的视角讨论“编译原理”的教学。

关键词:计算机;专业能力;编译原理;面向能力培养

中图分类号:G642 文献标识码:B

高等教育为国家的现代化建设培养人才。根据我国现代建设的需要,计算机科学与技术专业要为信息化建设的需要培养计算机人才——每年约十万的招生量和约十万的毕业生可以看成是社会对计算机专业本科人才的基本需求。教育部高等学校计算机科学与技术教学指导委员会的发展战略研究报告指出,他们应该被分为科学型、工程型、应用型人才,而且绝大多数应该是工程型和应用型的。从本科毕业生的基本工作情况看,他们中确实只有极少数人专门从事计算机科学理论的研究,也只有很少数人从事操作系统、编译系统、数据库系统等的研究和开发。作为计算机科学与技术专业的“经典”核心课程,“操作系统原理”、“编译原理”、“数据库系统原理”等还有什么样的存在价值?计算机专业的学生为什么还要学习这些课程呢?这涉及到本科教育的基本问题,本文以“编译原理”课程为例,讨论有关问题。

1培养专业能力

根据《中华人民共和共教育法》,本科教育应当使学生比较系统地掌握本学科、专业必需的基础理论、基本知识,掌握本专业必要的基本技能、方法和相关知识,具有从事本专业实际工作和研究工作的初步能力——这规定了高等教育在知识、能力、素质三方面的具体要求。其中的“能力”在学生的可持续发展和创新精神与能力的形成中具有非常重要的作用。所以,教育不仅要强调知识基础,更要强调能力基础。

在知识基础和能力基础的追求上,东西方教育存在一定的差异。相对而言,东方教育表现出更注重夯实扎实知识基础的倾向,而西方教育更注重夯实能力基础。实际上,“知识基础”和“能力基础”并不矛盾,两者是相辅相成的关系:以知识为载体,通过对知识的学习,掌握恰当的问题求解思想和方法,培养学生的(专业)能力;能力的增强,会促进学生学习、掌握甚至发现更多的知识。所以,先进的教育倡导研究型“教”与“学”,尊崇的是“能力导向”。

在大学里,学习一门课程,不能简单、肤浅地看成是对这门课程所含内容的研究、设计和开发,而是关注是否在有限的时间内最有利于专业能力的培养。所以,我们不仅反对面向系统的教育,更反对产品教育。由于计算学科仍然是一个年轻的学科,其专业教育总体上还不够成熟,所以才有了今天的“操作系统”、“数据库系统”、“网络系统”、“编译系统”等面向系统的课程。相信随着学科的发展,计算机专业教育会不断成熟,会有更能体现专业教育需要的课程出现。就目前的情况,应该努力做到“使用工具、探索规律”、“实现具体系统、研究基本原理”,也就是“使用工具,不可忽略规律”、“学习系统,切莫冷落原理”。

那么,作为计算机专业的学生,应该具有什么样的基本能力呢?首先,作为一名受过高等教育的高级人才,交流、获取知识与信息的基本能力、基本学科能力、创新能力、工程实现能力、团队合作能力等,是不可或缺的。另外,作为接受专业教育的专业人员,更应该具备专业基本能力。自2002年开始,笔者就将计算机专业人才的专业基本能力归纳成计算思维(目前看,它的含义应该既有广义的,还有狭义的)、算法设计与分析能力、程序设计与实现能力(硬件和软件实现)、系统能力(系统的认知、分析、开发与应用)。4大基本能力有着自己丰富的内涵,它们的培养需要落实到各个教学环节中,特别是各门主干课程的教学中。

例如,系统能力要求学生站在系统的全局去看问题、分析问题和解决问题,并实现系统优化,对计算机专业人才来说,狭义的系统能力包括对一定规模系统的“全局掌控能力”(全局地掌控一定规模系统)和在构建系统时能够系统地考虑问题的求解。要想培养学生的系统能力,就需要在基本思想的指导下从教学的点滴入手。例如,自顶向下是系统设计的重要思想方法,学习它是为了引导学生分层次考虑问题,逐步求精;鼓励学生由简到繁,进行复杂程序的设计,是一个逐渐深入、逐渐扩展规模的过程;结合计算机硬件系统、编译系统、操作系统等的教学,可以使学生学会关注和掌握系统逻辑,引导学生从宏观到微观去分析、理解和把握系统;通过让学生参与较大型系统的设计与实现,鼓励他们在工作过程中努力掌握系统的总体结构,关心本人承担工作在系统中的地位等方式来增强学生的系统观和合作能力。教学中要不断提升学生的眼光,实现学生从系统级上对算法和程序的再认识。

2计算机专业的一门好课程

“编译原理”是一门非常好的课程。Alfred V.Aho编著的《Compilers: Principles, Techniques, and Tools》被认为是编译领域里的经典教材,加上其“封面龙”的造型,被人们尊称为“龙书”。作为第一章的第一句话,作者这样写道:“编写编译器的原理和技术具有十分普遍的意义,以至于在每个计算机科学家的研究生涯中,本书中的原理和技术都会反复用到。”这句话给出了这门课程的真正教学定位。

从课程体系总体设计看,“编译原理”课程的主要教学目标之一是使学生在系统的级别上重新认识算法和程序,提升学生的系统能力。实际上,除了这些之外,该课程还在于进一步培养学生的形式化描述能力:如何给出问题的形式化描述,基于这种描述设计出自动化处理的过程,最后实现“自动计算”。

虽然编译课程(通常称为“编译原理”、“编译方法”、“编译技术”等)是计算机专业的重要经典课程,但是随着高等教育的大众化,有些人对计算机专业是否需要开设“编译”课程出现了疑问,特别由于该课程的基本内容涉及到的一些重要理论基础具有抽象性,使得学生对其的理解产生了较大困难,加上有些人认为毕业生中很少有人将来设计与实现编译系统,使得该课程的“重要性”、“经典性”受到了怀疑。课程的设置虽然要看知识的“直接有用性”,但更要考虑专业能力培养的重要性。如果忽视了本科教育培养学生基本专业能力、可持续发展能力这一基本目的,课程设置就是不恰当的。实际上,计算机科学与技术专业的本科生是否要开设编译课程,要考虑具体的培养目标等因素,要从总体目标的需求上去考虑,要看它是否是在总学时的限制下,是实现总目标的最佳课程。

计算学科问题求解的基本思路是“问题、形式化描述、计算机化”,以抽象、理论、设计为其学科形态。编译原理涉及的是一个比较适当的抽象层面上的数据变换,既有明确的、便于抽象的问题,又有较成熟的理论,而且在限定规模下又容易实现(设计),所以“编译原理”是计算机专业本科生的重要专业技术基础课程,属于教学计划中四大系列之软件技术系列。

除了知识外,该课程内容还含有基本问题求解的典型思想、技术和方法,所以该课程对于培养学生的计算思维、程序设计与实现、算法设计与分析、计算机系统的认知、开发和利用等4大学科基本能力非常重要。学生是在程序设计、数据结构与算法等课程中受到一定的锻炼后,从系统的级别上对程序、算法的认识进行再提高,通过该课程进一步提升计算机问题求解的水平,增强系统能力,体验实现自动计算的乐趣。这些方法和思想包括掌握程序变换基本概念、问题描述和处理方法(自顶向下、自底向上、逐步求精、递归求解,目标驱动,问题分析、问题的抽象与形式化描述,算法设计与实现,系统构建、模块化)。通过学习这些知识、思想和方法,学生养成“问题、形式化描述、计算机化”问题求解习惯,实现从“实例计算”到“类计算”和“模型计算”的跨越;增强理论结合实际能力,获得更多的“顶峰体验”;从宏观到微观、从微观到宏观,形成系统能力。所以,鼓励有条件的计算机专业为本科生开设“编译”课程,并通过强调课程恰当的形态的内容,达到与专业培养目标吻合的课程教学目标。

3瞄准专业能力培养开展教学

总体上,我们可以将“编译原理”课程目标定义为:掌握编译原理中的基本概念、基本理论、基本方法,在系统级上再认识程序和算法,提升计算机问题求解的水平,增强系统能力,体验实现自动计算的乐趣,具体从如下几方面实现对学生能力的培养:

(1) 掌握程序变换基本概念、问题描述和处理方法

这些方法主要有:自顶向下、自底向上、逐步求精、递归求解,目标驱动,问题分析、问题的抽象与形式化描述,算法设计与实现,系统构建、模块化等方法。这些都是本学科最经典、最常用的问题求解和系统设计方法。

(2) 实现“问题、形式化描述、计算机化”的修养

修养“问题、形式化描述、计算机化”这一典型问题的求解过程,推进从“实例计算”到“类计算”和“模型计算”的跨越。

计算机学科发展到今天,早已经从一些单一的具体问题的求解发展到对一类问题的求解,也就是寻求一类问题的系统求解。完成单一的具体问题求解的计算称为“实例计算”;完成一类问题系统求解的计算称为“类计算”。当然,在“类计算”中,一大部分高层次的计算是“模型计算”。这是区别于其他专业的学生的重要方面之一。学生的培养,通常都是从“实例计算”开始,逐渐推进到“类计算”,实现学生“计算”理念的跨越。

(3) 增强理论结合实际能力,获得更多的“顶峰体验”

“编译原理”是理论和实践结合最好的计算机课程之一,不仅含有恰当的理论知识,而且直接涉及到这些理论的实践,让学生亲历理论结合实践的乐趣,使优秀的学生获得更多的“顶峰体验”,培养他们理论结合实际的能力。

(4) 从宏观到微观、从微观到宏观,培养系统能力

站在系统的全局去看问题、分析问题和解决问题,并实现系统优化。经验表明,培养学生以系统的观点去看问题,是非常重要的,也是比较困难的,可称之为“系统”能力。软件技术系列课程接在程序设计与算法系列之后,实现学生的系统认知、分析、设计和应用能力的培养,并使学生进一步在系统级别上认识程序和算法。

“编译系统”虽然是一个具有相当规模和相当复杂度的系统(含总体结构),但对问题本身的分析和处理的分解非常清楚,使得其规模和复杂度可控,宜于让学生掌握,通过教师的引导,强化对学生系统能力的培养,这对应用型计算机专业人才非常重要。

(5) 不断探索未知,培养创新能力

开展研究型教学,挖掘知识背后的内容,通过讲授思想、方法,模拟大师们的创新思维,培养学生的创新意识和创新能力。

(6) 强调理论指导下的实践,提升算法设计和程序设计能力

“编译原理”课程涉及的是一个比较适当的抽象层面上的数据变换,除了相应的知识非常重要外,其中一些基本的问题求解方法、处理问题的思路也是非常重要的。所以,“编译原理”课程的实践必须在理论指导下进行。学生在学习了基本的理论之后进行实验系统的设计与实现;教师在掌握系统总体构成和基本原理、方法的基础上提出实验的最基本要求。鼓励学生选择适当的方法进行系统的设计,包括选择自动化生成的方法。为了实现相应的效果,学生一定要先完成设计,然后再进入到实现阶段,以提高对复杂问题的求解能力。

另外,由于对问题的形式化描述及其系统的复杂性,许多理论知识需要在实践教学中得到印证,只有这样,才能使学生更好地掌握这些内容——就像吃梨子一样,亲自尝尝使用这些“一辈子都会不断使用的方法”的“味道”。通过实践,学生感受到成功的乐趣,提高了学习兴趣,加深对理论知识的理解,提高了理论联系实际的能力。

(7) 总体设计下的系统设计与实现,提升系统和程序实现能力

作为一个经典的、很成熟的系统,编译系统的构建涉及多方面的内容,既有分析,又有综合,对于培养学生的4大学科基本能力非常重要。无论从其复杂度还是技术含量上说,都是很适合教学的系统。

考虑到在一开始就讲授编译系统总体结构,可以在总体结构指导下,将其分解为“词法分析器设计与实现”、“语法分析器设计与实现”、“语义分析与中间代码器设计与实现”,每个程序将利用前一个程序的结果,最终形成一个简单的编译系统。这样就采用了功能递增的方式对实验进行引导性划分,使学生在学习词法分析时就可以着手进行相关的设计,随着教学的开展和教学内容的深化,组织系列化的上机实验,学生逐步完成词法分析器的设计与实现、语法分析器的设计与实现,优秀的学生进一步完成语义分析与中间代码生成器的设计与实现。在最后一个实验完成后,学生已经开发出一个满足要求的程序变换程序,完成整个系统的构建。

参考文献:

[1] 教育部高等学校计算机科学与技术教学指导委员会. 高等学校计算机科学与技术专业核心课程教学实施方案[M]. 北京:高等教育出版社,2009.

[2] 教育部高等教育计算机科学与技术教学指导委员会. 高等教育计算机科学与技术专业公共核心知识体系与课程[M]. 2版. 北京:清华大学出版社,2008.

[3] 蒋宗礼. 坚持抽象第一的基本原理,追求问题的系统求解[C]//林闯. 第七届全国高校计算机系系主任论坛论文集.北京:清华大学出版社,2004:77-82.

[4] 蒋宗礼. 论计算机学科的形态与研究生培养的关系[J]. 学位与研究生教育,2004.11:11-15.

[5] 蒋宗礼. 论“编译”的性质及其知识载体属性的开发利用[J]. 计算机教育,2004(Z1):53-56.

[6] 蒋宗礼. 谈高水平计算机人才的培养[J]. 中国大学教学,2005(9):24-27.

[7] 蒋宗礼. 编译原理教材需各取所长[J]. 教材周刊,2005(12):10.

[8] 蒋宗礼. 编译课程教材建设[J]. 计算机教育,2007(11):74-76.

[9] 蒋宗礼. 推进编译原理课程教学改革,提高课程效果[C]//大学计算机课程报告论坛组委会. 大学计算机课程报告论坛文集.北京:高等教育出版社,2007:558-561.

[10] 蒋宗礼. “编译原理”教学设计[J]. 计算机教育2008(3):26-30.

[11] 蒋宗礼. 以能力培养为导向,提高计算学科教育教学水平[J]. 中国大学教学,2008(8):35-37.

[12] 蒋宗礼. 工程教育认证的特征、指标体系与评估的比较[J]. 中国大学教学,2009(1):36-38.

[13] 蒋宗礼. 研究专业核心课程教学实施方案,引导大众化教育背景下的课程教学[J]. 计算机教育,2009(3):4-6.

[14] 蒋宗礼. 推进专业改革,提高办学水平[J]. 计算机教育,2009(16):8-11.

猜你喜欢
专业能力计算机
中国计算机报202007、08合刊
中国计算机报2019年48、49期合刊
中国古代的“计算机”
探讨互联网金融对证券行业的影响及解决对策
基于中职教师专业标准论班主任的专业素养
不同阶段幼儿教师专业能力的内在发展规律
中外教师合作教学对于中教专业发展的作用研究
职业院校“双师型”教师队伍建设的思考
随“声”随意 欧凡OA-G10 2.4G无线耳机
一体式,趋便携雅兰仕AL-225