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

?

編譯原理GCC實(shí)例化教學(xué)研究

2011-12-31 00:00:00衷璐
計(jì)算機(jī)教育 2011年11期


  摘要:對(duì)現(xiàn)有編譯教學(xué)存在的問題進(jìn)行分析,提出新的編譯課程教學(xué)方案,引入真實(shí)的業(yè)界編譯器實(shí)例GCC,以引導(dǎo)式、實(shí)例化的模式開展教學(xué),最后,給出新教學(xué)模式的參考評(píng)價(jià)方法。
  關(guān)鍵詞:編譯技術(shù);GCC;引導(dǎo)式;實(shí)例化
  
  編譯技術(shù)是計(jì)算機(jī)專業(yè)一門重要的專業(yè)核心課程。該課程主要介紹程序設(shè)計(jì)語言編譯程序的基本原理、技術(shù)和實(shí)現(xiàn)方法,使學(xué)生更好地了解、掌握開發(fā)大型軟件系統(tǒng)和軟件工具的思想和方法,提高學(xué)生程序設(shè)計(jì)能力。但是,由于種種原因,不少大專院校削減課時(shí),只重理論知識(shí)的講解,使編譯課程的預(yù)期教學(xué)目的和效果大打折扣。當(dāng)前,編譯技術(shù)迅猛發(fā)展,調(diào)整編譯課程教學(xué)內(nèi)容和方法,以使其適應(yīng)時(shí)代需求已迫在眉睫。因此,以業(yè)界真實(shí)編譯器為主線索的引導(dǎo)式實(shí)例化教學(xué)模式研究的提出,無疑給本科編譯教學(xué)帶來新的機(jī)遇和挑戰(zhàn)。
  1本科編譯教學(xué)存在的問題
  首先,相對(duì)于許多本專業(yè)其他課程而言,本科編譯課程的教學(xué)內(nèi)容沒有做到適時(shí)同步跟進(jìn),教學(xué)內(nèi)容相對(duì)陳舊。以數(shù)據(jù)結(jié)構(gòu)課程為例,除傳統(tǒng)的C語言描述版本外,面向?qū)ο蟮腃++/JAVA語言版本已廣泛應(yīng)用。而編譯技術(shù)近年來的發(fā)展非常迅猛,例如并行編譯技術(shù)的研究、多核技術(shù)的推廣,等等,都沒能很好地體現(xiàn)到現(xiàn)行主流教材中。此外,編譯技術(shù)發(fā)展的主流是優(yōu)化技術(shù),而目前大學(xué)課程的講授內(nèi)容卻往往止步于優(yōu)化,只是有限地提及或根本不講,嚴(yán)重脫離學(xué)科發(fā)展的需要。第二,本科編譯教學(xué)難點(diǎn)較多。這主要體現(xiàn)在編譯技術(shù)所涉及知識(shí)內(nèi)容廣泛:從一般的編譯理論學(xué)習(xí)到種類繁多的優(yōu)化技術(shù),再到臨近硬件層的具體實(shí)現(xiàn),一個(gè)學(xué)期有限的課時(shí)囊括全部?jī)?nèi)容非常困難。另外,編譯課程的理論知識(shí)部分包含大量抽象的概念和種類繁多的分析算法,僅通過課堂講授的方式不易為學(xué)生所掌握。第三,該課程缺乏實(shí)用特征。很多學(xué)生在學(xué)習(xí)編譯課程時(shí)都會(huì)提出這樣的問題:學(xué)習(xí)編譯有什么用?任課教師對(duì)于該問題的回答往往不到位。學(xué)生學(xué)到的大部分內(nèi)容只是枯燥和抽象的理論知識(shí),這種學(xué)習(xí)方式很難體現(xiàn)編譯程序?qū)崿F(xiàn)過程中所隱含的技巧和魅力。第四,實(shí)驗(yàn)環(huán)節(jié)薄弱。目前絕大多數(shù)院校編譯課程沒有實(shí)驗(yàn)環(huán)節(jié),而這種設(shè)置對(duì)于工科性質(zhì)濃郁的編譯課程而言恰恰是非常不合理的。編譯系統(tǒng)是一個(gè)非常復(fù)雜的綜合系統(tǒng),學(xué)生只有通過不斷地參與和實(shí)踐才能更好地理解和掌握其中的概念和奧妙。
  2編譯課程引導(dǎo)式實(shí)例化方案的提出
  編譯課程的教學(xué)亟需實(shí)用性的教學(xué)設(shè)計(jì)方案。就目前教學(xué)實(shí)際來看,一蹴而就的方式是不理智的,任何事物的變革都需要一個(gè)漸進(jìn)的過程,因此,在現(xiàn)有教學(xué)方案的基礎(chǔ)之上,逐步引入并強(qiáng)化實(shí)例化教學(xué)才是明智之舉。本文提出針對(duì)本科編譯課程教學(xué)特點(diǎn)的引導(dǎo)式實(shí)例化教學(xué)方案,它基于實(shí)例化教學(xué)法的基礎(chǔ),同時(shí)加入引導(dǎo)式元素。本文所提出的引導(dǎo)式的方法基于實(shí)例化和探究式兩種方法。眾所周之,實(shí)例化教學(xué)法起源于哈佛大學(xué)的案例教學(xué)法,其含義是采用與傳統(tǒng)教學(xué)的“概念-理論-應(yīng)用”模式完全相反的教學(xué)模式,即“案例-理論-概念”的模式。這種教學(xué)模式從形象、生動(dòng)活潑的案例著手,自頂向下逐層深入透徹地展開案例相關(guān)的理論和概念的學(xué)習(xí)。此背景下的計(jì)算機(jī)類課程實(shí)例化教學(xué)法的研究早已開展[1]。而探究式教學(xué)則強(qiáng)調(diào)教師按照一定的教學(xué)方法和學(xué)生的認(rèn)知規(guī)律,教會(huì)學(xué)生怎樣去學(xué)習(xí),讓學(xué)生像科學(xué)家一樣,去探索、研究、發(fā)現(xiàn)和掌握知識(shí)[2]。我們所提出的引導(dǎo)式的方法正是應(yīng)用令學(xué)生感興趣的綜合實(shí)例去引導(dǎo)學(xué)生對(duì)已有知識(shí)和新知識(shí)領(lǐng)域的學(xué)習(xí)和探索,綜合提升學(xué)生的理論實(shí)踐綜合應(yīng)用能力。
  3GCC引導(dǎo)式實(shí)例化教學(xué)方案的設(shè)計(jì)
  3.1綜合實(shí)例背景
  我們選擇GCC編譯器作為編譯課程教學(xué)的全程線索式綜合實(shí)例。GCC編譯器是用于GNU/Linux的標(biāo)準(zhǔn)系統(tǒng)編譯器,對(duì)于許多其他的系統(tǒng)也是可選的編譯器之一,它具備工業(yè)實(shí)力,符合標(biāo)準(zhǔn),具有好的代碼實(shí)現(xiàn)[3],是國際上流行的開放源碼的編譯系統(tǒng)。以GCC為例進(jìn)行分析和實(shí)驗(yàn),不僅可以讓學(xué)生更深刻地理解編譯器整體框架和編譯的一般流程和主要活動(dòng),還能鍛煉學(xué)生獨(dú)立分析和改進(jìn)編譯系統(tǒng)軟件的水平,開拓學(xué)生獨(dú)立承擔(dān)科研任務(wù)的能力。GCC編譯系統(tǒng)具有與生俱來的科學(xué)性和實(shí)用性,非常符合實(shí)例化教學(xué)中實(shí)例設(shè)計(jì)的重要原則。
  1) 實(shí)例應(yīng)當(dāng)盡可能包含多的知識(shí)點(diǎn),給學(xué)生充分展示其綜合應(yīng)用:GCC是一個(gè)綜合的真實(shí)編譯器,它的設(shè)計(jì)與實(shí)現(xiàn)囊括編譯的各個(gè)階段和過程。
  2) 一個(gè)好的實(shí)例,不僅可以引導(dǎo)學(xué)生由表及里、由此及彼地進(jìn)行深入的思索,還應(yīng)當(dāng)將知識(shí)體系內(nèi)容各部分的聯(lián)系表露無遺:GCC各個(gè)模塊的設(shè)計(jì)充分體現(xiàn)了編譯過程各個(gè)環(huán)節(jié)的靈活應(yīng)用。
  3) 實(shí)例設(shè)計(jì)一般采用自頂向下的設(shè)計(jì)方法,實(shí)例規(guī)模由大到小,上下連貫統(tǒng)一,旨在給學(xué)生提供一個(gè)整體的觀念,以便于總體領(lǐng)會(huì)與把握:GCC不僅是一個(gè)大型的綜合編譯器,其整體規(guī)模大到可以覆蓋編譯器設(shè)計(jì)與實(shí)現(xiàn)的各個(gè)方面,而另一方面,GCC的各個(gè)子模塊又相對(duì)獨(dú)立,分別對(duì)應(yīng)不同的具體子階段,既能給學(xué)生提供整體概念,又能通過具體的實(shí)現(xiàn)為學(xué)生的領(lǐng)會(huì)和把握提供了橋梁。
  4) 最后,實(shí)例設(shè)計(jì)應(yīng)體現(xiàn)創(chuàng)造性,從而激發(fā)其自覺靈活應(yīng)用知識(shí)的能力:GCC是一個(gè)開放源碼的編譯器,任何人都可以為其添磚加瓦,這無疑為學(xué)生的靈活應(yīng)用提供了好的發(fā)展平臺(tái)。
  3.2實(shí)例結(jié)合點(diǎn)分析
  在課堂教學(xué)中堅(jiān)持采取討論式、啟發(fā)式教學(xué)方法,改變滿堂灌的教學(xué)方式,活躍課堂氣氛,激發(fā)學(xué)生的創(chuàng)新意識(shí),提高教學(xué)效果;通過設(shè)計(jì)綜合實(shí)驗(yàn),為學(xué)生提供綜合運(yùn)用知識(shí)、培養(yǎng)科研素質(zhì)的機(jī)會(huì),鍛煉學(xué)生的自主性;綜合實(shí)驗(yàn)的驗(yàn)收采取演示、講解和答辯相結(jié)合的方式,使學(xué)生的科研能力和人文素質(zhì)得到全方位的鍛煉。
  3.2.1從總體結(jié)構(gòu)的角度
  一般而言,編譯器由詞法分析器、語法分析器、語義分析和中間代碼產(chǎn)生器、優(yōu)化器和目標(biāo)代碼生成器幾個(gè)部分組成。將源程序送至詞法分析器,首先開始詞法和語法的分析,最后有代碼生成器產(chǎn)生目標(biāo)代碼[4],如圖1所示。
  而在GCC的具體實(shí)現(xiàn)中,雖然各個(gè)組件發(fā)生了一些變化,但仍遵循一般編譯器的基本工作流程。例如,解析器扮演了詞法分析器和語法分析器的角色;中間代碼產(chǎn)生部分則采用了自己的GIMPLE語言表示;為了更好地進(jìn)行優(yōu)化,在GCC中實(shí)現(xiàn)了Tree SSA的優(yōu)化,如圖2所示。
  為此,在案例設(shè)計(jì)上,建議采用類比的方式進(jìn)行案例的挖掘,以使學(xué)生在一般的編譯器結(jié)構(gòu)與工業(yè)實(shí)用編譯器的具體實(shí)現(xiàn)間建立聯(lián)系,從而打破抽象而被動(dòng)的傳統(tǒng)理論知識(shí)學(xué)習(xí)的局限。
  3.2.2從中間表示語言的角度
  在一般的編譯器中,中間表示常采用抽象語法樹AST、后綴式、四元式、三元式等表示方法。而在GCC中設(shè)計(jì)了自己獨(dú)特的中間表示(IR),Gimple IR。Gimplifier對(duì)GENERIC代碼進(jìn)行分析,之后的優(yōu)化工作作用于樹形表示,并且將其翻譯為下一級(jí)的中間表示IR,例如RTL,這個(gè)過程包括先深度優(yōu)先遍歷Gimple表示,之后生成RTL表示的一個(gè)線性表。GCC更低一級(jí)的中間表示是RTL IR,數(shù)據(jù)和過程的低級(jí)化可以更接近典型的硬件。
  3.3GCC引導(dǎo)式知識(shí)點(diǎn)映射
  目前編譯教材中所講授內(nèi)容主要涉及編譯的前端,包括詞法分析、語法分析、語義分析和中間代碼產(chǎn)生幾個(gè)環(huán)節(jié)。在設(shè)計(jì)GCC引導(dǎo)式知識(shí)點(diǎn)映射方案時(shí),對(duì)于前端部分,我們綜合考慮了GNU 編譯器集合內(nèi)幕專業(yè)文檔和當(dāng)前主流編譯教材的知識(shí)體系,給出了相應(yīng)的映射方案,如表1所示。
  
  4新教學(xué)方案的適用性分析
  本文提出的GCC引導(dǎo)式實(shí)例化教學(xué)方案是在現(xiàn)有傳統(tǒng)知識(shí)體系講授的同時(shí)融入實(shí)際編譯器GCC的具體實(shí)現(xiàn)環(huán)節(jié)引導(dǎo)。在知識(shí)體系上不僅與已有教材主流知識(shí)點(diǎn)緊密結(jié)合,而且根據(jù)編譯技術(shù)發(fā)展的特點(diǎn)進(jìn)行有效的補(bǔ)充,這種設(shè)計(jì)理念易于授課教師和學(xué)生接受。此外,GCC是一種非常成熟且有魅力的開源編譯系統(tǒng),是非常適合的綜合實(shí)例代表,受到了學(xué)生的歡迎。通過我們已有的一些實(shí)踐,學(xué)生在學(xué)習(xí)傳統(tǒng)編譯理論知識(shí)的同時(shí),應(yīng)用和掌握實(shí)際編譯器GCC的理論與實(shí)踐相結(jié)合的模式,鍛煉了實(shí)際動(dòng)手能力,理論結(jié)合實(shí)際的能力已逐步顯露出了其有效性。對(duì)于學(xué)生而言,在對(duì)開源編譯器GCC有一定程度把握的基礎(chǔ)上,還可以創(chuàng)造性地對(duì)GCC編譯器進(jìn)行改良和進(jìn)一步的優(yōu)化,它不僅激發(fā)了學(xué)生的探索興趣,還鍛煉了他們的創(chuàng)造力、動(dòng)手能力和綜合應(yīng)用能力。
  5GCC引導(dǎo)式實(shí)例化教學(xué)評(píng)價(jià)
  關(guān)于GCC引導(dǎo)式實(shí)例化教學(xué)的評(píng)價(jià),我們提出基于泰勒模式[5]的評(píng)價(jià)方案,即在相同的條件下分別考察。
  1) 引導(dǎo)式實(shí)例化方案是否比傳統(tǒng)方案實(shí)現(xiàn)了更多的目標(biāo);
  2) 引導(dǎo)式實(shí)例化方案是否比傳統(tǒng)方案更有效的實(shí)現(xiàn)了目標(biāo);
  3) 引導(dǎo)式實(shí)例化方案是否比傳統(tǒng)方案的目標(biāo)價(jià)值更好;
  4) 引導(dǎo)式實(shí)例化方案是否在總體效果上優(yōu)于傳統(tǒng)方案。
  
  此外,我們還會(huì)進(jìn)行教學(xué)過程統(tǒng)計(jì)數(shù)據(jù)的收集和分析工作,例如,開展開放式考核測(cè)試(如增加GCC知識(shí)的期末考試)、在教學(xué)過程中進(jìn)行階段性的問卷調(diào)查、在教學(xué)過程中設(shè)置相應(yīng)的GCC輔助任務(wù)并對(duì)學(xué)生完成這些任務(wù)的情況進(jìn)行分析等等來論證是否達(dá)到了預(yù)期的教學(xué)目標(biāo)設(shè)想。
  6結(jié)語
  融入了GCC引導(dǎo)式的教學(xué)方案必然給傳統(tǒng)的本科編譯教學(xué)帶來新的生機(jī),當(dāng)然,GCC是非常龐大的編譯器系統(tǒng),限于篇幅的原因,本文提及的內(nèi)容僅是眾多研究案例中的一部分。對(duì)于與學(xué)生互動(dòng)環(huán)節(jié)的設(shè)計(jì),我們的建議是讓學(xué)生更自主、更充分地融入到GCC的編譯世界中去,在探索中學(xué)習(xí),在學(xué)習(xí)中探索。除了傳統(tǒng)的課堂教學(xué),我們還建議開展GCC興趣小組,以進(jìn)行更多的GCC優(yōu)化等相關(guān)研究,這也是非常有意義的一個(gè)嘗試。
  
  參考文獻(xiàn):
  [1] 錢雪忠. 實(shí)例化教學(xué)法在計(jì)算機(jī)類課程中的應(yīng)用[J]. 中國電

南充市| 阳泉市| 文山县| 南开区| 伊吾县| 确山县| 永清县| 黔江区| 忻州市| 莲花县| 防城港市| 赤峰市| 东方市| 正安县| 花莲县| 台东县| 丰镇市| 调兵山市| 茌平县| 鹰潭市| 南乐县| 邵阳县| 襄樊市| 闽清县| 新绛县| 甘洛县| 中宁县| 重庆市| 鱼台县| 辽中县| 额尔古纳市| 洪泽县| 枣强县| 隆回县| 乌拉特中旗| 威宁| 益阳市| 凯里市| 洛隆县| 彝良县| 巍山|