劉漢強
摘要:編譯原理是計算機專業(yè)的一門重要專業(yè)課,旨在介紹編譯程序構(gòu)造的一般原理和基本方法。針對高等師范院校的計算機專業(yè)師范生普遍對編譯原理課程學(xué)習(xí)興趣不高且無法獲得良好的學(xué)習(xí)效果等問題,通過考察計算機專業(yè)師范生的特點,深入分析了教材、教學(xué)對象、教學(xué)目標(biāo)和教學(xué)過程等問題,設(shè)計了計算機專業(yè)師范生編譯原理課程的教學(xué)和實驗改革措施。通過措施的開展,使得學(xué)生能夠理解掌握并能清楚講解編譯原理主要理論,加深學(xué)生對編譯原理基本課程理論的理解與把握,提升學(xué)習(xí)效率。
關(guān)鍵詞:計算機專業(yè)師范生;編譯原理;教學(xué)方法;改革探索
中圖分類號:G642.0 文獻(xiàn)標(biāo)志碼:A 文章編號:1674-9324(2017)36-0121-03
引言
2007年,國務(wù)院決定在教育部直屬師范大學(xué)實行師范生免費教育。陜西師范大學(xué)作為教育部直屬6所師范大學(xué)之一,經(jīng)過近十年的努力,在師范生免費教育上獲得了突出的成績。編譯原理作為計算機專業(yè)的一門重要專業(yè)課,旨在介紹編譯程序構(gòu)造的一般原理和基本方法。在陜西師范大學(xué)計算機科學(xué)學(xué)院,對于計算機科學(xué)與技術(shù)專業(yè)師范生,該課程開設(shè)在第五個學(xué)期。該課程講授內(nèi)容包括語言和文法、詞法分析、語法分析、語法制導(dǎo)翻譯、中間代碼生成、存儲管理、代碼優(yōu)化和目標(biāo)代碼生成[1]。Alfred V.Aho在其名著《編譯原理》的開篇寫道,“編譯編譯器的原理與技術(shù)具有十分普遍的意義,以至于每個計算機科學(xué)家的研究生涯中,本書中的原理與技術(shù)都會被反復(fù)使用”[2],表明了編譯原理在整個程序設(shè)計教程中擔(dān)負(fù)著重要作用。
雖然編譯原理在計算機教學(xué)中擔(dān)任著重要的角色,但是作為一名計算機專業(yè)大三學(xué)生,尤其計算機專業(yè)師范生,在學(xué)習(xí)這門課程時普遍存在以下問題:(1)該課程對計算機專業(yè)師范生未來從事中小學(xué)教師職業(yè)幫助不大,且無法得知是否可以對今后的學(xué)習(xí)與工作產(chǎn)生有利的影響;(2)編譯原理課本中存在大量的理論知識,內(nèi)容抽象枯燥且不易理解,很難完整全面地把握知識并形成相應(yīng)的理論體系;(3)很多人認(rèn)為只要掌握了如何使用編譯器就可以了,何必掌握這個編譯器是怎么來的呢,又為何要學(xué)習(xí)如何編譯一個編譯器呢?也因為這樣的原因,大多數(shù)計算機專業(yè)師范生對編譯原理的學(xué)習(xí)興趣不高甚至于根本沒有學(xué)習(xí)興趣。因此我們不得不采取措施轉(zhuǎn)變教學(xué)觀念,改革編譯原理的傳統(tǒng)教學(xué)和實驗方法,研究新型教學(xué)和實驗?zāi)J剑雇瑢W(xué)們糾正自己的錯誤認(rèn)識,端正學(xué)習(xí)態(tài)度,提高學(xué)習(xí)編譯原理的積極性與熱情,更好地理解與掌握編譯原理的相關(guān)知識。同時,也能夠使教師在授課的過程中更加用心,最終使教師與學(xué)生共同進步。
一、對計算機專業(yè)師范生的編譯原理理論知識的教學(xué)改革
在傳統(tǒng)教學(xué)方法中,習(xí)慣使用填鴨式教學(xué)法,即教師對知識進行系統(tǒng)的講解,學(xué)生在短時間內(nèi)掌握大量知識。但是這種方法以教師為主體,學(xué)生的聽課效率不高,并且這種教學(xué)方法多以書本為主,很少考慮學(xué)生的主體意識。此外,編譯原理知識的晦澀枯燥使學(xué)生們的學(xué)習(xí)興趣大大降低,且教師與學(xué)生間的互動相對來說比較少,教師難以把握學(xué)生學(xué)習(xí)狀況,不利于教學(xué)的展開[3]。此外,計算機專業(yè)的師范生未來的工作多為中小學(xué)信息技術(shù)老師,編譯原理課程在其未來的工作可能不再會涉及,使得他們對該課程的學(xué)習(xí)不夠重視,并且學(xué)生遇到問題時不愿意獨立思考、動手實踐。針對計算機專業(yè)師范生編譯原理課程學(xué)習(xí)中出現(xiàn)的問題,結(jié)合學(xué)生和編譯原理課程的特點,轉(zhuǎn)變教學(xué)模式,精心設(shè)計任務(wù)教學(xué)任務(wù)。
(一)啟發(fā)式教學(xué)法
啟發(fā)式教學(xué)就是根據(jù)教學(xué)目的、內(nèi)容、學(xué)生的知識水平和知識規(guī)律,運用各種教學(xué)手段,采用啟發(fā)誘導(dǎo)辦法傳授知識,使學(xué)生積極主動地學(xué)習(xí),以促進身心發(fā)展。例如:學(xué)習(xí)詞法分析時,怎樣完成單詞的識別呢?可以讓學(xué)生思考人類語言的結(jié)構(gòu),按照從左到右的掃描順序,一個一個解讀每個單詞,尋找規(guī)律并發(fā)現(xiàn)不同的單詞。最后,按照開始符號的不同,識別不同的單詞,拼寫單詞直到遇到非法符號即可。
(二)任務(wù)驅(qū)動教學(xué)法
任務(wù)驅(qū)動教學(xué)法是學(xué)生在任務(wù)的驅(qū)動下,借助教師的幫助,利用學(xué)習(xí)資源,通過課堂上的自主、合作、探究學(xué)習(xí)獲得知識意義的建構(gòu)和能力提高的一種教學(xué)方法。它以任務(wù)為主線、教師為主導(dǎo)、學(xué)生為主體,是新課程改革實踐中出現(xiàn)的一種新教法、新模式,體現(xiàn)了新課程改革“自主—合作—探究”的學(xué)習(xí)理念。詞法分析的任務(wù)和功能以及有限自動機等分析工具的內(nèi)容比較抽象,是教學(xué)的重點和難點。采用任務(wù)驅(qū)動法能夠取得較好的效果[4]。詞法分析是編譯的第一階段,該階段的任務(wù)是從左到右逐個字段對源程序進行掃描,產(chǎn)生一個個單詞序列,用以進行語法分析。直白的說就是輸入源程序,輸出單詞符號。具備了正規(guī)文法知識,講解形式語言和自動機理論知識就比較容易被學(xué)生接受。
(三)案例教學(xué)法
案例教學(xué)是一種開放式、互動式的新型教學(xué)方式。通常,案例教學(xué)要經(jīng)過事先周密的策劃和準(zhǔn)備,要使用特定的案例并指導(dǎo)學(xué)生提前閱讀,要組織學(xué)生開展討論或爭論,形成反復(fù)的互動與交流。算法優(yōu)先分析是編譯原理過程中的一個重要的自上而下分析算法,在講解詞算法時,首先要引入3個概念:算符文法、終結(jié)符間的優(yōu)先關(guān)系及算符優(yōu)先文法。我們首先從“算符優(yōu)先算法”幾個字入手,先了解這種算法是借助于“字符間的優(yōu)先關(guān)系”進行的一種語法分析方法,告訴學(xué)生優(yōu)先關(guān)系有3種,然后給出3組小實例,從而使得學(xué)生能夠很自然地理解這里的優(yōu)先關(guān)系與數(shù)字間的大小關(guān)系是完全不同的,它是指左結(jié)合下的算法表達(dá)式中算符計算的先后順序。然后在黑板上給出小實例,如“3+4*52-6”,并在寫的過程中告訴學(xué)生這個表達(dá)式很長,在寫中間過程“3+4”、“3+4*”、“3+4*52”、“3+4*52-”的時候,詢問學(xué)生表達(dá)式還未結(jié)束是否可以計算,因此讓學(xué)生自己總結(jié)出這里的優(yōu)先關(guān)系是指前一個算符和后一個相繼出現(xiàn)的算符的關(guān)系,并強調(diào)兩點:首先,(a,b)和(b,a)是兩種不同的關(guān)系;其次,當(dāng)a,b前后相繼出現(xiàn)時才會用到(a,b)。最后,把算符擴充到終結(jié)符。根據(jù)上述案例教學(xué),很容易讓學(xué)生理解算符文法和算法優(yōu)先文法的概念。endprint
(四)討論式教學(xué)法
討論式教學(xué)法強調(diào)在教師的精心準(zhǔn)備和指導(dǎo)下,為實現(xiàn)一定的教學(xué)目標(biāo),通過預(yù)先的設(shè)計與組織,啟發(fā)學(xué)員就特定問題發(fā)表自己的見解,以培養(yǎng)學(xué)員的獨立思考能力和創(chuàng)新精神。討論式教學(xué)的環(huán)節(jié)大致包括:設(shè)計問題、提供資料、啟發(fā)思路、得出結(jié)論。
在講授編譯原理語法分析單元中的算符有限分析法時,設(shè)計了一個計算器的應(yīng)用程序,傳統(tǒng)的計算器是按照輸入表達(dá)式的順序進行運算,而這里的設(shè)計包含括號的計算器,按照先括號后乘除最后加減的方法進行運算,當(dāng)輸入表達(dá)式后通過按鈕控制結(jié)果的輸出。演示完畢后,由同學(xué)討論計算機是如何完成的。最后給出采用兩個棧存放操作數(shù)和運算符,通過按鈕來控制進棧和出棧。這樣引出了算符優(yōu)先分析法的內(nèi)容。這種講解法激發(fā)了學(xué)生的學(xué)習(xí)興趣,對接下來的內(nèi)容充滿了好奇,有利于對知識的學(xué)習(xí)。
(五)Blackboard信息化教學(xué)平臺的使用
陜西師范大學(xué)已于2013年引入Blackboard信息化教學(xué)平臺,引導(dǎo)各教學(xué)單位和廣大教師開展基于Blackboard教學(xué)平臺的信息化課程建設(shè)及教學(xué)方式改革。該信息平臺可以提供比較豐富的教學(xué)資源,如教學(xué)大綱、教學(xué)計劃、電子教案、電子課件和教學(xué)視頻等,方便學(xué)生自主學(xué)習(xí)。網(wǎng)絡(luò)教學(xué)平臺及資源在本課程的教學(xué)中已經(jīng)發(fā)揮了關(guān)鍵的作用,課程教學(xué)組成員負(fù)責(zé)網(wǎng)站的日常維護和教學(xué)資源更新,學(xué)生每天的正常學(xué)習(xí)都要在這個平臺上進行,課后師生也經(jīng)常利用這個網(wǎng)絡(luò)平臺進行在線交流、答疑等。通過利用該教學(xué)平臺,使用混合式教學(xué),將傳統(tǒng)教學(xué)的優(yōu)勢和數(shù)字化教學(xué)的優(yōu)勢結(jié)合起來,二者優(yōu)勢互補,從而獲得更佳的教學(xué)效果。
二、針對計算機專業(yè)師范生的編譯原理實驗部分改革
對于計算機學(xué)科來說,實驗是其重要的組成部分。如果掌握了理論知識而不動手實踐,就如同將軍紙上談兵。對于編譯原理來說,通過實驗可以更好地掌握其理論知識,當(dāng)我們做完試驗后再回頭看書,我們會發(fā)現(xiàn)原來編譯原理并沒有那么難理解。通過實驗,學(xué)生可以對自己所學(xué)知識進行檢測,及時發(fā)現(xiàn)自己存在的問題與漏洞,及時改正與復(fù)習(xí),同時也避免了丟開課本就忘的情況。計算機專業(yè)師范生因以后多從事教師行業(yè),大多對自己的理論知識要求較高,而在實驗環(huán)節(jié)要求一般,做具體實驗時會感覺比較難,動手實踐能力較差,因此教師可以以學(xué)生了解實驗原理作為實驗?zāi)康呐c要求。因此針對計算機專業(yè)師范生,對編譯原理課程實驗部分改革的具體內(nèi)容為:(1)詞法分析器設(shè)計:主要目的為熟悉詞法分析的基本原理、詞法分析的過程以及詞法分析中要注意的問題。實驗內(nèi)容是使用C語言編寫一個PL/0詞法分析器,為語法語義分析提供單詞,使之能把輸入的字符串形式的源程序分割成一個個單詞符號傳遞給語法語義分析,并把分析結(jié)果(基本字,運算符,標(biāo)識符,常數(shù)以及界符)輸出。(2)語法分析程序設(shè)計(一):加深對語法分析器工作過程的理解,能夠采用C語言實現(xiàn)簡單的語法分析程序,能夠使用自己編寫的分析程序?qū)唵蔚某绦蚨芜M行語法翻譯。這里可以設(shè)計使用預(yù)測分析法來編制語法分析程序,通過對語法規(guī)則的明確定義,編寫有效的分析程序并對詞法分析器實驗中得到的結(jié)果進行正確的語法分析。(3)語法分析程序設(shè)計(二):由于后續(xù)語法分析原理比較復(fù)雜,針對計算機專業(yè)師范生,為了加強學(xué)生對算符優(yōu)先分析法、遞歸下降分析法和LR(1)分析法的理解,將現(xiàn)成的程序讓學(xué)生閱讀理解,并組織分組討論和講解,實現(xiàn)語法分析程序的掌握。
通過上述的實驗改革,計算機專業(yè)師范生提高了學(xué)生對編譯原理實驗的興趣,在原有的基礎(chǔ)上加深了對原理的掌握,同時提高了自己閱讀和理解程序的能力。
三、總結(jié)與展望
該論文旨在對師范院校計算機專業(yè)師范生的編譯原理教學(xué)與實驗改革部分進行闡述,使教師和學(xué)生轉(zhuǎn)變教學(xué)思想,端正學(xué)生學(xué)習(xí)態(tài)度,提升學(xué)生對編譯原理的學(xué)習(xí)興趣,加強對編譯原理相關(guān)知識的理解與把握能力,從而提升其創(chuàng)新精神與創(chuàng)造能力。通過介紹編譯原理在計算機中的重要性、對編譯原理進行教學(xué)改革的原因,結(jié)合計算機專業(yè)師范生的學(xué)習(xí)特點,對編譯原理教學(xué)進行改革所采取的新式教學(xué)和實驗方法策略。希望此論文可以為計算機專業(yè)師范生的編譯原理教學(xué)提供幫助。
參考文獻(xiàn):
[1]陳火旺,劉春林,譚慶平,等.程序設(shè)計語言編譯原理[M].北京:國防工業(yè)出版社,2009.
[2]張素琴,呂映芝,蔣維杜,等.編譯原理[M].北京:清華大學(xué)出版社,2005.
[3]徐晶.研究型教學(xué)在編譯原理課程中的應(yīng)用探索[J].現(xiàn)代教育技術(shù),2009,19(S1):62-63.
[4]袁彩虹,周星.編譯原理課程案例教學(xué)研究[J].計算機教育,2013,(9):27-29.endprint