国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

淺談普通本科院校計算機(jī)專業(yè)《編譯原理》課程教學(xué)

2016-03-09 00:37:06江赟
電腦與電信 2016年7期
關(guān)鍵詞:編譯原理代碼生成普通本科

江赟

(重慶工商大學(xué)計算機(jī)科學(xué)與信息工程學(xué)院,重慶 400067)

淺談普通本科院校計算機(jī)專業(yè)《編譯原理》課程教學(xué)

江赟

(重慶工商大學(xué)計算機(jī)科學(xué)與信息工程學(xué)院,重慶 400067)

《編譯原理》課程是計算機(jī)專業(yè)的一門經(jīng)典核心專業(yè)課程,課程內(nèi)容豐富而抽象,教與學(xué)的難度都比較大。本文從教學(xué)目標(biāo)、教學(xué)內(nèi)容及教學(xué)方法三個方面對普通本科院校計算機(jī)專業(yè)的《編譯原理》課程教學(xué)進(jìn)行探討,并提出一些見解。

編譯原理;教學(xué)內(nèi)容;教學(xué)方法

1 引言

計算機(jī)學(xué)科是一門同時具備技術(shù)性、工程性和應(yīng)用性的學(xué)科,其學(xué)科體系是有基礎(chǔ)理論支撐的。近年來,隨著信息技術(shù)的迅猛發(fā)展及其應(yīng)用領(lǐng)域的不斷深化,計算機(jī)知識正在成為各專業(yè)的基本教育內(nèi)容,幾乎所有專業(yè)的大學(xué)畢業(yè)生都要求掌握基本的計算機(jī)操作技能,非計算機(jī)專業(yè)學(xué)生需要通過計算機(jī)等級考試,而電子信息、通信工程、信息管理、電子商務(wù)等與信息技術(shù)密切相關(guān)的專業(yè)在課程設(shè)置上更是與計算機(jī)專業(yè)大量重疊。在這種背景下,計算機(jī)專業(yè)學(xué)生的專業(yè)優(yōu)勢應(yīng)該體現(xiàn)在:通過系統(tǒng)地學(xué)習(xí)與訓(xùn)練,熟練掌握專業(yè)的原理性知識以及基本的應(yīng)用技能,能夠做到“知其然”,并且“知其所以然”。要達(dá)到這種專業(yè)優(yōu)勢,學(xué)生必然少不了要接受專業(yè)基礎(chǔ)課程的熏陶,而編譯原理就是這樣一門介紹原理性知識的專業(yè)基礎(chǔ)課程。

《編譯原理》課程是計算機(jī)專業(yè)中的一門經(jīng)典的核心專業(yè)課程,該課程具有理論與實踐相結(jié)合的鮮明特點,具體而形象地說明了經(jīng)典理論與先進(jìn)技術(shù)之間的聯(lián)系。通過系統(tǒng)學(xué)習(xí)編譯理論,學(xué)生可以認(rèn)識到科學(xué)理論的基礎(chǔ)作用,提高學(xué)習(xí)理論的興趣,形成理論素養(yǎng),另外,通過課程的實驗部分,分析改進(jìn)編譯程序或工具,學(xué)生可以提高運(yùn)用理論知識解決實際問題的能力。通過《編譯原理》課程的理論學(xué)習(xí)和實驗,學(xué)生可以體會到理論學(xué)習(xí)的意義和動手實踐的樂趣。

然而,在普通本科院校的計算機(jī)專業(yè)中,由于《編譯原理》課程的教學(xué)內(nèi)容涉及到理論的抽象性,并且課程內(nèi)容覆蓋廣泛,與高級語言、離散數(shù)學(xué)、數(shù)據(jù)結(jié)構(gòu)、算法設(shè)計與實現(xiàn)等很多課程的知識相關(guān)聯(lián),這使得學(xué)生對課程內(nèi)容的理解有較大的困難。此外,學(xué)生畢業(yè)后很少有人直接參與編譯系統(tǒng)的設(shè)計與實現(xiàn),他們認(rèn)為本課程對其畢業(yè)后的職業(yè)發(fā)展沒有作用,于是學(xué)生的學(xué)習(xí)積極性較差。因此,筆者從教學(xué)目標(biāo)、教學(xué)內(nèi)容及教學(xué)方法三個方面對普通本科院校計算機(jī)專業(yè)的《編譯原理》課程教學(xué)進(jìn)行探討,并提出一些見解。

2 教學(xué)目標(biāo)

按照教育部高等學(xué)校計算機(jī)科學(xué)與技術(shù)教學(xué)指導(dǎo)委員會的發(fā)展戰(zhàn)略研究報告,計算機(jī)專業(yè)的本科人才應(yīng)該被分為科學(xué)型、工程型和應(yīng)用型,而且絕大多數(shù)應(yīng)該是工程型和應(yīng)用型的。而從普通高等院校計算機(jī)專業(yè)本科畢業(yè)生的就業(yè)情況來看,絕大多數(shù)畢業(yè)生都不會專門從事計算機(jī)理論的研究工作,也很少有人研究和開發(fā)編譯系統(tǒng)。但《編譯原理》課程中涉及到的一些經(jīng)典理論和方法,特別適合于傳授學(xué)生計算機(jī)科學(xué)研究的方法,并且訓(xùn)練他們“抽象及自動化”的計算思維。在當(dāng)今計算機(jī)技術(shù)飛速發(fā)展的時代背景下,計算思維可以讓學(xué)生在理論的指導(dǎo)下尋找解決問題的方法,在未來更好地適應(yīng)新技術(shù),朝不同的方向發(fā)展。因此,編譯原理課程不應(yīng)被片面理解為編譯程序的介紹性課程,而應(yīng)該提升到培養(yǎng)專業(yè)素質(zhì)、訓(xùn)練思維的層面,特別是培養(yǎng)學(xué)生從實際問題中抽象出科學(xué)問題并運(yùn)用科學(xué)的思維方式進(jìn)行問題求解的

思想??紤]到普通本科院校計算機(jī)專業(yè)大多數(shù)學(xué)生的需求,我們對學(xué)生提出以下要求:

(1)較為全面地了解課程,熟悉編譯程序的構(gòu)造過程,理解編譯程序構(gòu)造過程中涉及的基本算法和基本技術(shù)。

(2)掌握形式語言與自動機(jī)的基本理論和基本概念。

(3)能夠使用有窮自動機(jī)的理論和方法,解決常見離散時間問題。

(4)從系統(tǒng)級別上提升對程序、算法的認(rèn)識,提高學(xué)習(xí)、理解和實用編程語言的能力,提高編寫高質(zhì)量代碼的能力。

3 教學(xué)內(nèi)容

國外從上世紀(jì)60年代開始開設(shè)《編譯原理》課程,而國內(nèi)則從上世紀(jì)80年代開始。經(jīng)過幾十年的發(fā)展,《編譯原理》課程的教學(xué)內(nèi)容越來越多,課程涉及的知識越來越多。但是以目前教學(xué)的基本學(xué)時數(shù)來看,《編譯原理》課程的課時數(shù)不足,要講授教材中的所有內(nèi)容基本不可能,這就需要教師在有限的課時內(nèi)充分合理地安排教學(xué)內(nèi)容。針對編譯過程的各個邏輯階段,筆者根據(jù)普通本科院校計算機(jī)專業(yè)學(xué)生的理解情況對相關(guān)的教學(xué)內(nèi)容進(jìn)行適當(dāng)取舍。

(1)詞法分析:有窮自動機(jī)是一個經(jīng)常使用的概念和工具,可以詳細(xì)討論不確定的有窮自動機(jī)及其確定化,確定的有窮自動機(jī)及其最小化,有窮自動機(jī)與正則式的關(guān)系,并介紹詞法分析器的生成器。

(2)語法分析:作為必備的基礎(chǔ)知識,需要對上下文無關(guān)文法做出介紹。在介紹語法分析方法時,側(cè)重點應(yīng)放在自上而下分析方法,其中應(yīng)該先介紹比較直觀、便于學(xué)生接受的LL(1)文法和預(yù)測分析方法,然后舉一個較為簡單的LL(1)文法的預(yù)測分析程序作為例子幫助學(xué)生理解。而對于自下而上分析方法,建議只介紹其基本概念、使用LR分析表進(jìn)行分析及分析器的自動生成器等知識點。

(3)語義分析:對靜態(tài)語義檢查進(jìn)行概述,重點應(yīng)放在類型檢查上。

(4)中間代碼生成:主要介紹中間代碼的各種形式;對于賦值語句和控制流語句,主要介紹翻譯的語義動作;對于類型和變量聲明語句,主要介紹如何組織符號表。

(5)符號表及存儲管理:這部分內(nèi)容在數(shù)據(jù)結(jié)構(gòu)等前序課程中已經(jīng)介紹過,沒有必要在這里重復(fù)介紹。如果課時數(shù)允許的話,可以考慮從編寫程序和程序排錯的角度介紹三種全局存儲分配策略,以及如何實現(xiàn)各種參數(shù)傳遞方式。

(6)代碼優(yōu)化:通過實例介紹編譯器可以完成的各種優(yōu)化,各種優(yōu)化算法不做強(qiáng)制要求,學(xué)有余力的學(xué)生可以在課后自學(xué)。

(7)代碼生成:選擇一種簡單的代碼生成算法進(jìn)行介紹,讓學(xué)生對代碼生成有所了解即可。

4 教學(xué)方法

《編譯原理》課程是計算機(jī)科學(xué)與技術(shù)專業(yè)眾多專業(yè)課程中理論與實踐相結(jié)合的典范,在教學(xué)過程中也要從課堂教學(xué)和實驗教學(xué)兩方面著手。

4.1 理論教學(xué)

在課堂教學(xué)過程中,學(xué)生要理解編譯原理中抽象的基本概念,還要掌握解決問題的思路和方法,教學(xué)難度比較大。針對編譯系統(tǒng)中的一些抽象概念可以采取圖示、類比等方法使抽象的內(nèi)容直觀化形象化,以保證課堂教學(xué)質(zhì)量。

(1)圖示法。在文法與語言這一章里,學(xué)生往往會對句型、句子、語言、短語、直接短語、句柄等抽象概念覺得無法理解或一知半解,只能死記硬背,于是在求解短語時容易出錯。求解短語的問題其實可以通過畫語法樹的方法來解決,這種方法簡單直觀,使用的是學(xué)生在數(shù)據(jù)結(jié)構(gòu)課程中學(xué)習(xí)過的樹與森林的相關(guān)知識,可以遍歷所有的情況不會有遺漏。在講到詞法分析一章時,會涉及到有窮狀態(tài)自動機(jī)這個在解決離散事件問題中非常重要的思維模型。在解決離散事件問題時,可以通過有窮狀態(tài)自動機(jī)來反映問題的抽象分析,還可以運(yùn)用狀態(tài)轉(zhuǎn)換圖使得問題的解決變得更加形象直觀。

(2)類比法。在講解一些抽象概念的時候,可以選取學(xué)生熟悉的實例,通過類比的方法幫助學(xué)生進(jìn)行理解。比如,在課程的開始部分介紹編譯過程時,一般都會講到編譯的過程分為詞法分析、語法分析、語義分析及中間代碼生成、代碼優(yōu)化、目標(biāo)代碼生成等五個階段。學(xué)生要記住這五個階段比較容易,但是要理解分階段的依據(jù)則有些困難,這就需要回到編譯的定義。編譯是一種翻譯,將高級程序語言翻譯成低級程序語言。與之類似的,外文翻譯也是一種翻譯,外文翻譯的過程可以分為五個步驟,包括識別句子中的單詞、分析句子的語法結(jié)構(gòu)、初步理解句子的含義并形成翻譯初稿、對譯文修飾、寫出最后的譯文。學(xué)生在學(xué)習(xí)英語的時候經(jīng)常遇到這種翻譯,他們很熟悉外文翻譯的過程。將外文翻譯與編譯進(jìn)行類比,可以幫助學(xué)生更深層次的理解編譯,并幫助他們理解編譯分為五個階段的原因。

除了上述教學(xué)方法外,在課堂教學(xué)中還應(yīng)當(dāng)安排一定數(shù)量的習(xí)題課討論課,以教學(xué)補(bǔ)償?shù)氖侄螌W(xué)生的知識薄弱點進(jìn)行針對性的訓(xùn)練。比如在文法和語言一章中有很多形式化的概念,文法、語言、推導(dǎo)、歸約、句子、句型、短語、直接短語、句柄、喬姆斯基文法分類等等。學(xué)生大多數(shù)是第一次接觸到這些概念,理解起來有一定難度,往往會因此失去學(xué)習(xí)積極性。對此可以選擇一些與教學(xué)內(nèi)容相關(guān)的習(xí)題,集中進(jìn)行分析和討論,便于學(xué)生理解和掌握,并通過練習(xí)來鞏固和

訓(xùn)練學(xué)生對知識的運(yùn)用能力。而對于有窮自動機(jī)的理論和應(yīng)用,則可以選擇一些從實際問題中抽象出來的問題進(jìn)行分析討論,鼓勵學(xué)生用所學(xué)的理論知識去分析和解決現(xiàn)實生活中遇到的問題,激發(fā)學(xué)生學(xué)習(xí)探索的積極性和創(chuàng)造性。另外,對于課程中出現(xiàn)的一些概念和算法,教師可以組織學(xué)生課后搜集相關(guān)資料,課堂上集體討論并指導(dǎo)學(xué)生閱讀和分析,從而達(dá)到拓寬學(xué)生知識面、提高學(xué)生理解及應(yīng)用能力的目的。

4.2 實驗教學(xué)

《編譯原理》課程兼具很強(qiáng)的理論性和實踐性,該課程的實驗教學(xué)有助于加深學(xué)生對理論知識的理解,有助于培養(yǎng)學(xué)生的計算思維,并且對提高學(xué)生的算法設(shè)計分析和程序設(shè)計實現(xiàn)等能力具有重要的作用?!毒幾g原理》的實驗課課時少,對學(xué)生的基礎(chǔ)知識及動手能力要求高,這些原因造成實驗效果不好。對此,從以下幾個方面考慮進(jìn)行調(diào)整:

(1)實驗內(nèi)容:合理安排實驗內(nèi)容,將實驗分成詞法分析、語法分析、語義分析和目標(biāo)代碼生成四個模塊進(jìn)行,最后進(jìn)行一次綜合實驗并演示。

(2)實驗組織:將學(xué)生分為四人一組,每人負(fù)責(zé)四個模塊中的一個,四個模塊依次進(jìn)行,最后小組進(jìn)行一次聯(lián)調(diào)并演示,這樣既保證了每個學(xué)生實驗的獨立性,又培養(yǎng)了小組成員之間的協(xié)同合作精神。

(3)實驗的考察驗收:以往考察實驗結(jié)果都是以實驗報告的形式,學(xué)生寫起來往往流于形式,因而達(dá)不到考察的效果,可以考慮實驗報告以科研論文的形式給出,學(xué)生從而可以在寫論文的過程中結(jié)合做實驗的體會更深層次地理解《編譯原理》課程中的理論知識。

5 結(jié)束語

《編譯原理》課程是計算機(jī)專業(yè)的一門重要課程,要把這門課上好,達(dá)到培養(yǎng)學(xué)生計算思維的目的,需要教師不斷與時俱進(jìn),適時調(diào)整教學(xué)內(nèi)容和方法。本文提出了一些教學(xué)方法,在教學(xué)過程中取得了一定的效果,未來要想獲得好的教學(xué)效果,還需要對課程的教學(xué)方法和內(nèi)容改革付諸努力。

[1]張素琴,呂映芝,蔣維杜,戴桂蘭.編譯原理[M].北京:清華大學(xué)出版社,1998.

[2]Alfred V.Aho.Compilers:Principles,Techniques,and Tools(英文版第2版)[M].北京:機(jī)械工業(yè)出版社,2011.

[3]陳火旺,劉春林.程序設(shè)計語言編譯原理(第3版)[M].北京:國防科技大學(xué)出版社,2014.

[4]張世輝.編譯原理習(xí)題詳解與考研輔導(dǎo)[M].北京:國防科技大學(xué)出版社,2008.

[5]陳意云.編譯原理和技術(shù)(第2版)[M].合肥:中國科學(xué)技術(shù)大學(xué)出版社,1997.

[6]蔣宗禮,姜守旭.編譯原理[M].北京:高等教育出版社,2010.

[7]蔣宗禮.形式語言與有窮自動機(jī)理論(第3版)[M].北京:清華大學(xué)出版社,2013.

Discussion on the Teaching of Compiler Principle for Computer Major in Universities and Colleges

Jiang Yun
(Chongqing Technology and Business University,Chongqing 400067)

Compiler principle is a classic and core course in computer major.The content of the course is rich and abstract;as a result both the teaching and learning of the course are quite difficult.In this paper,the teaching of compiler principle for computer major in universities and colleges is discussed from three aspects,which are teaching goal,teaching content and teaching methods.

compiler principle;teaching content;teaching method

TP314-4

A

1008-6609(2016)07-0025-03

江赟,女,湖北黃岡人,講師,研究方向:生物計算及智能算法。

本課題受重慶市教育科學(xué)“十二五”規(guī)劃2015年度高等教育質(zhì)量提升專項課題,項目編號:2015-GX-023;重慶工商大學(xué)校級教改項目,項目編號:2015111。

猜你喜歡
編譯原理代碼生成普通本科
普通本科院校:于“普通”之處見精彩
Lustre語言可信代碼生成器研究進(jìn)展
SSE教學(xué)模式在普通本科-兒科專業(yè)后期臨床教學(xué)中的應(yīng)用
軟件學(xué)院編譯原理實踐課程的教學(xué)探索
基于MOOC的編譯原理分階段課程教學(xué)研究
國家創(chuàng)新體系下地方普通本科高校應(yīng)用型轉(zhuǎn)型的國際化思考
營造興趣啟蒙式學(xué)習(xí)氛圍的編譯原理首課設(shè)計
代碼生成技術(shù)在軟件開發(fā)中的應(yīng)用
電子世界(2016年15期)2016-08-29 02:14:28
普通本科高校應(yīng)用型深化改革服務(wù)福建自貿(mào)區(qū)建設(shè)探析
“編譯原理”課程教學(xué)改革初探
荥阳市| 昭觉县| 共和县| 承德县| 潞城市| 龙里县| 绍兴县| 盐源县| 北京市| 安溪县| 潮州市| 金昌市| 特克斯县| 宁海县| 古蔺县| 田东县| 湘潭县| 荥阳市| 遂平县| 广汉市| 夏津县| 遂昌县| 林口县| 黄骅市| 贵南县| 英山县| 双鸭山市| 乌恰县| 桐柏县| 林周县| 扬州市| 宁强县| 漠河县| 湖口县| 兴山县| 中西区| 龙泉市| 德格县| 大化| 康马县| 城口县|