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

        ?

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

        2019-08-24 08:58:00計衛(wèi)星王貴珍
        計算機(jī)教育 2019年8期
        關(guān)鍵詞:程序設(shè)計代碼班級

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

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

        0 引 言

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

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

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

        1 語言認(rèn)知實驗設(shè)計

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

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

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

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

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

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

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

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

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

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

        3 教學(xué)效果

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

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

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

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

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

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

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

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

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

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

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

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

        5 結(jié) 語

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

        猜你喜歡
        程序設(shè)計代碼班級
        班級“四小怪”
        小讀者(2021年4期)2021-11-24 10:49:03
        基于Visual Studio Code的C語言程序設(shè)計實踐教學(xué)探索
        如何構(gòu)建和諧班級
        甘肅教育(2020年22期)2020-04-13 08:10:52
        從細(xì)節(jié)入手,談PLC程序設(shè)計技巧
        電子制作(2019年9期)2019-05-30 09:42:04
        創(chuàng)世代碼
        動漫星空(2018年11期)2018-10-26 02:24:02
        創(chuàng)世代碼
        動漫星空(2018年2期)2018-10-26 02:11:00
        創(chuàng)世代碼
        動漫星空(2018年9期)2018-10-26 01:16:48
        創(chuàng)世代碼
        動漫星空(2018年5期)2018-10-26 01:15:02
        高職高專院校C語言程序設(shè)計教學(xué)改革探索
        不稱心的新班級
        快樂語文(2016年7期)2016-11-07 09:43:56
        久久久人妻一区二区三区蜜桃d | 岛国视频在线无码| 四虎成人精品无码永久在线| 精品国产一区二区三区久久女人| 亚洲国产精品成人一区二区三区| 日本成人精品一区二区三区| 亚洲av福利院在线观看| 亚洲第一av导航av尤物| 国产剧情福利AV一区二区| 一区二区日本影院在线观看| av日韩一区二区三区四区| 亚洲 自拍 另类小说综合图区 | 国产精品妇女一二三区| 国产精品久久久av久久久| 高潮社区51视频在线观看| 国产精品毛片av毛片一区二区 | 国产成人午夜精华液| 一区二区三区不卡在线| 日本一道本加勒比东京热| а天堂中文在线官网在线| 九九久久自然熟的香蕉图片| 3344永久在线观看视频| 嗯啊 不要 啊啊在线日韩a| 日韩人妻精品视频一区二区三区| 久久久亚洲精品无码| 国产在线播放网址| 亚洲精品成人网线在线播放va| 一个人午夜观看在线中文字幕| 人妻精品久久久久中文字幕69| 欧美真人性做爰一二区| 亚洲精品无人区一区二区三区| 成人大片免费视频播放一级| 精品无码久久久久久国产| 动漫在线无码一区| 日韩人妻美乳中文字幕在线| 国产在热线精品视频| 亚洲妓女综合网99| 亚洲老女人区一区二视频 | 无码av免费永久免费永久专区| 日本一区二区在线播放| 欧美熟妇另类久久久久久不卡|