亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        “編譯技術(shù)”:以編譯過程帶動課程知識點(diǎn)

        2009-12-30 03:41:40楊海燕史曉華
        計(jì)算機(jī)教育 2009年21期
        關(guān)鍵詞:編譯原理課程定位

        張 莉 楊海燕 史曉華

        摘要:“編譯技術(shù)”是一門公認(rèn)的難教難學(xué)的課程,包含了看似晦澀的理論部分和覆蓋面廣的實(shí)踐部分。如何根據(jù)本學(xué)校的培養(yǎng)定位組織教學(xué)內(nèi)容,如何實(shí)施教學(xué)過程,是教師們普遍關(guān)注的主要問題。本文結(jié)合北京航空航天大學(xué)這類工科院校強(qiáng)調(diào)工程技術(shù)的特點(diǎn),探討了“編譯技術(shù)”課程的組織方式,提出了以編譯過程為主導(dǎo)帶動課程知識點(diǎn)的課程安排模式,并針對不同類型高校給出了教學(xué)安排建議。

        關(guān)鍵詞:編譯技術(shù);編譯原理;課程定位;課程內(nèi)容組織

        中圖分類號:G642 文獻(xiàn)標(biāo)識碼:B

        1引言

        “編譯原理/技術(shù)”是計(jì)算機(jī)專業(yè)的一門經(jīng)典課程。由于該課程包含了詞法分析、語法分析方法中與形式語言及自動機(jī)相關(guān)的讓人頗感晦澀的原理,以及在代碼生成和代碼優(yōu)化部分與計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)有關(guān)的龐雜繁瑣的實(shí)現(xiàn)技術(shù),讓許多非計(jì)算機(jī)相關(guān)專業(yè)的學(xué)生望而卻步,幾乎成為計(jì)算機(jī)專業(yè)“科班出身”的一種標(biāo)志。與此同時(shí),難教難學(xué)也是這門課的一個特點(diǎn)。如何讓那些看似晦澀的原理和龐雜的實(shí)現(xiàn)技術(shù)對學(xué)生來說更容易理解和掌握呢?筆者認(rèn)為,教學(xué)內(nèi)容的組織和課程安排模式是非常重要的因素。同樣的知識點(diǎn),因不同的組織方式而變得邏輯性更強(qiáng),更容易理解和掌握。本文結(jié)合北京航空航天大學(xué)編譯課程的建設(shè),探討以編譯過程為主導(dǎo)帶動課程知識點(diǎn)的課程組織模式。

        2課程定位

        編譯課程在不同學(xué)校教學(xué)計(jì)劃中的教學(xué)定位可能不同。北京航空航天大學(xué)(簡稱北航)是一所具有航空航天特色和工程技術(shù)優(yōu)勢的多科性、開放式、研究型大學(xué)。北航計(jì)算機(jī)學(xué)院將編譯課程設(shè)置為一門核心專業(yè)必修課,并命名為“編譯技術(shù)”(而非“編譯原理”),意在秉承工程院校強(qiáng)調(diào)工程技術(shù)的特點(diǎn),強(qiáng)調(diào)編譯系統(tǒng)的構(gòu)造及其相關(guān)技術(shù)。本課程安排在大三上學(xué)期,先修課要求:一門高級程序設(shè)計(jì)語言、“數(shù)據(jù)結(jié)構(gòu)和算法”以及“計(jì)算機(jī)原理和匯編語言”等課程。同時(shí)本課程安排在“操作系統(tǒng)”之前,是學(xué)生接觸到的第一個講述完整的軟件系統(tǒng)的課程。本課程理論和實(shí)踐并重,要求學(xué)生掌握編譯的基本理論、常用的編譯技術(shù),了解編譯過程及編譯系統(tǒng)的構(gòu)造(結(jié)構(gòu)和機(jī)理);能運(yùn)用所學(xué)技術(shù)解決實(shí)際問題,能獨(dú)立編寫一個小型編譯系統(tǒng)。

        曾經(jīng)一度,有人認(rèn)為學(xué)生畢業(yè)后很少做編譯器了,因此不必再開設(shè)編譯課了。Alfred V. Aho在其著名的《編譯原理》(龍書)中提到:編譯器設(shè)計(jì)的原理和技術(shù)還可以用于編譯器設(shè)計(jì)之外的眾多領(lǐng)域,這些原理和技術(shù)通常會在一個計(jì)算機(jī)科學(xué)家的職業(yè)生涯中多次被用到。因此,編譯課程在本科教學(xué)體系中應(yīng)該承載超越“編譯系統(tǒng)構(gòu)造”的使命。筆者認(rèn)為,“編譯技術(shù)”課程作為一個載體,在培養(yǎng)學(xué)生專業(yè)素質(zhì)方面起到了非常重要的作用,主要體現(xiàn)在:(1)讓學(xué)生理解高級程序設(shè)計(jì)語言的工作原理和相關(guān)概念;(2)通過編譯程序的構(gòu)造和相關(guān)算法,讓學(xué)生掌握軟件領(lǐng)域重要的程序(模型)等價(jià)轉(zhuǎn)換技術(shù)、程序(模型)優(yōu)化技術(shù);(3)通過編譯系統(tǒng)的介紹,讓學(xué)生了解軟件系統(tǒng)的概念和軟件系統(tǒng)設(shè)計(jì)的方法;(4)通過學(xué)習(xí)詞法分析程序、語法分析程序的自動生成技術(shù),讓學(xué)生對程序的自動生成技術(shù)有所了解。

        基于這樣的理解,北航編譯課程的培養(yǎng)定位為:基礎(chǔ)和前沿相結(jié)合、理論和實(shí)踐相結(jié)合。要求學(xué)生既要掌握編譯的經(jīng)典基礎(chǔ)理論和算法,對編譯系統(tǒng)有完整的理解,又要求學(xué)生具備簡單編譯系統(tǒng)的構(gòu)造能力。

        同時(shí)通過“編譯課程設(shè)計(jì)”實(shí)踐課程,讓學(xué)生:(1)掌握編譯程序構(gòu)造的主要技術(shù)和算法,理解編譯過程;(2)體驗(yàn)一個比較完整的軟件系統(tǒng)的設(shè)計(jì)、開發(fā)、測試過程,建立系統(tǒng)設(shè)計(jì)觀念;(3)結(jié)合軟件工程課程,完成規(guī)范化文檔;(4)在本科培養(yǎng)體系中,進(jìn)一步提高數(shù)據(jù)結(jié)構(gòu)的綜合應(yīng)用能力和程序設(shè)計(jì)能力。

        3課程的組織

        基于以上的定位,筆者認(rèn)為“編譯技術(shù)”課程的組織應(yīng)強(qiáng)調(diào)過程完整性、系統(tǒng)性和實(shí)踐性。

        (1) 過程完整性:編譯過程是一個翻譯的過程,編譯技術(shù)的實(shí)質(zhì)是介紹程序/模型從一種語言表達(dá)形式到另一種語言表達(dá)形式的等價(jià)轉(zhuǎn)化方法,所以在課程內(nèi)容的安排中應(yīng)該保證編譯過程的完整性,至少是一個完整的翻譯過程。

        (2) 系統(tǒng)性:編譯器是一個完整的軟件系統(tǒng),也是學(xué)生接觸到的第一個系統(tǒng)(之前學(xué)生接觸到的主要是針對語言、數(shù)據(jù)結(jié)構(gòu)和算法的程序設(shè)計(jì)練習(xí))。應(yīng)該讓學(xué)生理解一個完整的系統(tǒng)是如何構(gòu)成的,各部分應(yīng)如何組織和協(xié)調(diào)。

        (3) 實(shí)踐性:理論應(yīng)該和實(shí)踐相結(jié)合,無論是研究性大學(xué)、非研究性大學(xué),都應(yīng)該注重實(shí)踐和學(xué)生動手能力的培養(yǎng),尤其是對計(jì)算機(jī)專業(yè)的學(xué)生,實(shí)際動手能力關(guān)乎謀生大計(jì),更不能小視。北航計(jì)算機(jī)學(xué)院為了突出實(shí)踐環(huán)節(jié)的重要性,將實(shí)踐環(huán)節(jié)部分設(shè)置為一門課程,單獨(dú)計(jì)算學(xué)分。我校該課程的組織如下:

        (1) 教學(xué)內(nèi)容組織(理論課部分)

        編譯課程中晦澀的原理和龐雜的算法總有些讓人望而生畏,它們都是必需的嗎?它們之間是什么關(guān)系?學(xué)生理解嗎?教師清楚嗎?因此,讓復(fù)雜的內(nèi)容簡化,讓課程更簡單易懂,成為本課程改革的一個重要指導(dǎo)思想。在十多年的教學(xué)過程中,筆者發(fā)現(xiàn)編譯過程是一根主線,所有的知識點(diǎn)都是為其服務(wù)的,為此提出了以編譯過程帶動課程知識點(diǎn)的課程組織方式。

        通常,編譯過程可劃分為5個基本階段:詞法分析、語法分析、語義分析及生成中間代碼、代碼優(yōu)化、生成目標(biāo)程序,如圖1所示。經(jīng)過詞法分析、語法分析、語義分析及代碼生成這3個階段,就能完成將程序從一種形式轉(zhuǎn)化為另一種形式,這就體現(xiàn)了一個完整的翻譯過程。因此,最基本的要求是保證這3個階段的內(nèi)容完整。

        要保證這3個階段的內(nèi)容完整,并不意味著要介紹這3個階段的所有內(nèi)容。其實(shí),僅僅完成一個翻譯過程所涉及的內(nèi)容并不多、也不難。詞法分析部分只需要讓學(xué)生理解詞法分析的功能,能基于狀態(tài)圖(狀態(tài)圖以一種直觀的形式描述單詞符號的拼寫規(guī)則)構(gòu)造出相應(yīng)的詞法分析程序。而在語法分析部分,可以只介紹最簡單的且便于手工編程實(shí)現(xiàn)的遞歸子程序法。在確定了每種語法成分后,結(jié)合該語法成分的語義,可以及時(shí)完成語言的翻譯,這就是語法制導(dǎo)翻譯方法。每種語法成分加上其語義的屬性,便構(gòu)成了屬性翻譯文法。按照語法制導(dǎo)翻譯方法,對各種語法成分進(jìn)行語義分析并生成另一種形式的代碼,這就完成了程序從一種語言形式到另一種語言形式的翻譯過程。這個過程主要涉及到詞法分析、語法分析和語法制導(dǎo)翻譯技術(shù)、語義分析和代碼生成、源程序的中間形式等內(nèi)容。當(dāng)然,作為基礎(chǔ),學(xué)生應(yīng)該首先了解文法和語言的概念和表示等基礎(chǔ)知識,如圖1中A框所示。

        要真正實(shí)現(xiàn)上述語言的編譯過程,還需要了解符號表管理技術(shù)、錯誤處理技術(shù),考慮到程序運(yùn)行時(shí)需要解決的問題,還需要了解運(yùn)行時(shí)的存儲組織及管理方式。這部分內(nèi)容構(gòu)成了基本翻譯過程之上第二個層次的知識點(diǎn),如圖1中B框所示。

        要生成高質(zhì)量的目標(biāo)代碼,還應(yīng)該了解代碼優(yōu)化和目標(biāo)代碼生成有關(guān)的技術(shù)和方法。這可歸于第三個層次,如圖1中C框所示。

        學(xué)生掌握了上述知識點(diǎn),便為實(shí)現(xiàn)一個帶有代碼生成和優(yōu)化的編譯器打下了基礎(chǔ),可以不用了解在教學(xué)過程中被認(rèn)為難講難學(xué)的詞法分析和語法分析的其他理論部分。這些讓人覺得晦澀的部分,究竟有什么作用呢?它們與編譯過程的前述知識點(diǎn)有什么關(guān)系呢?經(jīng)過多年的教學(xué),筆者發(fā)現(xiàn),學(xué)生覺得這部分知識難學(xué),并不是真正學(xué)不懂,他們更多的是不理解為什么要學(xué),不能很好地建立這之間的邏輯關(guān)系。首先,我們來看看占據(jù)詞法分析2/3的內(nèi)容,是介紹詞法分析器的自動生成技術(shù),而自動機(jī)理論是其自動生成的理論基礎(chǔ)。再看看語法分析部分,是學(xué)生認(rèn)為最難學(xué)的部分,往往也是各個學(xué)??疾閷W(xué)生的重點(diǎn)內(nèi)容??墒?大部分學(xué)生并不完全明白為什么要學(xué)習(xí)這些內(nèi)容,沒有認(rèn)識到(或者教師沒有講解)每種方法的局限性,沒有理解各種方法從簡到難,同時(shí)其處理語言的范圍也從小到大(見圖2),沒有理解這里還有相當(dāng)?shù)钠诮榻B語法分析器的自動生成技術(shù)。正是由于介紹了語法分析器的自動生成技術(shù),導(dǎo)致這部分內(nèi)容涉及了相當(dāng)多的理論原理和算法。對此,筆者建議不同學(xué)??梢愿鶕?jù)教學(xué)要求適當(dāng)選擇這部分內(nèi)容開展教學(xué)(見圖1(C))。

        上述知識點(diǎn)的組織方式可以用圖1來表示。圍繞編譯過程,將編譯技術(shù)的知識點(diǎn)分為三個層次,黃色A框表示實(shí)現(xiàn)一個語言翻譯過程所需的最基本的知識點(diǎn),建議各個學(xué)校都講。進(jìn)一步如果需要翻譯生成的程序能在虛擬機(jī)上運(yùn)行,翻譯過程能夠進(jìn)行簡單的語義檢查和錯誤處理,還需要增加符號表管理、錯誤處理和運(yùn)行時(shí)存儲組織管理等方面的知識,這些內(nèi)容不屬于編譯過程的某個具體階段,如綠色B框所示。其他有關(guān)詞法分析和語法分析自動生成的原理、代碼優(yōu)化和代碼生成的知識點(diǎn),可以作為第三個層次的內(nèi)容,如紫色C框所示。不同的高校可以根據(jù)培養(yǎng)定位選擇相應(yīng)內(nèi)容講授。重要的是,所有內(nèi)容應(yīng)該圍繞一個完整的編譯過程,至少是一個完整的翻譯過程來進(jìn)行,而不應(yīng)該僅限于詞法分析和語法分析方法的介紹。

        (2) 實(shí)踐環(huán)節(jié)要求

        筆者認(rèn)為,在“編譯技術(shù)”的實(shí)踐環(huán)節(jié),應(yīng)讓學(xué)生自己動手實(shí)現(xiàn)一個完整的編譯程序,從源代碼翻譯為目標(biāo)代碼,并且要讓目標(biāo)代碼能夠運(yùn)行(至少能運(yùn)行在虛擬機(jī)上)。這樣不僅讓學(xué)生體會完整的編譯過程,同時(shí)也讓學(xué)生實(shí)現(xiàn)一個完整的編譯系統(tǒng)。為此,北航計(jì)算機(jī)學(xué)院的“編譯技術(shù)”實(shí)踐環(huán)節(jié)設(shè)計(jì)了三個層次的題目,分別對應(yīng)了不同的難度和分?jǐn)?shù),力求讓不同程度的學(xué)生都實(shí)現(xiàn)一個完整的編譯器,各難度的題目要求如表1所示。

        從表1中可以看出,難度等級低的題目在文法要求上不高,與教材[3]中的PL/0文法類似,學(xué)生只要讀懂了教材中經(jīng)典的示例編譯器,就應(yīng)該能夠?qū)崿F(xiàn)。由于有示例編譯器為參考,降低了難度,但同時(shí)也為考查學(xué)生是否獨(dú)立完成增加了難度。為此,筆者設(shè)計(jì)了一套質(zhì)量管理體系,從題目設(shè)置、題目分配和考核方案等方面綜合考慮,加強(qiáng)過程管理,保證作業(yè)質(zhì)量。比如,每個難度的文法都有若干個,每個文法定義的語言在形式上都有差別,學(xué)生必須按照自己所獲得的文法編寫編譯器,才能通過測試程序的測試;借助于教學(xué)平臺,每個難度的若干個文法隨機(jī)分配給學(xué)生等,參見精品課程網(wǎng)站http://compile.buaa.edu.cn。

        4總結(jié)

        為了讓“編譯技術(shù)”課的內(nèi)容更好地被學(xué)生掌握,為了更好地實(shí)現(xiàn)編譯課程的教學(xué)使命,本文提出了以編譯過程為主導(dǎo)帶動課程知識點(diǎn)的課程組織模式,從另一個角度理清了那些看似晦澀的理論部分和編譯過程的關(guān)系,而以編譯過程為主導(dǎo)劃分的三個層次知識點(diǎn),也有利于各種不同定位的高校安排教學(xué)內(nèi)容。筆者認(rèn)為,無論哪類學(xué)校,只要是工科院校,都應(yīng)該強(qiáng)調(diào)實(shí)踐,都應(yīng)該保證編譯過程的完整性,讓學(xué)生用最簡單的方式至少完成一個完整的翻譯過程。在此基礎(chǔ)上,根據(jù)各個學(xué)校的定位適當(dāng)增加詞法分析和語法分析的自動生成技術(shù),以及編譯優(yōu)化技術(shù)。

        筆者在教學(xué)實(shí)踐中發(fā)現(xiàn),學(xué)生在自己編程實(shí)現(xiàn)了一個小型編譯程序之后,通常會感慨理論課上覺得已經(jīng)學(xué)會的東西,在實(shí)踐之后才發(fā)現(xiàn)真正理解和掌握了。北航計(jì)算機(jī)學(xué)院的“編譯技術(shù)”實(shí)踐部分,由于有寄存器分配、生成匯編碼等要求,需要學(xué)生運(yùn)用C語言、數(shù)據(jù)結(jié)構(gòu)、計(jì)算機(jī)原理和匯編等知識,被學(xué)生譽(yù)為“綜合性的大作業(yè)”。盡管難度大,但是學(xué)生覺得收獲頗豐,這正是筆者不斷思考、嘗試新的教學(xué)方法的無窮動力。

        參考文獻(xiàn):

        [1]Alfred V. Aho, Monica S. Lam,Ravi Sethi,et al. 編譯原理[M]. 趙建華,鄭滔,戴新宇,譯. 北京:機(jī)械工業(yè)出版社,2009.

        [2]Andrew W. Appel, Maia Ginsburg. Modern Compiler Implementation in C[M]. Cambridge: Cambridge University Press, 1998.

        [3] 高仲儀,金茂忠. 編譯原理及編譯程序構(gòu)造[M]. 北京:北京航空航天大學(xué)出版社,2001.

        [4] 楊海燕,史曉華,張莉.“編譯技術(shù)”實(shí)踐環(huán)節(jié)的質(zhì)量管理體系及實(shí)踐[J]. 計(jì)算機(jī)教育,2009(17):61-63.

        猜你喜歡
        編譯原理課程定位
        《編譯原理》教學(xué)方法初探
        基于專業(yè)規(guī)范的編譯原理混合式教學(xué)改革
        軟件學(xué)院編譯原理實(shí)踐課程的教學(xué)探索
        基于MOOC的編譯原理分階段課程教學(xué)研究
        跨境電商實(shí)務(wù)課程教學(xué)過程中存在的問題及建議
        營造興趣啟蒙式學(xué)習(xí)氛圍的編譯原理首課設(shè)計(jì)
        高校雙語教學(xué)的課程定位與設(shè)置實(shí)施
        光影中的英語教學(xué)探究
        考試周刊(2016年64期)2016-09-22 17:02:41
        高職船舶專業(yè)英語教學(xué)模式改革與研究
        考試周刊(2016年50期)2016-07-12 13:15:34
        “編譯原理”課程教學(xué)改革初探
        少妇人妻200篇白洁| 99久久99久久久精品蜜桃| 呦系列视频一区二区三区| 久久中文字幕无码专区| 狼友AV在线| av网站一区二区三区| 中文字幕久久波多野结衣av不卡| 中文字幕v亚洲日本| 亚洲小说图区综合在线| 在线亚洲国产一区二区三区| 日本一区二区三区视频网站| 亚洲色在线v中文字幕| 无码av在线a∨天堂毛片| 国产精品亚洲av无人区一区蜜桃| 西川结衣中文字幕在线| 中年熟妇的大黑p| 亚洲 无码 制服 丝袜 自拍 | 久久精品亚洲一区二区三区画质| 国产区精品一区二区不卡中文| 欧美日韩精品一区二区在线观看| 91久久国产情侣真实对白| 亚洲女同免费在线观看| 亚洲av无码专区在线观看成人| 久久精品国产99国产精2020丨| 最新国产精品精品视频 | 无码人妻品一区二区三区精99| 成人国产精品免费网站| 亚洲毛片免费观看视频| 成人aaa片一区国产精品| 伊人一道本| 日本一区二区偷拍视频| 国内精品久久久久影院优| 亚洲精品久久久久中文字幕二区| 杨幂国产精品一区二区| 国产精品国产av一区二区三区| 国产女人高潮叫床视频| 久久精品国产免费观看99| 日韩激情视频一区在线观看| 中文字幕色av一区二区三区| 免费一区二区三区久久| 冲田杏梨av天堂一区二区三区|