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

        ?

        “編譯原理”課程的教學(xué)研究與探索

        2008-12-31 00:00:00李冬梅施?;?/span>
        計算機教育 2008年8期

        文章編號:1672-5913(2008)08-0103-03

        摘要:“編譯原理”課程由于其理論難度及目前本科學(xué)生中普遍存在的各種思想誤區(qū),教學(xué)效果不理想。本文針對這一現(xiàn)狀,從如何提高學(xué)生學(xué)習(xí)興趣,搞好課堂教學(xué),加強實踐環(huán)節(jié)等方面入手,提出了相應(yīng)的對策。

        關(guān)鍵詞:編譯原理;課堂教學(xué);實踐教學(xué)

        中圖分類號:G642

        文獻標(biāo)識碼:B

        1“編譯原理”課程教學(xué)現(xiàn)狀

        編譯原理作為計算機專業(yè)的一門核心課程,在教學(xué)中占據(jù)十分重要的地位。但由于其內(nèi)容具有較強的理論性和實踐性,學(xué)生在學(xué)習(xí)過程中感到內(nèi)容抽象、算法復(fù)雜、難于理解,因此“編譯原理”被普遍看作是計算機本科教學(xué)中最難講解、最難學(xué)習(xí)的課程??偨Y(jié)起來理由如下。

        (1) 本課程涉及不少理論知識,如形式語言和自動機理論、語法制導(dǎo)的理論等。這些理論的學(xué)習(xí)有一定的難度,特別是語法制導(dǎo)定義(或翻譯方案)的設(shè)計,因為它本質(zhì)上是一種事件驅(qū)動的程序設(shè)計,這對于三、四年級的本科生來說還是較難掌握的。

        (2) 本課程包含了很多算法,大的有LL(1)分析算法和各種LR(1)分析算法等,小的有DFA化簡算法、計算開始符號集合和后繼符號集合的算法、各種數(shù)據(jù)流方程的迭代求解算法。這些算法要比數(shù)據(jù)結(jié)構(gòu)中接觸的算法復(fù)雜得多,學(xué)生在學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)的時候,接觸過很多算法,對于不理解的算法可以跟蹤算法的執(zhí)行過程,而跟蹤編譯程序中的算法則要麻煩得多,想深刻理解算法的思想很困難。

        (3) 編譯程序規(guī)模大,不可能在一門課的時間內(nèi)把所有的細節(jié)都講清楚,這使學(xué)生對編譯程序各邏輯部分之間的接口和一些算法的實現(xiàn)是模糊的。

        針對這種情況,如何提高這門課程的教學(xué)效果,是一個值得探討的問題。筆者多年來一直從事“編譯原理”課程的教學(xué),對如何改進教學(xué)方法和提高教學(xué)效果做了一些研究和探索,并取得了良好的效果。

        2明確教學(xué)目標(biāo),提高學(xué)生學(xué)習(xí)興趣

        很多學(xué)生認為“編譯原理”只能應(yīng)用在寫程序語言的編譯器上,而他們以后可能不會在編譯器及其相關(guān)領(lǐng)域方面鉆研,所以學(xué)習(xí)興趣不高,其實這是一種誤解。編譯技術(shù)是計算機語言發(fā)展的支柱,也是計算機科學(xué)中發(fā)展最迅速、最成熟的一個分支。通過學(xué)習(xí)編譯程序的構(gòu)造原理和技術(shù),將有助于深刻理解和正確使用程序設(shè)計語言。編譯內(nèi)容涉及到計算機的組織結(jié)構(gòu)、指令系統(tǒng)以及操作系統(tǒng),掌握編譯技術(shù)有助于加深對整個計算機系統(tǒng)的理解。另外,由于編譯程序作為系統(tǒng)軟件在性能上具有嚴格的要求,這使得它所使用的算法經(jīng)典、高效,而這些算法、思想和實現(xiàn)技術(shù)也可廣泛地應(yīng)用于一般軟件的設(shè)計實現(xiàn)。如正規(guī)式和有窮自動機在文本編輯器中的廣泛應(yīng)用,有窮自動機在字符串查找中的運用,必經(jīng)節(jié)點算法在網(wǎng)絡(luò)中的運用,由文法來定義網(wǎng)絡(luò)協(xié)議等。在教學(xué)中,可以鼓勵學(xué)生嘗試將編譯程序中的各種算法和技術(shù)應(yīng)用到各個應(yīng)用領(lǐng)域,從而激發(fā)學(xué)生的創(chuàng)造性思維,培養(yǎng)學(xué)生的創(chuàng)新能力,為今后的學(xué)習(xí)打下堅實的基礎(chǔ)。

        3優(yōu)化教學(xué)內(nèi)容,搞好課堂教學(xué)

        由于這門課程理論性強,內(nèi)容豐富且抽象,具有嚴密的邏輯性,應(yīng)用其他課程知識比較多,要在有限課時內(nèi)很好地完成本課程的教學(xué)。教師首先必須吃透教學(xué)內(nèi)容、把握課堂教學(xué)環(huán)節(jié)。這就要求教師對教材非常熟悉,掌握編譯原理的主要內(nèi)容及基本框架,對教材及教學(xué)內(nèi)容作一定的優(yōu)化。

        3.1選取合適的教材

        某些“編譯原理”教材并不是完全面向?qū)W生的,可能是作為這門學(xué)科的大全來編寫的。例如由美國著名計算機科學(xué)家編著的“龍書”《Compilers Principles, Techniques and Tools》,中文譯名為《編譯原理》,由機械工業(yè)出版社出版,這本書是最經(jīng)典權(quán)威的編譯教材,應(yīng)該是教師教學(xué)的必備參考用書,但如果將其作為授課的教材,對大部分學(xué)生來說都不太適合,因為內(nèi)容過多,難度過大。

        筆者總結(jié)了多年的教學(xué)經(jīng)驗,編寫了一本《編譯原理》教材,已由人民郵電出版社出版,我們在教學(xué)中采用這本教材。結(jié)合教材的特點,我們在教學(xué)中力求做到以下幾點。

        (1) 考慮到學(xué)生對C語言較為熟悉,所講授的主要算法、例題和習(xí)題均以C語言為背景。

        (2) 把編譯原理和編譯技術(shù)兩方面有機地結(jié)合起來。將“PL/0語言編譯程序”模型的實現(xiàn)過程貫穿于各個章節(jié),這樣使學(xué)生在掌握相關(guān)的編譯原理之后,通過閱讀理解和擴充此編譯程序,加深對所學(xué)內(nèi)容的理解,使所學(xué)內(nèi)容融會貫通,能夠建立一個較為完整的編譯系統(tǒng)模型。

        (3) 對常用分析器的自動生成工具(LEX和YACC)的功能和使用方法做了詳細的介紹,并給出了使用LEX和YACC實現(xiàn)的PL/0語言編譯器的源程序,從而使學(xué)生真正掌握如何借助LEX和YACC實現(xiàn)一個編譯器。

        3.2抽象內(nèi)容形象化

        編譯系統(tǒng)中的一些概念很抽象,學(xué)生無法理解,就只會死記硬背,當(dāng)然更無興趣可言。在講解的過程中,可以選用學(xué)生最熟悉的一些實例,通過類比使抽象的概念更容易被理解。例如,從理論上來說,編譯過程一般包括詞法分析、語法分析、語義分析和中間代碼生成、代碼優(yōu)化、目標(biāo)代碼生成這五個階段。學(xué)生記住這五個階段并不難,但理解階段劃分的依據(jù)有一定的難度。編譯程序的功能是將用高級語言編寫的源程序翻譯成等價的用機器語言或匯編語言表示的目標(biāo)程序。既然編譯過程是一種語言的翻譯過程,那么它的工作過程就類似于外文的翻譯過程,不同之處僅在于由哪種語言翻譯成另外哪種語言,但其原理是類似的。兩者的翻譯過程對比如表1所示。

        例如,我們要將英文句子“I wish you success”翻譯成中文,首先進行詞法分析,根據(jù)英語的詞法規(guī)則,識別出四個英語單詞,并檢查是否有單詞的拼寫錯誤。其次是語法分析,根據(jù)英語的語法規(guī)則,對詞法分析后的單詞串進行分析、識別,并做出語法正確性檢查,看其是否能組成一個符合英語語法的句子。再次進行語義分析,即對語法正確的英文句子分析其含義,并用漢語表示出來。然后對譯文進行修飾,根據(jù)上下文的關(guān)系及漢語語法的相關(guān)規(guī)則進行綜合考慮,對初步翻譯后的句子進行必要的修飾。最后翻譯成中文,“祝你成功”。學(xué)生經(jīng)常做這種翻譯,對翻譯過程非常熟悉。將它與編譯過程進行類比,既加深了學(xué)生的印象,又有助于理解為什么將編譯過程劃分成這幾個階段。

        3.3運用實例教學(xué)

        以課堂討論的方式,結(jié)合某種高級語言(如C語言),從其難以掌握、容易出錯的語法難點入手,用編譯原理的理論加以分析。培養(yǎng)學(xué)生靈活運用所學(xué)理論知識分析問題、解決問題的能力,提高他們思維的活躍性。我們在課堂上和習(xí)題中,準(zhǔn)備了很多從實際程序的編譯和運行時碰到的問題中抽象出來的例子,供學(xué)生用所學(xué)的知識去分析、理解,并加以解決。采用這種實例教學(xué)方式,使學(xué)生明白通過“編譯原理”課程的學(xué)習(xí),可以深入理解高級語言的工作原理,做到知其然更知其所以然,從而能夠更準(zhǔn)確地運用各種高級程序設(shè)計語言。這樣,既能夠?qū)η捌谡n程起到復(fù)習(xí)鞏固的作用,又能讓學(xué)生切實體會到本課程的實際價值,從而有力地激發(fā)了學(xué)生學(xué)習(xí)編譯原理和技術(shù)的積極性。

        例如,在講解詞法分析器掃描源程序時,對源程序采取局部處理的觀點,并不會瞻前顧后。為了讓學(xué)生體會這一點,我們可以運用以下實例進行說明。

        一個C語言編譯器編譯下面的函數(shù)時,報告parse error before ‘else’,這是因為else的前面少了一個分號。

        long gcd(p,q)

        long p,q;

        {

        if (p%q == 0)

        /* then part */

        return q

        else

        /* else part */

        return gcd(q, p%q);

        }

        但是如果第一個注釋

        /* then part */

        誤寫成

        /* then part

        那么該編譯器發(fā)現(xiàn)不了遺漏分號的錯誤。這是為什么?

        因為此時編譯器認為

        /* then part

        return q

        else

        /* else part */

        是程序的注釋,因此它不可能再發(fā)現(xiàn)else 前面的語法錯誤。

        3.4靈活運用多種形象化的教學(xué)手段

        “編譯原理”課程具有很多概念和定理,再加上大量復(fù)雜的算法,抽象程度很高,因此要想獲得良好的教學(xué)效果,必須借助形象化教學(xué)手段,使抽象的理論具體化。為此我們編制了一些多媒體課件,把抽象概念和算法生動形象地演示出來。同時向?qū)W生推薦網(wǎng)上優(yōu)秀的“編譯原理”課程教學(xué)網(wǎng)站、電子書、算法等資源,拓寬學(xué)生視野。

        4加強實踐教學(xué)環(huán)節(jié),激發(fā)學(xué)生主體意識

        “編譯原理”是一門對實踐要求較高的課程。本課程的課程設(shè)計,要充分考慮編譯理論與實際應(yīng)用的結(jié)合,突出開創(chuàng)性和實用性。如:完整編譯器的分析設(shè)計,利用有窮自動機設(shè)計字符串查找程序,與軟件工程、數(shù)據(jù)庫的結(jié)合等。在這樣一些小型系統(tǒng)的開發(fā)中,可以引入軟件工程理論,注入結(jié)構(gòu)化程序設(shè)計思想,將整個系統(tǒng)模塊化,合理組織不同能力層次的學(xué)生分組開發(fā)各個功能模塊,讓所有學(xué)生共同參與,協(xié)作完成。鼓勵學(xué)生間相互探討,共同提高。對學(xué)生的設(shè)計,要特別要求嚴格控制系統(tǒng)開發(fā)各環(huán)節(jié)的實現(xiàn),以培養(yǎng)良好的嚴謹?shù)能浖_發(fā)風(fēng)格。這樣既使學(xué)生鞏固了所學(xué)的理論知識,并融會貫通,又培養(yǎng)了學(xué)生理論聯(lián)系實際和綜合運用各門課程理論的能力,為以后的實際工作打下堅實的基礎(chǔ)。

        參考文獻

        [1] 李冬梅,施海虎. 編譯原理[M]. 北京:人民郵電出版社,2006.

        [2] 陳意云,張昱,鄭啟龍. “編譯原理”的教學(xué)與實際相結(jié)合的探討[J]. 教育與現(xiàn)代化,2005,(12):32-36.

        [3] 張昱,陳意云,鄭啟龍. 編譯原理課程的教學(xué)方法和教材建設(shè)[J]. 中國大學(xué)教學(xué),2005,(7):61-62.

        [4] 何炎祥,伍春香. 現(xiàn)代教學(xué)理論指導(dǎo)下的“編譯原理”教學(xué)綜合改革[J]. 計算機教育,2005,(3):10-13.

        [5] 胡作進,胡林生. “編譯原理”課程教學(xué)改革芻議[J]. 安徽廣播電視大學(xué)學(xué)報,2006,(4):55-57.

        成人h动漫精品一区二区| 日产精品高潮一区二区三区5月 | 国产免费一区二区三区在线观看| 日韩精品永久免费播放平台| 永久免费看黄网站性色| 欧美xxxx做受欧美88| 老熟妻内射精品一区| 免青青草免费观看视频在线| av一区二区三区观看| 乱老年女人伦免费视频| 亚洲av无码一区二区三区系列| 亚洲AⅤ男人的天堂在线观看| 日本亚洲视频免费在线看| 无码av中文一区二区三区桃花岛| 内射少妇36p九色| 日韩av中出在线免费播放网站| 色婷婷av一区二区三区丝袜美腿 | 国产精品一区二区蜜臀av| 国产特级毛片aaaaaa高潮流水| 国产亚洲精品久久久久婷婷瑜伽| 久久中文字幕日韩无码视频| 永久免费看黄网站性色| 人妻精品久久久久中文字幕69| 无码专区久久综合久中文字幕| 在线观看av片永久免费| 国产黄色三级一区二区三区四区| 国产国产裸模裸模私拍视频| 国产成人精品日本亚洲18| 亚洲日本在线中文字幕| 国产三a级三级日产三级野外| 暖暖视频在线观看免费| 亚洲免费一区二区三区视频| 国产区一区二区三区性色 | 野花社区视频www官网| 国产超碰人人一区二区三区| 亚洲精品国产一区二区免费视频 | 波多野结衣中文字幕在线视频| 人妻免费黄色片手机版| www夜插内射视频网站| 长腿校花无力呻吟娇喘的视频| 亚洲一区丝袜美腿在线观看|