999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

編譯原理語言認(rèn)知實(shí)驗(yàn)設(shè)計(jì)與實(shí)踐

2019-08-24 08:58:00計(jì)衛(wèi)星王貴珍
計(jì)算機(jī)教育 2019年8期
關(guān)鍵詞:語言實(shí)驗(yàn)課程

計(jì)衛(wèi)星,王貴珍,李 侃

(北京理工大學(xué) 計(jì)算機(jī)學(xué)院,北京 100081)

0 引 言

計(jì)算機(jī)高級(jí)程序設(shè)計(jì)語言自20世紀(jì)50年代出現(xiàn)以來,至今已經(jīng)演化出成百上千種語言,這些語言面向不同的應(yīng)用領(lǐng)域被不同的群體使用。少數(shù)語言自誕生以來一直保持旺盛的生命力,在計(jì)算機(jī)發(fā)展歷史上發(fā)揮了重要作用;部分語言只在某個(gè)社區(qū)內(nèi)被廣泛使用,具有明顯的專業(yè)領(lǐng)域特點(diǎn);還有一些新興的語言,一直在研究人員和相關(guān)社區(qū)的努力下不斷發(fā)展壯大,正在逐步完善并得到大家的認(rèn)可。TIOBE[1]排名顯示,目前最流行的前10種程序設(shè)計(jì)語言分別是Java、C、C++、Python、C#、Visual Basic .NET、PHP、JavaScript、SQL和R。在這些語言當(dāng)中,C語言屬于傳統(tǒng)的面向過程語言,C++、Java和C#是目前主流的面向?qū)ο蟪绦蛟O(shè)計(jì)語言,Visual Basic在.NET平臺(tái)上得以持續(xù)發(fā)展,PHP、Python和JavaScript是腳本語言,SQL是聲明式語言,R則是面向數(shù)據(jù)分析的專用語言。

各個(gè)學(xué)校依據(jù)各自的定位和培養(yǎng)目標(biāo),在計(jì)算機(jī)類相關(guān)本科專業(yè)培養(yǎng)方案中,通常會(huì)設(shè)置1~2門程序設(shè)計(jì)相關(guān)的課程。目前各個(gè)院校采用C語言的較多,非信息類逐步采用Python作為其首選程序設(shè)計(jì)語言,信息類學(xué)生在學(xué)期間也有選修C++、Java和C#課程的機(jī)會(huì)。盡管如此,有限的學(xué)時(shí)仍然無法讓學(xué)生學(xué)習(xí)、領(lǐng)略各種不同程序設(shè)計(jì)語言的特點(diǎn),因而造成學(xué)生只會(huì)使用1~2種程序設(shè)計(jì)語言,教和學(xué)兩方面更多關(guān)注編程語言使用,而對(duì)高級(jí)編程語言自身的設(shè)計(jì)、改進(jìn)以及語言的實(shí)現(xiàn)認(rèn)識(shí)和思考不足,最終導(dǎo)致相關(guān)研究人才的缺乏。因此,如何在有限的學(xué)時(shí)內(nèi)彌補(bǔ)這個(gè)不足,讓學(xué)生盡可能多地接觸多種程序設(shè)計(jì)語言,是一個(gè)值得探討的問題。

各個(gè)學(xué)校在不斷加強(qiáng)實(shí)踐教學(xué)體系建設(shè)的同時(shí)[2],也逐步探索與語言設(shè)計(jì)和實(shí)現(xiàn)相關(guān)的內(nèi)容。文獻(xiàn)[3]中針對(duì)編譯原理課程理論完整性不足、課程定位模糊、與其他課程內(nèi)容重疊等問題,提出建設(shè)形式語言與編譯課程。文獻(xiàn)[4]認(rèn)為面向?qū)ο缶幊陶Z言和技術(shù)日益流行,對(duì)編譯原理課程建設(shè)和教學(xué)改革實(shí)踐提出新的挑戰(zhàn),因此提出基于面向?qū)ο蠹夹g(shù)的編譯原理課程建設(shè)。

1 語言認(rèn)知實(shí)驗(yàn)設(shè)計(jì)

語言認(rèn)知實(shí)驗(yàn)的目的是通過一個(gè)課程實(shí)驗(yàn)讓學(xué)生了解程序設(shè)計(jì)語言的多樣性,具體要求為使用多種指定的語言實(shí)現(xiàn)同一功能,如使用C語言、Java、Python、Haskell和匯編語言實(shí)現(xiàn)快速排序算法,并對(duì)用不同語言實(shí)現(xiàn)的程序進(jìn)行比較和分析,主要包括語言學(xué)習(xí)難度、代碼規(guī)模、運(yùn)行效率等。

該實(shí)驗(yàn)的首要目的是讓學(xué)生了解語言的多樣性,語言實(shí)現(xiàn)方式的不同對(duì)程序編寫以及程序運(yùn)行效率帶來的影響,因此,選擇什么樣的語言和實(shí)現(xiàn)什么樣的功能是非常關(guān)鍵的。考慮到語言的發(fā)展歷史和現(xiàn)狀以及語言的類型,所選語言應(yīng)能夠覆蓋經(jīng)典的面向過程語言、面向?qū)ο蟪绦蛟O(shè)計(jì)語言、腳本語言(動(dòng)態(tài)語言)、函數(shù)式編程語言、命令式編程語言等。從語言的實(shí)現(xiàn)角度考慮,則希望覆蓋編譯執(zhí)行和解釋執(zhí)行兩種方式。

為了方便對(duì)不同的語言進(jìn)行對(duì)比,應(yīng)選擇難度和規(guī)模適中的算法讓學(xué)生使用不同的語言實(shí)現(xiàn)。算法難度和規(guī)模過大時(shí),一方面學(xué)生難以完成,另一方面學(xué)生關(guān)注的焦點(diǎn)容易發(fā)生偏移,無法達(dá)到實(shí)驗(yàn)預(yù)期目標(biāo)。當(dāng)難度和規(guī)模適中時(shí),學(xué)生會(huì)有更多的時(shí)間和精力進(jìn)行語言之間的比較,因此,一般應(yīng)該選擇已經(jīng)學(xué)習(xí)過的常見算法來實(shí)現(xiàn),如矩陣乘法、各種排序算法等。

在對(duì)比階段,主要關(guān)注代碼規(guī)模和程序運(yùn)行效率的對(duì)比。代碼規(guī)模以代碼行為單位進(jìn)行統(tǒng)計(jì)分析,包括輸入輸出和具體計(jì)算的代碼;而運(yùn)行效率則只關(guān)注計(jì)算部分的運(yùn)行時(shí)間,忽略輸入和輸出部分。考慮到輸入較小時(shí),部分算法的運(yùn)行時(shí)間變化較大,應(yīng)考慮規(guī)模適中的輸入數(shù)據(jù),并多次運(yùn)行程序和采集運(yùn)行時(shí)間,取平均值作為最終的性能數(shù)據(jù)進(jìn)行對(duì)比分析。學(xué)生根據(jù)對(duì)比結(jié)果,撰寫實(shí)驗(yàn)報(bào)告,提交相關(guān)資料,其中包括對(duì)比分析的算法選擇、對(duì)各個(gè)語言的認(rèn)識(shí)、實(shí)現(xiàn)方法、運(yùn)行結(jié)果、語言學(xué)習(xí)難度比較、程序規(guī)模比較、程序運(yùn)行時(shí)間比較等。

實(shí)驗(yàn)評(píng)定階段,在尊重學(xué)生分析成果的基礎(chǔ)上進(jìn)行適當(dāng)引導(dǎo),觸發(fā)學(xué)生更深層次的思考,如為什么不同語言對(duì)同一算法的描述會(huì)造成程序規(guī)模的不同、腳本語言和C語言程序相比性能相差較大的原因是什么等。

2 語言認(rèn)知實(shí)驗(yàn)教學(xué)實(shí)踐

根據(jù)編譯原理與設(shè)計(jì)課程的教學(xué)計(jì)劃,語言認(rèn)知實(shí)驗(yàn)安排在第一章引言之后進(jìn)行。在引言部分主要介紹程序設(shè)計(jì)語言從機(jī)器語言到高級(jí)程序設(shè)計(jì)語言的發(fā)展歷史,重點(diǎn)解釋編譯程序的定義及其分類,特別強(qiáng)調(diào)編譯執(zhí)行和解釋執(zhí)行兩種不同的執(zhí)行方式、編譯程序的典型框架結(jié)構(gòu)以及從輸入高級(jí)語言程序開始到目標(biāo)代碼翻譯的工作流程和中間表示,最后以代表性編譯器為例進(jìn)行剖析,說明編譯器的構(gòu)造方法,這一部分的教學(xué)安排也是國內(nèi)眾多高校所采用的方案。這一部分的教學(xué)內(nèi)容存在多個(gè)與語言相關(guān)的知識(shí)點(diǎn),主要包括:①語言的發(fā)展歷史以及編譯器產(chǎn)生的背景;②編譯程序的基本定義及其輸入和輸出;③編譯執(zhí)行和解釋執(zhí)行。

將語言認(rèn)知實(shí)驗(yàn)安排在引言部分非常有利于學(xué)生對(duì)相關(guān)概念的認(rèn)識(shí)和深入理解。表1給出了從2014年到2018年,筆者在實(shí)踐過程中所選用的語言和要求學(xué)生實(shí)現(xiàn)的功能。對(duì)比可以發(fā)現(xiàn),在這個(gè)過程中主要的改進(jìn)在于將小眾的Ruby語言改為Python,并在2018年添加匯編語言,這主要是由于網(wǎng)絡(luò)安全、大數(shù)據(jù)、人工智能等學(xué)科專業(yè)的飛速發(fā)展,Python語言熱度不斷上升,學(xué)習(xí)的需求日益增大。添加匯編語言的目的是為了讓學(xué)生更好地了解編譯器的輸出,在第一章手動(dòng)完成從高級(jí)程序設(shè)計(jì)語言到匯編語言的翻譯,并與后續(xù)實(shí)驗(yàn)生成的匯編語言進(jìn)行對(duì)比,另外,也可以幫助學(xué)生提前預(yù)習(xí)匯編程序設(shè)計(jì)的相關(guān)內(nèi)容。

表1 2014—2018年教學(xué)實(shí)踐設(shè)置

在實(shí)驗(yàn)完成后,要求學(xué)生提交相關(guān)源碼以及實(shí)驗(yàn)報(bào)告。實(shí)驗(yàn)報(bào)告中從3個(gè)方面對(duì)多個(gè)不同的語言進(jìn)行對(duì)比分析:①代碼規(guī)模:以代碼行對(duì)比實(shí)現(xiàn)同一功能的不同語言程序的規(guī)模大小;②運(yùn)行效率:在輸入相同時(shí),對(duì)比分析不同程序?qū)崿F(xiàn)同一功能的運(yùn)行時(shí)間;③語言易用性:從學(xué)習(xí)曲線、編程效率等方面對(duì)不同的語言進(jìn)行對(duì)比,給出自己的結(jié)論。

3 教學(xué)效果

為了更好地了解語言認(rèn)知實(shí)驗(yàn)的教學(xué)效果,2018年教學(xué)考核完成之后,課程組設(shè)計(jì)了調(diào)查問卷并對(duì)收回的問卷進(jìn)行統(tǒng)計(jì)分析。經(jīng)統(tǒng)計(jì),語言認(rèn)知實(shí)驗(yàn)?zāi)軌蚣由顚W(xué)生對(duì)語言和編譯器的認(rèn)識(shí),并對(duì)后續(xù)的學(xué)習(xí)和實(shí)踐產(chǎn)生深遠(yuǎn)的影響。

(1)認(rèn)識(shí)到語言的多樣性。如圖1所示,在語言認(rèn)知實(shí)驗(yàn)之前,大多數(shù)學(xué)生熟悉的是C/C++,接近20%的學(xué)生熟悉Python語言,而大約10%的學(xué)生會(huì)使用Java語言;在語言認(rèn)知實(shí)驗(yàn)之后,這一狀況發(fā)生了明顯變化,熟悉并喜歡Python的學(xué)生接近35%,對(duì)Java比較認(rèn)同的學(xué)生比例上升到了20%,同時(shí)Haskell從原來的0%變?yōu)榻咏?%。多個(gè)語言的學(xué)習(xí)和接觸讓學(xué)生有了更多的選擇機(jī)會(huì),通過語言之間的比較分析,學(xué)生找到了更適合自己的語言。

圖1 語言多樣性認(rèn)識(shí)對(duì)比

(2)認(rèn)識(shí)到語言的差異性。語言認(rèn)知實(shí)驗(yàn)的主要目標(biāo)之一是讓學(xué)生認(rèn)識(shí)到語言之間的差異性。從程序的執(zhí)行方式、編程效率、程序規(guī)模、學(xué)習(xí)曲線等方面進(jìn)行統(tǒng)計(jì),結(jié)果如圖2所示。從圖2的統(tǒng)計(jì)結(jié)果可以看出,80%左右的學(xué)生認(rèn)識(shí)到不同語言實(shí)現(xiàn)同一個(gè)算法的效率是不同的,對(duì)應(yīng)的代碼規(guī)模也不相同。此外,50%左右的學(xué)生認(rèn)識(shí)到語言執(zhí)行方式不同和執(zhí)行效率不同,這有利于加強(qiáng)對(duì)編譯引論階段所給出的編譯執(zhí)行和解釋執(zhí)行的深入理解和直觀感受。此外,通過本次實(shí)驗(yàn),部分學(xué)生發(fā)現(xiàn)不同語言的程序結(jié)構(gòu)不同,對(duì)于程序語言自身的描述和表達(dá)方式有了更加深入的認(rèn)識(shí)。

(3)了解實(shí)施過程存在的問題。為了了解實(shí)施過程中存在的問題,調(diào)查問卷中包括實(shí)驗(yàn)中遇到的主要困難等問題,如圖3所示,80%以上的學(xué)生認(rèn)為新的語言學(xué)習(xí)需要時(shí)間,而超過50%的學(xué)生認(rèn)為程序開發(fā)環(huán)境的搭建比較費(fèi)時(shí)費(fèi)力,由此也導(dǎo)致超過40%的學(xué)生認(rèn)為實(shí)驗(yàn)時(shí)間比較緊張。

(4)獨(dú)立完成分析。由于每次選擇的算法規(guī)模和難度適中,因此不可避免能夠在網(wǎng)絡(luò)上找到已有的實(shí)現(xiàn)代碼,如使用Haskell實(shí)現(xiàn)的快速排序算法。在具體實(shí)踐的過程中,并沒有要求所有代碼自己從頭編寫,但是要自行理解和運(yùn)行代碼。代碼來源統(tǒng)計(jì)結(jié)果如圖4所示,大約21%的學(xué)生是完全自己編寫的代碼,而約74%的學(xué)生是從網(wǎng)上搜索部分代碼后運(yùn)行的,剩余5%的學(xué)生是從網(wǎng)絡(luò)搜索獲得全部的代碼。

4 持續(xù)改進(jìn)措施

新語言的學(xué)習(xí)是了解程序設(shè)計(jì)語言多樣性的必需過程,其中學(xué)生一部分精力主性化教學(xué)資源推薦,包括教學(xué)視頻(SPOC),或推送更多的參考練習(xí)題;(2)組成動(dòng)態(tài)討論小組,由助教組織進(jìn)行再講解和分享。

課程教學(xué)一學(xué)期結(jié)束后閉卷期末考試,傳統(tǒng)班級(jí)和教改班級(jí)題目相同。傳統(tǒng)班級(jí)采用紙質(zhì)考試(編程題有過程分),教改班級(jí)在線考試(編程題沒有過程分,但有多個(gè)測試得分點(diǎn))。兩個(gè)班級(jí)期末考試分?jǐn)?shù)對(duì)比如圖8所示。

圖8 教改班級(jí)和傳統(tǒng)班級(jí)期末考試成績對(duì)比

可以看出,敏捷教學(xué)模式大大地提高了學(xué)生能力水平及知識(shí)點(diǎn)的掌握程度。教改班級(jí)期末考試90分以上的學(xué)生占45%以上。傳統(tǒng)方式培養(yǎng)的學(xué)生分?jǐn)?shù)段集中在60~80分左右。值得注意的是,由于教改班級(jí)判分嚴(yán)格,不及格人數(shù)占比4%,而傳統(tǒng)教學(xué)班級(jí)紙質(zhì)考試判分較靈活,無不及格。還有一種可能是強(qiáng)節(jié)奏的能力沖擊是使個(gè)別學(xué)生跟不上,最終掉隊(duì)。

圖9顯示了教改班級(jí)期末考試知識(shí)點(diǎn)掌握情況柱狀圖,大部分學(xué)生掌握情況良好。但發(fā)現(xiàn)學(xué)生對(duì)指針、變量作用域等知識(shí)點(diǎn)掌握得不盡如人意,分析是因?yàn)榕R近期末教學(xué)比較匆忙,指針內(nèi)容靈活難以消化;而變量作用域則是因?yàn)闆]有專門進(jìn)行測試和布置作業(yè),造成知識(shí)消化不夠完全。令人驚奇的是,第一能力層級(jí)的輸入輸出語句得分率偏低,查閱下一層知識(shí)點(diǎn)掌握情況發(fā)現(xiàn),由于“格式化輸入輸出”記憶性和技巧性較強(qiáng),并學(xué)過的時(shí)間較長,很多學(xué)生已經(jīng)忘記或者忽略,提示下一輪教學(xué)中,考試前需要給學(xué)生強(qiáng)調(diào)記憶并加強(qiáng)練習(xí)。

5 結(jié) 語

我們提出對(duì)程序設(shè)計(jì)基礎(chǔ)課程進(jìn)行知識(shí)圖譜及能力層次構(gòu)建,利用在線考試平臺(tái)的不同平臺(tái)進(jìn)行概念測試和能力評(píng)估。進(jìn)而提出適合程序設(shè)計(jì)基礎(chǔ)課程的一種混合敏捷教學(xué)模式,在教學(xué)實(shí)踐中取得了較好的效果,有積極的推廣意義,并為其他工科課程改革提供了有益的參考。

猜你喜歡
語言實(shí)驗(yàn)課程
記一次有趣的實(shí)驗(yàn)
數(shù)字圖像處理課程混合式教學(xué)改革與探索
軟件設(shè)計(jì)與開發(fā)實(shí)踐課程探索與實(shí)踐
語言是刀
文苑(2020年4期)2020-05-30 12:35:30
為什么要學(xué)習(xí)HAA課程?
做個(gè)怪怪長實(shí)驗(yàn)
讓語言描寫搖曳多姿
累積動(dòng)態(tài)分析下的同聲傳譯語言壓縮
NO與NO2相互轉(zhuǎn)化實(shí)驗(yàn)的改進(jìn)
實(shí)踐十號(hào)上的19項(xiàng)實(shí)驗(yàn)
太空探索(2016年5期)2016-07-12 15:17:55
主站蜘蛛池模板: 国产人成在线视频| 日韩东京热无码人妻| 亚洲一区波多野结衣二区三区| 国产特级毛片aaaaaa| 成年网址网站在线观看| 玖玖精品视频在线观看| 久草中文网| 制服丝袜在线视频香蕉| 日韩欧美中文| 91在线丝袜| 玖玖精品视频在线观看| AV无码无在线观看免费| 天天干天天色综合网| 日韩精品专区免费无码aⅴ| 国产精品极品美女自在线网站| 欧美国产菊爆免费观看| 成人av手机在线观看| 激情国产精品一区| 91在线视频福利| 亚洲综合婷婷激情| 久草视频福利在线观看| 欧美综合区自拍亚洲综合天堂| 91精品国产自产在线老师啪l| 成人小视频在线观看免费| 好久久免费视频高清| 欧美一级色视频| 日本精品视频| 国产乱人伦精品一区二区| 国产97色在线| 久久青草免费91线频观看不卡| 国产女人水多毛片18| 国产精品yjizz视频网一二区| 欧美日韩专区| 最新国产成人剧情在线播放| 成·人免费午夜无码视频在线观看| 拍国产真实乱人偷精品| 青青青视频91在线 | 午夜激情婷婷| 色综合天天操| a毛片基地免费大全| 色成人亚洲| 婷婷五月在线视频| 久久天天躁狠狠躁夜夜2020一| 亚洲国产无码有码| 亚洲Aⅴ无码专区在线观看q| 最新亚洲av女人的天堂| 亚洲国产精品成人久久综合影院 | 欧美va亚洲va香蕉在线| 成人在线视频一区| 香蕉eeww99国产精选播放| 2022精品国偷自产免费观看| 日韩小视频在线观看| 91视频首页| 91色爱欧美精品www| 九九精品在线观看| 久久精品最新免费国产成人| 国产精品一区二区久久精品无码| 久草视频福利在线观看| 亚洲成年人网| 毛片免费视频| 美女国内精品自产拍在线播放| 久久精品国产精品一区二区| 五月天丁香婷婷综合久久| 亚洲日韩精品伊甸| 精品成人一区二区三区电影 | 中文字幕在线一区二区在线| 亚洲免费三区| 91久久偷偷做嫩草影院| 亚洲欧美极品| 亚洲 欧美 偷自乱 图片| 久久大香香蕉国产免费网站| 97在线免费| 国产精品亚洲一区二区三区z| 亚洲女人在线| 亚洲中文字幕在线精品一区| 天堂中文在线资源| 亚洲中文字幕97久久精品少妇| 米奇精品一区二区三区| 免费一级无码在线网站| 国产青青草视频| 黄网站欧美内射| 香蕉网久久|