張鵬,戚梅
(山東科技大學(xué) 信息科學(xué)與工程學(xué)院,山東 青島 266590)
《編譯原理》課程教學(xué)改革探討
張鵬,戚梅
(山東科技大學(xué) 信息科學(xué)與工程學(xué)院,山東 青島 266590)
《編譯原理》是高校計(jì)算機(jī)類專業(yè)的重要基礎(chǔ)和骨干課程,具有較強(qiáng)的理論性和實(shí)踐性。針對(duì)這門課程的特點(diǎn),探討了提高教學(xué)效果改革的方法,主要提出了4點(diǎn):打破灌輸式教學(xué)方式,注重創(chuàng)新意識(shí)和能力的培養(yǎng);實(shí)施多樣化的教學(xué)形式,努力實(shí)現(xiàn)以學(xué)生發(fā)展為本;區(qū)分不同教學(xué)對(duì)象,注重因材施教的培養(yǎng)方式;提倡理論聯(lián)系實(shí)踐,培養(yǎng)學(xué)生的動(dòng)手能力。經(jīng)過(guò)實(shí)踐,較好地調(diào)動(dòng)了學(xué)生的學(xué)習(xí)興趣,在培養(yǎng)學(xué)生的學(xué)習(xí)能力、實(shí)踐能力和創(chuàng)造能力、工程意識(shí)方面取得了良好的教學(xué)效果。
編譯原理;教學(xué)改革;專業(yè)能力;教學(xué)實(shí)踐;教學(xué)方式
《編譯原理》是高等院校本科計(jì)算機(jī)專業(yè)中一門非常重要的核心課程之一,它對(duì)培養(yǎng)學(xué)生的抽象思維能力、獨(dú)立解決復(fù)雜問(wèn)題的能力以及增強(qiáng)理解計(jì)算機(jī)基礎(chǔ)理論的能力等方面起著很大作用[1-3]。Alfred V.Aho曾說(shuō)過(guò)“編寫編譯器的原理和技術(shù)具有十分普遍的意義,以至于在每個(gè)計(jì)算機(jī)科學(xué)家的研究生涯中,本書中的原理和技術(shù)都會(huì)反復(fù)用到[1]”。
如何改革編譯原理課程教學(xué)以提高其教學(xué)效果和教學(xué)質(zhì)量,使它跟上新形勢(shì)下計(jì)算機(jī)技術(shù)的發(fā)展,是我們當(dāng)前急需解決的重要問(wèn)題。為了使學(xué)生系統(tǒng)全面地掌握編譯的相關(guān)內(nèi)容,培養(yǎng)學(xué)生扎實(shí)的計(jì)算機(jī)理論基礎(chǔ)和良好的計(jì)算機(jī)實(shí)際應(yīng)用能力,掌握課程的重點(diǎn),融會(huì)其難點(diǎn)。
筆者曾于2010年5月參加全國(guó)高校教師網(wǎng)絡(luò)培訓(xùn)中心舉辦的蔣宗禮教授主講的《編譯原理》精品課程培訓(xùn),得到蔣教授在各個(gè)方面給予的指導(dǎo),深受啟發(fā)。筆者在多年的教學(xué)實(shí)踐基礎(chǔ)上,對(duì)這門課程的教學(xué)提出了一系列的改革措施并在教學(xué)實(shí)踐中付諸實(shí)施,取得了良好的教學(xué)效果。現(xiàn)在將講授該課程的指導(dǎo)思想和理念的個(gè)人心得總結(jié)如下,歡迎同行批評(píng)指正。
過(guò)去教學(xué)中過(guò)分強(qiáng)調(diào)知識(shí)的灌輸過(guò)程,好像教師不講學(xué)生肯定不會(huì)。講課務(wù)必求全,講得夠多,講得夠細(xì),講得夠深,學(xué)生的學(xué)習(xí)目的好像都是為了死板的知識(shí)。但事實(shí)證明這種教學(xué)方式是有問(wèn)題的,這種教育觀念已經(jīng)妨礙了學(xué)生全面而富有個(gè)性的發(fā)展,窒息了學(xué)生的創(chuàng)新意識(shí),創(chuàng)新精神。
教師首先要解放思想打破灌輸式教育教學(xué)觀念,建立注重創(chuàng)新意識(shí)和能力教育理念。該課程的主要特點(diǎn)可以歸納為:傳授基本方法,培養(yǎng)學(xué)科能力;挖掘知識(shí)來(lái)源,培養(yǎng)創(chuàng)新能力;重視培養(yǎng)系統(tǒng)能力;注重實(shí)驗(yàn)教學(xué),培養(yǎng)實(shí)踐能力。
其次教學(xué)內(nèi)容為次,方法為主,讓學(xué)生掌握解決問(wèn)題的方法。這些方法主要有:基于自動(dòng)機(jī)理論的形式化描述方法、程序設(shè)計(jì)的逐步求精方法、程序設(shè)計(jì)中自頂向下、自底向上的方法,算法設(shè)計(jì)中的遞歸求解方法、計(jì)算機(jī)科學(xué)理論中圖形化與數(shù)學(xué)化結(jié)合的方法等。這些方法都是計(jì)算機(jī)學(xué)科最經(jīng)典、最常用的問(wèn)題求解與系統(tǒng)設(shè)計(jì)方法。掌握這些方法后實(shí)現(xiàn)從“實(shí)例計(jì)算”到“類計(jì)算”和“模型計(jì)算”的跨越[4];從宏觀到微觀、從微觀到宏觀,培養(yǎng)系統(tǒng)能力,注重培養(yǎng)學(xué)生的創(chuàng)新意識(shí)和能力。
例如在講授“正規(guī)式”一節(jié)中,在學(xué)生掌握基本內(nèi)容和知識(shí)基礎(chǔ)以后,可以補(bǔ)充一個(gè)思考題,來(lái)鞏固所學(xué),促進(jìn)思考,并將以前高級(jí)語(yǔ)言的基本知識(shí)形式化。
例如:某高級(jí)語(yǔ)言可接受的合法文件名為:device:name.extension,其中device:和.extension可以省略。假定device,name和extension都是字母串,長(zhǎng)度不限但至少為1,試畫出識(shí)別文件名的DFA。
此題解題的關(guān)鍵在于理解正規(guī)式對(duì)于單詞形式的表達(dá)更為方便,求某類單詞的DFA可以先求其正規(guī)式,再化成等價(jià)的DFAM。求正規(guī)式時(shí)對(duì)于復(fù)雜單詞可以分部分求解,文件名可以分為3部分,可以分別寫出再連接起來(lái),不妨設(shè)c為任意字 母 ,Device 的 正 規(guī) 式 :cc*|ε,name 的 正 規(guī) 式 :cc*,.extension 的正規(guī)式:cc*|ε,3 部分連接起來(lái)(cc*|ε) cc* (cc*|ε).有了正規(guī)式,就可以化為等價(jià)的DAFM,這正是圖形化與數(shù)學(xué)化結(jié)合,該DFA如圖1所示。
圖1 文件名的DFAFig.1 DFA of file name
課程的出發(fā)點(diǎn)與落腳點(diǎn)都是面向全體學(xué)生的全面發(fā)展。為此,教師課堂講授中應(yīng)該深挖知識(shí)背后的內(nèi)容,努力再現(xiàn)該課程開創(chuàng)者大師們的問(wèn)題求解思考過(guò)程,引導(dǎo)學(xué)生一起思考問(wèn)題,體驗(yàn)思考和問(wèn)題求解的樂(lè)趣。通過(guò)在課堂中適時(shí)提出深層問(wèn)題、擴(kuò)展問(wèn)題和提示輔助材料,鼓勵(lì)和引導(dǎo)學(xué)生開闊視野,主動(dòng)探索,培養(yǎng)他們的學(xué)習(xí)興趣、創(chuàng)新意識(shí)和創(chuàng)新能力,也減少了學(xué)生的死記硬背,便于學(xué)生理解。
講課過(guò)程中通過(guò)各種方式化解對(duì)編譯的難點(diǎn),降低課程知識(shí)內(nèi)容的抽象性,提高了學(xué)生的學(xué)習(xí)興趣,獲得了更好的學(xué)習(xí)效果。
教學(xué)形式上力求多樣化,充分利用多媒體教學(xué),講授內(nèi)容事先編排和制作,表達(dá)手段多樣化,能夠大幅度提高信息量、改善課堂結(jié)構(gòu)、擴(kuò)大知識(shí)面和避免人為錯(cuò)誤。經(jīng)過(guò)多年的教學(xué)實(shí)踐,制作了圖文并茂的多媒體課件。相關(guān)算法可以用圖片,動(dòng)畫等多種形式展現(xiàn)其對(duì)數(shù)據(jù)的處理過(guò)程。課程中詞法分析,語(yǔ)法分析,代碼優(yōu)化等內(nèi)容理論比較深?yuàn)W,算法比較復(fù)雜,我們利用動(dòng)畫表現(xiàn)算法對(duì)文法和句子處理過(guò)程。經(jīng)過(guò)這樣處理,能調(diào)動(dòng)學(xué)生的觀察能力,把教學(xué)過(guò)程變?yōu)閷W(xué)生自己的主動(dòng)探究性活動(dòng),教者輕松,學(xué)者有趣,深化了學(xué)生對(duì)基本知識(shí)掌握和對(duì)算法的準(zhǔn)確理解。
比如,LR分析法是本課程的難點(diǎn),在講解分析過(guò)程前,先講解LR分析器模型。一個(gè)LR分析器實(shí)質(zhì)上是一個(gè)帶先進(jìn)后出存儲(chǔ)器(棧)的確定有限狀態(tài)自動(dòng)機(jī)。把“歷史”和“展望”材料綜合地抽象成某些“狀態(tài)”(自動(dòng)機(jī)的狀態(tài))。狀態(tài)棧(先進(jìn)后出存儲(chǔ)器)用來(lái)存放狀態(tài)。棧里的每個(gè)狀態(tài)概括了從分析開始直到某一歸約階段的全部“歷史”和“展望”資料。任何時(shí)候,棧頂?shù)臓顟B(tài)都代表了整個(gè)的歷史和已推測(cè)出的展望。因此,在任何時(shí)候都可從棧頂狀態(tài)得知所想了解的文法的一切信息,而沒(méi)有必要從底而上翻閱整個(gè)棧。LR分析器的每一步工作都是由棧頂狀態(tài)和現(xiàn)行輸入符號(hào)所唯一決定的。
“編譯原理”中的一些基本概念、基本理論和基本方法,學(xué)生應(yīng)該掌握,這是本課程的基礎(chǔ)。這些基本內(nèi)容有:文法、語(yǔ)言、正規(guī)語(yǔ)言(文法)、上下文無(wú)關(guān)語(yǔ)言(文法)、二義性、語(yǔ)法樹;單詞文法描述、詞法分析程序、正規(guī)式和正規(guī)集;LL分析、遞歸下降分析器、算符優(yōu)先分析法、LR分析法;語(yǔ)法制導(dǎo)翻譯、中間代碼生成;符號(hào)表、靜態(tài)存儲(chǔ)分配、動(dòng)態(tài)存儲(chǔ)分配;寄存器分配、目標(biāo)代碼生成等。
當(dāng)前多數(shù)高校都有計(jì)算機(jī)類專業(yè),比如計(jì)算機(jī)科學(xué)與技術(shù),軟件工程等。不同高校計(jì)算機(jī)專業(yè)學(xué)生培養(yǎng)有不同的目的,大體可以分為科學(xué)型、工程型、技術(shù)型等。不同類型的授課內(nèi)容、課程難點(diǎn)重點(diǎn)都有不同的側(cè)重點(diǎn)??茖W(xué)型對(duì)理論要求較高,對(duì)問(wèn)題形式化描述、算法討論,以培養(yǎng)學(xué)生的抽象思維能力、獨(dú)立解決復(fù)雜問(wèn)題的能力為重點(diǎn)。工程型、技術(shù)型要求以應(yīng)用為主,將編譯的技術(shù)用到實(shí)際的編程中。培養(yǎng)解決實(shí)際問(wèn)題的能力。
實(shí)踐教育是創(chuàng)新人材培養(yǎng)體系的重要組成部分。實(shí)驗(yàn)教育對(duì)于提高學(xué)生的綜合素質(zhì)、培養(yǎng)學(xué)生的科學(xué)精神和動(dòng)手能力有著不可替代的作用?!熬幾g原理”是理論和實(shí)踐結(jié)合密切的計(jì)算機(jī)課程之一,其內(nèi)容有較深的理論知識(shí),而相關(guān)技術(shù)又是這些理論的實(shí)踐,課堂的理論教學(xué)與實(shí)驗(yàn)課的實(shí)踐相結(jié)合,培養(yǎng)他們理論結(jié)合實(shí)際的能力。
在課程講授中,注意將編譯原理的理論與軟件開發(fā)的實(shí)踐問(wèn)題相結(jié)合,引導(dǎo)學(xué)生在軟件實(shí)踐中運(yùn)用編譯的理論與方法[5]。“編譯原理”的相關(guān)理論不僅可以應(yīng)用到編譯器的設(shè)計(jì)中,而且可以用于一般的軟件設(shè)計(jì):文本編輯器、自動(dòng)排版、模式識(shí)別、程序自動(dòng)驗(yàn)證、程序自動(dòng)調(diào)試、高級(jí)語(yǔ)言之間的轉(zhuǎn)換工具、通信協(xié)議轉(zhuǎn)換,交叉編譯技術(shù),芯片設(shè)計(jì)等。
比如對(duì)有限自動(dòng)機(jī)的學(xué)習(xí),有限自動(dòng)機(jī)是研究自動(dòng)系統(tǒng)的一種數(shù)學(xué)模型,作為一種識(shí)別裝置(模型),可用來(lái)識(shí)別正則文法所定義的語(yǔ)言。引入有限自動(dòng)機(jī)這個(gè)理論,為詞法分析程序的自動(dòng)構(gòu)造尋找方法和工具。但是有限自動(dòng)機(jī)形式化定義比較抽象,學(xué)生理解有困難。為此把確定的有限自動(dòng)機(jī)識(shí)別單詞的過(guò)程用程序體現(xiàn)出來(lái)。
DFAM=(K,∑,f,S,Z)的行為的模擬程序如下:
計(jì)算機(jī)技術(shù)發(fā)展日新月異,社會(huì)對(duì)計(jì)算機(jī)人才的需求隨時(shí)有變化,面對(duì)新形勢(shì)和新要求,課程教學(xué)不應(yīng)一成不變,應(yīng)該重新學(xué)習(xí)課程理論,學(xué)習(xí)教學(xué)策略。近幾年的教學(xué)實(shí)踐中,在課程教學(xué)內(nèi)容、教學(xué)方法和手段、實(shí)踐教學(xué)體系等方面的改革方面做了積極探索,較好地調(diào)動(dòng)了學(xué)生的學(xué)習(xí)興趣,在培養(yǎng)學(xué)生的學(xué)習(xí)能力、實(shí)踐能力和創(chuàng)造能力、工程意識(shí)方面做出了有益嘗試,取得了良好的教學(xué)效果。教學(xué)中,只有不斷進(jìn)行教學(xué)內(nèi)容和課程體系的改革,才能培養(yǎng)出符合社會(huì)需求的、具有一定創(chuàng)新能力的、高素質(zhì)的人才。
[1]李建中,姜守旭譯.編譯原理[M].北京:機(jī)械工業(yè)出版社,2003.
[2]張素琴,呂映芝.編譯原理[M].2版.北京:清華大學(xué)出版社,2007.
[3]陳火旺,劉春林,譚慶平.程序設(shè)計(jì)語(yǔ)言編譯原理[M].3版.長(zhǎng)沙:國(guó)防工業(yè)出版社,2000.
[4]蔣宗禮.基本學(xué)科能力培養(yǎng)在編譯原理課程教學(xué)中的實(shí)現(xiàn)[J].計(jì)算機(jī)教育,2007(1):28-30.
JIANG Zong-li.The realization of basic subject ability in the teaching of compile principle[J].Computer Education,2007(1):28-30.
[5]高麗.基于軟件項(xiàng)目小組模式的編譯原理教學(xué)改革探索[J].科技信息,2008,12(2):19-89.
GAO LI.Exploration of teaching innovation of compile principle based on,ode of software project teams[J].Science&Technology Information,2008,12(2):19-89.
[6]王挺,李夢(mèng)君,周會(huì)平.對(duì)編譯原理課程教學(xué)中計(jì)算思維培養(yǎng)的探討[J].計(jì)算機(jī)教育,2009(21):11-13.
WANG Ting, LI Jun-meng, ZHOU Hui-ping.The study of cultivating computing thinking in the teaching of compile principle[J].Computer Education,2009(21):11-13.
Study of compiling principles teaching reform
ZHANG Peng,QI Mei
(College of Information Science and Engineering,Shandong University of Science and Technology,Qingdao266590,China)
Compiling Principles is an important professional course in computer major,and it includes strong theory and practicality.Discusses the methods of improving teaching effects of Compiling Principles in four points:Paying more attention to students’ ability cultivating; carrying out various teaching method; practicing principles of individualized instruction;linking up theory with practice.It is proved that the teaching effect and the students’professional ability have been greatly enhanced and improved after teaching practice for several years.
compiling principles; teaching reformation; professional ability; teaching practice; teaching method
TP314
A
1674-6236(2012)05-0008-03
2012-01-01稿件編號(hào):201201001
國(guó)家自然科學(xué)基金項(xiàng)目(60803032;60970001;91018007);山東科技大學(xué)教學(xué)研究項(xiàng)目(qx102051)
張 鵬(1973—),男,山東泰安人,博士,副教授。研究方向:Petri網(wǎng)理論與應(yīng)用、并發(fā)模型與算法、工作流、服務(wù)計(jì)算等。