李聲
摘要:編譯原理是計(jì)算機(jī)專業(yè)的重要的必修課程,但在實(shí)際的教學(xué)實(shí)踐過(guò)程中存在著諸多的問(wèn)題。該文針對(duì)新時(shí)期編譯原理教學(xué)實(shí)踐的需要,先分析了實(shí)踐的現(xiàn)狀,進(jìn)而提出了分級(jí)實(shí)踐的改革方案。通過(guò)實(shí)施分級(jí)教學(xué),可以更大限度地提升學(xué)生的計(jì)算機(jī)應(yīng)用能力,是教學(xué)改革的必然趨勢(shì)。
關(guān)鍵詞:編譯原理;實(shí)踐改革;分級(jí)教學(xué)
中圖分類號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2014)30-7120-02
《編譯原理》是計(jì)算機(jī)及相關(guān)專業(yè)的一門(mén)專業(yè)必修課程,在整個(gè)專業(yè)教學(xué)中占有舉足輕重的地位。該課程內(nèi)容比較抽象,邏輯性強(qiáng),它涵蓋了程序設(shè)計(jì)、自動(dòng)機(jī)、數(shù)據(jù)結(jié)構(gòu)、機(jī)器實(shí)現(xiàn)等多門(mén)學(xué)科,需要具有足夠的計(jì)算機(jī)基礎(chǔ)知識(shí)作為它的前驅(qū)課程,所以學(xué)生普遍反應(yīng)編譯比較難學(xué)。
現(xiàn)在計(jì)算機(jī)專業(yè)考研統(tǒng)考取消了《編譯原理》的考查,許多同學(xué)便認(rèn)為該門(mén)課程不是很重要,上課也都采取無(wú)所謂的態(tài)度,理論掌握不扎實(shí),進(jìn)而給實(shí)踐增加了難度。該門(mén)課的理論性、實(shí)踐性都比較強(qiáng),學(xué)習(xí)內(nèi)容包括了詞法分析、語(yǔ)法分析、語(yǔ)義分析與中間代碼生成、代碼優(yōu)化及目標(biāo)代碼的生成,其中涉及到的正則文法、有窮自動(dòng)機(jī)理論、上下文無(wú)關(guān)文法、LR文法、屬性文法、回填技術(shù)、局部?jī)?yōu)化等概念都是構(gòu)造編譯器的重要理論基礎(chǔ)。其實(shí)歸根到底編譯的重點(diǎn)不在于研究編譯程序具體代碼的實(shí)現(xiàn),而是對(duì)編譯的算法、基本原理的理解,編譯原理中包含的形式語(yǔ)言的定義、語(yǔ)言的翻譯過(guò)程、自動(dòng)機(jī)理論等知識(shí)都是計(jì)算機(jī)研究的精髓內(nèi)容,通過(guò)編譯系統(tǒng)的理論學(xué)習(xí)和編程實(shí)踐,可以增強(qiáng)學(xué)生軟件的設(shè)計(jì)開(kāi)發(fā)能力,提高他們的邏輯思維能力和操作動(dòng)手能力,提升他們的專業(yè)水平,使他們獲得可持續(xù)發(fā)展的計(jì)算機(jī)應(yīng)用能力。
1 編譯原理實(shí)踐課程現(xiàn)狀
為了加深學(xué)生對(duì)編譯原理理論知識(shí)的理論,實(shí)踐環(huán)節(jié)的設(shè)置是必不可少的。在筆者的學(xué)校,目前給編譯原理課程安排實(shí)踐內(nèi)容是8節(jié)上機(jī)課外加一個(gè)課程設(shè)計(jì),因?yàn)樯蠙C(jī)課時(shí)有限,所以給學(xué)生安排的是任務(wù)量稍輕的詞法分析、語(yǔ)法分析等程序的設(shè)計(jì),課程設(shè)計(jì)則增添了語(yǔ)義分析及編譯器的實(shí)現(xiàn)等內(nèi)容。
從以前的實(shí)踐結(jié)果看來(lái),情況不容樂(lè)觀。學(xué)生本身水平就是參差不齊,提交上來(lái)的設(shè)計(jì)作業(yè)水平也相差較大,更有甚者,如果不會(huì)做的話,直接把其他同學(xué)的作業(yè)拷貝一份改了名字交上來(lái),這樣一來(lái)顯然失去了實(shí)踐的意義。如果不是對(duì)學(xué)生足夠了解的話,光憑作業(yè)老師是無(wú)法判斷出誰(shuí)的水平高、誰(shuí)又是不勞而獲的。能力較強(qiáng)的學(xué)生覺(jué)得大家提交的作業(yè)一樣,體現(xiàn)不出自己的優(yōu)勢(shì),可能會(huì)打擊到他們的積極性,也無(wú)法激發(fā)他們進(jìn)行再創(chuàng)造的興趣。能力稍差的學(xué)生則覺(jué)得不用付出多少勞動(dòng),卻能得到差不多的成績(jī),那為何不繼續(xù)偷懶下去呢?長(zhǎng)此以往,他們的水平只會(huì)不進(jìn)反退,得不到真正的鍛煉。
由此,筆者想來(lái),因?yàn)槊看尾贾玫膶?shí)驗(yàn)內(nèi)容都是一樣的,對(duì)于水平不同的學(xué)生來(lái)說(shuō),顯然這是不太合理的。要是照顧的大多數(shù)同學(xué)的情況,作業(yè)難度提不上去,難度大的話不少同學(xué)不會(huì)做,太簡(jiǎn)單的話對(duì)于一些水平高的學(xué)生來(lái)說(shuō)又體現(xiàn)不出他們的實(shí)際能力。那可不可以將學(xué)生分成幾部分,分層次讓他們實(shí)踐不同的實(shí)驗(yàn)內(nèi)容呢?
2 實(shí)踐改革初探,采用分級(jí)實(shí)踐、分組合作
所謂分級(jí),是將學(xué)生按照他們的學(xué)習(xí)實(shí)踐能力分為幾個(gè)等級(jí),上機(jī)時(shí)可以選擇難度不同的實(shí)踐內(nèi)容。例如分為三個(gè)等級(jí):
1) 這類學(xué)生基礎(chǔ)知識(shí)比較扎實(shí),編程能力較強(qiáng),自主學(xué)習(xí)能力強(qiáng),一般可以快速完成老師分配給他們的任務(wù)。對(duì)于此類學(xué)生,老師可以根據(jù)他們的特長(zhǎng)設(shè)計(jì)不同的實(shí)踐課題,或是讓學(xué)生自己設(shè)計(jì)感興趣的實(shí)踐內(nèi)容,只要能充分利用編譯的相關(guān)原理即可。在實(shí)踐前期,老師和學(xué)生一起探討實(shí)踐課題的需求分析、框架設(shè)計(jì)等等,后期的具體實(shí)施則交由學(xué)生去完成。同時(shí)老師的考核方法也要做相應(yīng)的調(diào)整,不能只看結(jié)果不看過(guò)程,因?yàn)檫x題難度較之前的加大,學(xué)生很有可能在有限時(shí)間內(nèi)無(wú)法完成,這樣也會(huì)產(chǎn)生畏難情緒。作為老師應(yīng)該打消他們的后顧之憂,只要整個(gè)過(guò)程學(xué)生親身參與了,付出了相應(yīng)的勞動(dòng),那就應(yīng)該得到最大的鼓勵(lì),評(píng)分還是應(yīng)以中上等為主。具體評(píng)價(jià)的時(shí)候,可以參考實(shí)踐內(nèi)容有沒(méi)有創(chuàng)新,跟現(xiàn)有的類似課題相比有沒(méi)有改進(jìn)的地方。這樣一來(lái)肯定會(huì)極大的激發(fā)學(xué)生的積極性,愿意投入更多的精力到新課題的實(shí)施中去。
2) 對(duì)于前期課程沒(méi)有學(xué)好,編程水平較差的學(xué)生,讓他們獨(dú)立完成一個(gè)稍大型的程序不太現(xiàn)實(shí)。那我們可以因材施教,讓他們?nèi)ラ喿x一些程序代碼,分析代碼的結(jié)構(gòu),所用到的算法,畫(huà)出代碼的流程圖等等,即使沒(méi)有親自設(shè)計(jì)程序,也可以大致讀懂程序,為后續(xù)的課程實(shí)踐打下基礎(chǔ)。另外也可以從詞法分析器或語(yǔ)法分析器中提取出部分內(nèi)容,讓他們?cè)O(shè)計(jì)實(shí)現(xiàn)一些簡(jiǎn)單的函數(shù)。對(duì)于這部分學(xué)生,千萬(wàn)要防止他們出現(xiàn)自暴自棄的情緒,如果只是單純靠抄襲其他同學(xué)的作業(yè)來(lái)交差,那他們?cè)趯?shí)踐方面永遠(yuǎn)得不到提高,這對(duì)于他們找工作是極其不利的。
3) 此部分學(xué)生應(yīng)該是班級(jí)中的大多數(shù)了,他們?cè)谄綍r(shí)的學(xué)習(xí)中按部就班,循規(guī)蹈矩,對(duì)于老師布置的一般任務(wù)基本可以獨(dú)立完成或是少部分求助于其他同學(xué),但基本缺乏創(chuàng)新意識(shí),思考問(wèn)題不夠全面。對(duì)于此類學(xué)生,應(yīng)該鼓勵(lì)他們?nèi)?shí)踐一些有創(chuàng)新性的實(shí)踐課題。摒棄以往單純?nèi)?shí)現(xiàn)詞法分析、語(yǔ)法分析、語(yǔ)義分析的思路,可以分析設(shè)計(jì)基于某表達(dá)式的計(jì)算器,實(shí)現(xiàn)某編譯的前端等等。從根本上對(duì)學(xué)生的實(shí)踐內(nèi)容進(jìn)行改革,根據(jù)他們的個(gè)人能力來(lái)決定他們的實(shí)踐題目。此類學(xué)生的考核可以從創(chuàng)新性、題目的難度及完成程度幾方面去考察,既要讓學(xué)生掌握編譯原理的相關(guān)知識(shí),又不能打擊了他們的積極性,讓他們對(duì)以后的課程實(shí)踐都失去了興趣。
還有一種實(shí)踐模式,就是將好中差學(xué)生分在一組,根據(jù)實(shí)踐的難易程度,大家量力而為,將實(shí)踐內(nèi)容分解為幾部分,不同的學(xué)生完成不同的內(nèi)容,最后大家提交一份完整的設(shè)計(jì)。這樣的分組,有利有弊,利在可以培養(yǎng)學(xué)生的團(tuán)隊(duì)合作精神,集思廣益,大家齊心去完成一個(gè)有難度、有創(chuàng)新的課題,考核時(shí)采用答辯的機(jī)制,每人闡述自己所完成的部分,既公平又使每人都得到了鍛煉。不過(guò)此法的弊端也是存在的,那就是有的同學(xué)渾水摸魚(yú),什么都不做,最后直接把別人的成果拿為己用,這對(duì)于辛苦參與實(shí)踐的同學(xué)是有失公允的。
3 對(duì)老師提出新的要求
基于因材施教的原則,在實(shí)踐部分采取分級(jí)的方式是比較合理的一種方法,但同時(shí)也對(duì)老師提出了較高的要求。首先老師要對(duì)學(xué)生基本水平具有足夠的了解,指導(dǎo)學(xué)生進(jìn)行不同課題的選擇,以體現(xiàn)他們的實(shí)際水平并激發(fā)他們的潛能。但在當(dāng)前的教育模式下,要讓老師認(rèn)識(shí)每一個(gè)學(xué)生并掌握他們的學(xué)習(xí)情況基本上是不可能的事情,這就要依靠其他教師或輔導(dǎo)員的力量,爭(zhēng)取讓學(xué)生能選到合適自己的題目。
其次根據(jù)不同學(xué)生的水平設(shè)計(jì)不同的實(shí)踐題目,需要老師對(duì)編譯原理掌握的更為透徹,需要深入研究教學(xué)內(nèi)容,了解學(xué)科的前沿動(dòng)態(tài),將新思想、新事物加在編譯原理的實(shí)踐當(dāng)中,以提高學(xué)生的學(xué)習(xí)興趣并設(shè)計(jì)出更適合、更能有效體現(xiàn)學(xué)生水準(zhǔn)的題目。
4 結(jié)論
采用分級(jí)實(shí)踐教學(xué)法,既可以提高教師的業(yè)務(wù)水平,加強(qiáng)教師對(duì)學(xué)生的了解,促進(jìn)師生間的交流;也可以提高學(xué)生的學(xué)習(xí)興趣,通過(guò)完成不同的實(shí)踐課題培養(yǎng)了學(xué)生的成就感,也激發(fā)了學(xué)生的想象力和創(chuàng)造力。采用分級(jí)實(shí)踐法應(yīng)是教改的必然趨勢(shì),但具體實(shí)施起來(lái)還是有一定困難存在,里面存在的很多細(xì)節(jié)問(wèn)題需要大家一起去探討去解決,相信這項(xiàng)改革必能給學(xué)生帶來(lái)更大的發(fā)展空間。
參考文獻(xiàn):
[1] 張素琴,呂映芝,蔣維杜,等.編譯原理[M].2版.北京:清華大學(xué)出版社,2005.
[2] 李侃,陳英,等.面向編譯原理與設(shè)計(jì)課程的學(xué)生創(chuàng)新性思維階梯式培養(yǎng)模式[J].計(jì)算機(jī)教育,2013(17):11-14.
[3] 王宇英,李優(yōu).C語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)分級(jí)教學(xué)改革探索[J].新西部,2010(6):202.
[4] 王光偉.編譯原理實(shí)驗(yàn)課程教學(xué)設(shè)計(jì)的改進(jìn)[J].電腦知識(shí)與技術(shù),2012(8):5851-5852.endprint