資源描述:
《工科生《編譯原理》課程教學(xué)的探析和實(shí)踐》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫。
1、工科生《編譯原理》課程教學(xué)的探析和實(shí)踐 摘要:針對工科生的特點(diǎn)及其培養(yǎng)目標(biāo),將《編譯原理》課程的教學(xué)目標(biāo)定位于“能靈活應(yīng)用形式語言和自動(dòng)機(jī)的基礎(chǔ)理論來解決計(jì)算機(jī)工程領(lǐng)域中的相關(guān)問題”,并分析和總結(jié)了相應(yīng)的教學(xué)手段和實(shí)驗(yàn)教學(xué)方案及其實(shí)踐效果。 關(guān)鍵詞:編譯原理;教學(xué)目標(biāo);教學(xué)方法;實(shí)驗(yàn)教學(xué) 中圖分類號:G642.0文獻(xiàn)標(biāo)志碼:A文章編號:1674-9324(2013)05-0119-02一、引言6 《編譯原理》是大學(xué)計(jì)算機(jī)專業(yè)本科教育的一門核心課程,它涉及形式語言、程序設(shè)計(jì)語言、算法和數(shù)據(jù)結(jié)構(gòu)、體系結(jié)構(gòu)和軟
2、件工程等內(nèi)容。學(xué)生通過該課程的學(xué)習(xí),除了應(yīng)該掌握編譯程序的工作原理和有關(guān)算法外,還可以增進(jìn)計(jì)算機(jī)科學(xué)基礎(chǔ)理論知識,進(jìn)一步加深對數(shù)據(jù)結(jié)構(gòu)和算法等課程的綜合理解和靈活應(yīng)用,以及提高軟件開發(fā)的能力。但是,由于受到教學(xué)時(shí)數(shù)的限制,要全方位地在這些方面去培養(yǎng)學(xué)生,是相當(dāng)困難的,而是要根據(jù)教學(xué)對象以及對其專業(yè)能力的培養(yǎng)目標(biāo),來確定課程的教學(xué)內(nèi)容和相應(yīng)的教學(xué)手段。我們認(rèn)為:對于理科學(xué)生,可偏重于理論研究能力的培養(yǎng),使學(xué)生掌握形式語言與自動(dòng)機(jī)的基本理論和常見算法,為從事計(jì)算機(jī)理論研究打下堅(jiān)實(shí)的基礎(chǔ);而對于工科學(xué)生,可偏重于軟件開
3、發(fā)能力的培養(yǎng),提高學(xué)生對數(shù)據(jù)結(jié)構(gòu)和算法知識的綜合應(yīng)用能力,以及程序編制能力。本文針對工科生的特點(diǎn)及其培養(yǎng)目標(biāo),對《編譯原理》課程的教學(xué)目標(biāo)定位和教學(xué)方法進(jìn)行一些分析和實(shí)踐總結(jié)?! 《?、教學(xué)目標(biāo) 《編譯原理》課程的教學(xué)目標(biāo)一般是使學(xué)生掌握形式語言和自動(dòng)機(jī)的基本理論,以及編譯程序有關(guān)的算法和開發(fā)方法[1]??紤]到對工科學(xué)生的基本要求是能應(yīng)用基本理論解決工程實(shí)際問題,我們要求學(xué)生在能正確理解形式語言和自動(dòng)機(jī)的基礎(chǔ)理論基礎(chǔ)上,不僅能掌握其在程序設(shè)計(jì)語言翻譯中的應(yīng)用方法,而且能靈活應(yīng)用于解決計(jì)算機(jī)工程領(lǐng)域中其他有關(guān)問題,
4、例如:命令行處理器、用戶界面等。我們向?qū)W生強(qiáng)調(diào),通過學(xué)習(xí)編譯原理這門課程,掌握編譯程序的基本原理和有關(guān)算法只是一個(gè)方面,另外一個(gè)很重要的方面是培養(yǎng)應(yīng)用基本理論來解決實(shí)際問題的能力,加強(qiáng)數(shù)據(jù)結(jié)構(gòu)及其算法的綜合應(yīng)用能力,以及提高編制大程序的能力。在教學(xué)內(nèi)容安排上,我們把重點(diǎn)放在詞法分析、語法分析、語法制導(dǎo)翻譯、符號表和中間代碼生成上,而對代碼優(yōu)化、目標(biāo)代碼生成、寄存器分配等內(nèi)容只作概要性介紹?! ∪⒔虒W(xué)方法 ?。ㄒ唬┗橄鬄榫唧w 《編譯原理》課程的內(nèi)容非常抽象,大多數(shù)學(xué)生在學(xué)習(xí)過程中,會對其抽象的術(shù)語和符號、以及
5、枯燥的形式化推導(dǎo)過程感到困惑,并漸漸失去學(xué)習(xí)的興趣和熱情。如果能從具體的例子出發(fā),再抽象出基本概念,就能使學(xué)生對抽象的概念有更深刻的理解。 例如,“LR(0)分析”是《編譯原理》課程中非常精彩的一節(jié)內(nèi)容,但由于涉及“活前綴”、“LR(0)項(xiàng)目”6等許多抽象的術(shù)語,學(xué)生往往難以理解,特別對“構(gòu)造識別活前綴的有限自動(dòng)機(jī)”的思想內(nèi)涵的理解難以透徹。我們在講解時(shí),不是直接給出這些術(shù)語的定義,而是從一個(gè)LR分析的實(shí)例出發(fā),讓學(xué)生觀察LR分析過程中分析棧內(nèi)容的變化及其特征,引導(dǎo)學(xué)生發(fā)現(xiàn)“分析棧中的符號串有三種格局:不含有句
6、柄的任何符號;含有句柄的部分符號;正好含有句柄的全部符號。”這時(shí),可向?qū)W生引入“活前綴”和“LR(0)項(xiàng)目”等術(shù)語的含義:“活前綴”就是LR分析過程中分析棧中形成的一個(gè)符號串,而“LR(0)項(xiàng)目”就是刻畫這個(gè)符號串的格局。最后給出“活前綴”和“LR(0)項(xiàng)目”的形式化定義。這種講法,不僅可以使學(xué)生對這些抽象概念有具體的感性認(rèn)識,從而更容易地去理解相應(yīng)的形式化定義,而且可以培養(yǎng)學(xué)生逐步適應(yīng)形式化描述。接著在講解“構(gòu)造識別活前綴的有限自動(dòng)機(jī)”時(shí),先讓學(xué)生回答“使用LR方法,用給定的一個(gè)文法去分析一個(gè)符號串時(shí),會有哪些
7、可能的LR(0)項(xiàng)目出現(xiàn),并且這些LR(0)項(xiàng)目是如何遷移的?”,進(jìn)一步啟發(fā)學(xué)生:“一個(gè)文法的任何一個(gè)句型,它的句柄只可能是這個(gè)文法的某個(gè)產(chǎn)生式的右部?!薄_@樣,學(xué)生就能較好地理解如何從一個(gè)文法求出它的所有LR(0)項(xiàng)目及其遷移關(guān)系,進(jìn)而也能較好地掌握構(gòu)造識別活前綴的有限自動(dòng)機(jī)的方法?! 。ǘ╅_發(fā)和使用多媒體教學(xué)課件,采取直觀形象的教學(xué)方式 對《編譯原理》課程中的一些抽象內(nèi)容,除了采用“化抽象為具體”的方法6外,我們還開發(fā)了一組多媒體教學(xué)課件,用于動(dòng)態(tài)演示一些較為復(fù)雜和難以理解的編譯過程。例如,在用屬性文法描
8、述一個(gè)語法制導(dǎo)翻譯過程的教學(xué)中,學(xué)生很難從一個(gè)給定的屬性文法想象出一個(gè)具體的翻譯過程。要讓他們用一個(gè)屬性文法來定義一個(gè)語法制導(dǎo)的翻譯過程,那就更難了。所以,我們針對教材[2]中給出的每個(gè)程序結(jié)構(gòu)的語法制導(dǎo)翻譯過程的屬性文法,分別結(jié)合一個(gè)具體的例子制作了多媒體課件,用于動(dòng)態(tài)演示在語法制導(dǎo)翻譯的每一步過程中,是如何使用與產(chǎn)生式相關(guān)聯(lián)的屬性計(jì)算規(guī)則來進(jìn)行翻譯的。圖1(a)是“控