徐 康,蔣凌云,2,黃海平,陳興國(guó)
(1.南京郵電大學(xué) 計(jì)算機(jī)學(xué)院、軟件學(xué)院、網(wǎng)絡(luò)空間安全學(xué)院,江蘇 南京 210023;2.南京郵電大學(xué)通達(dá)學(xué)院,江蘇 揚(yáng)州 225127)
隨著全球化的進(jìn)展和教育國(guó)際化的發(fā)展,越來(lái)越多非洲、亞洲,甚至歐美的學(xué)生選擇到中國(guó)留學(xué),以獲得更好的學(xué)習(xí)和發(fā)展機(jī)會(huì)。然而,留學(xué)生在新的學(xué)習(xí)環(huán)境和文化背景下,往往會(huì)遇到一系列挑戰(zhàn)和困難。其中之一就是語(yǔ)言障礙,特別是對(duì)于非英語(yǔ)國(guó)家的留學(xué)生而言,其需要適應(yīng)英語(yǔ)作為教學(xué)語(yǔ)言和交流工具,以及理解英文教材并學(xué)會(huì)運(yùn)用相關(guān)教學(xué)資源。這對(duì)于留學(xué)生,尤其是計(jì)算機(jī)科學(xué)專(zhuān)業(yè)領(lǐng)域的學(xué)生是一個(gè)嚴(yán)峻挑戰(zhàn)。
編譯原理是計(jì)算機(jī)科學(xué)與技術(shù)領(lǐng)域的重要課程之一,教授學(xué)生編譯器的原理和實(shí)現(xiàn)方法[1-2]。該課程主要涵蓋詞法分析、語(yǔ)法分析、語(yǔ)義分析和代碼生成等內(nèi)容。通過(guò)學(xué)習(xí)編譯原理,學(xué)生可以理解程序轉(zhuǎn)換過(guò)程和計(jì)算機(jī)語(yǔ)言的底層工作原理,培養(yǎng)其程序設(shè)計(jì)和問(wèn)題解決能力。編譯原理課程通常包含理論學(xué)習(xí)和實(shí)踐環(huán)節(jié)兩部分,其中實(shí)踐環(huán)節(jié)對(duì)于學(xué)生的綜合能力培養(yǎng)尤為重要[3]。然而,由于留學(xué)生在語(yǔ)言方面的障礙,使其在課程學(xué)習(xí)、交流溝通以及編程實(shí)踐等方面會(huì)遇到各種問(wèn)題。因此,有必要對(duì)留學(xué)生編譯原理課程的實(shí)踐環(huán)節(jié)進(jìn)行改革,以幫助其克服語(yǔ)言障礙,更好地掌握與應(yīng)用編譯原理知識(shí)和技能。
近年來(lái),人工智能技術(shù)取得了巨大進(jìn)展,其中自然語(yǔ)言處理(Natural Language Processing,NLP)和生成模型的應(yīng)用[4]逐漸成為研究熱點(diǎn)。ChatGPT 作為一種基于預(yù)訓(xùn)練模型的語(yǔ)言生成模型,具有強(qiáng)大的語(yǔ)言理解和生成能力[5]。其可以通過(guò)與用戶的對(duì)話交互,生成符合語(yǔ)境和邏輯的語(yǔ)句及回答,尤其是ChatGPT 可以將自然語(yǔ)言描述的用戶意圖轉(zhuǎn)換成形式化的程序語(yǔ)言[6],這為留學(xué)生編譯原理課程的實(shí)踐環(huán)節(jié)提供了新的思路和可能性。
ChatGPT 在個(gè)性化教學(xué)、課程規(guī)劃、專(zhuān)業(yè)指導(dǎo)等方面具有革新教育的潛力[7-9],其中Prompt 是可以與ChatGPT 交互的一種自然語(yǔ)言指令,促使ChatGPT 生成編程需求、程序代碼以及計(jì)算機(jī)編程配套文檔,還可以模擬編程系統(tǒng)的某些行為[10]。因此,設(shè)計(jì)一種基于ChatGPT 的編譯原理實(shí)踐環(huán)節(jié)改革方法,針對(duì)編譯原理實(shí)踐環(huán)節(jié)不同階段的問(wèn)題設(shè)計(jì)各種Prompt 模版,為留學(xué)生提供代碼自動(dòng)糾錯(cuò)功能以及個(gè)性化的學(xué)習(xí)解答和輔導(dǎo),以促進(jìn)其在編譯原理課程中學(xué)習(xí)和實(shí)踐能力的提升。
編譯原理是一門(mén)理論與實(shí)踐結(jié)合緊密的課程。通過(guò)實(shí)驗(yàn),使留學(xué)生加深對(duì)課內(nèi)所學(xué)有關(guān)編譯過(guò)程各階段采用的主要算法、方法和技術(shù)等內(nèi)容的理解,能把編譯原理相關(guān)理論運(yùn)用到軟件開(kāi)發(fā)中。在留學(xué)生手動(dòng)生成詞法分析器及語(yǔ)法分析器的過(guò)程中,使其對(duì)相關(guān)工作機(jī)理有一個(gè)詳細(xì)了解,從而提高應(yīng)用程序設(shè)計(jì)能力以及分析、解決問(wèn)題的能力。
1.1.1 教學(xué)目標(biāo)
(1)知識(shí)教學(xué)目標(biāo)。目標(biāo)1:使留學(xué)生理解編譯系統(tǒng)工作流程和編譯器各功能模塊設(shè)計(jì)原理,能夠利用基本原理和方法識(shí)別與分析計(jì)算機(jī)軟件開(kāi)發(fā)領(lǐng)域復(fù)雜的工程問(wèn)題。目標(biāo)2:使留學(xué)生掌握詞法分析器、語(yǔ)法分析器開(kāi)發(fā)方法,能夠編寫(xiě)詞法分析程序和語(yǔ)法分析程序,從而對(duì)編譯原理相關(guān)理論知識(shí)有更深入的理解。
(2)能力教學(xué)目標(biāo)。目標(biāo)1:使留學(xué)生具有一定的自學(xué)能力和信息獲取能力。目標(biāo)2:使留學(xué)生具有系統(tǒng)能力,能站在系統(tǒng)的全局去看問(wèn)題、分析和解決問(wèn)題。目標(biāo)3:使留學(xué)生具有設(shè)計(jì)、實(shí)現(xiàn)和闡述研究方案的能力。
1.1.2 實(shí)驗(yàn)內(nèi)容
實(shí)驗(yàn)內(nèi)容學(xué)時(shí)分配與基本要求如表1所示。
Table 1 Hour allocation and basic principle of experiments表1 實(shí)驗(yàn)內(nèi)容學(xué)時(shí)分配與基本要求
在傳統(tǒng)的留學(xué)生編譯原理課程中,實(shí)踐環(huán)節(jié)往往存在一些問(wèn)題和挑戰(zhàn)。首先,語(yǔ)言障礙是留學(xué)生在實(shí)踐環(huán)節(jié)中遇到的主要問(wèn)題之一。留學(xué)生由于語(yǔ)言的限制,難以理解與運(yùn)用編譯原理相關(guān)概念和技術(shù)。其可能面臨閱讀和理解英文教材、與教師和同學(xué)進(jìn)行討論與交流的困難[11]。以南京郵電大學(xué)計(jì)算機(jī)學(xué)院的留學(xué)生為例,首先,學(xué)生大多來(lái)自非英語(yǔ)國(guó)家,對(duì)于英文資料的理解存在一定困難;其次,實(shí)踐環(huán)節(jié)往往缺乏個(gè)性化的指導(dǎo)和支持[12]。每個(gè)留學(xué)生的學(xué)習(xí)需求和自身水平不同,但傳統(tǒng)實(shí)踐環(huán)節(jié)通常無(wú)法滿足學(xué)生個(gè)性化的需求,可能導(dǎo)致一些留學(xué)生在實(shí)踐項(xiàng)目中遇到困難時(shí)無(wú)法得到及時(shí)的幫助和指導(dǎo)。
此外,編譯原理的實(shí)踐項(xiàng)目通常需要學(xué)生進(jìn)行團(tuán)隊(duì)合作,共同解決復(fù)雜的問(wèn)題。然而,由于語(yǔ)言和文化差異,留學(xué)生可能面臨與教師和同學(xué)之間的溝通障礙,從而影響團(tuán)隊(duì)合作和項(xiàng)目完成效果。另外,編譯原理課程實(shí)踐項(xiàng)目通常缺乏實(shí)際的應(yīng)用場(chǎng)景,導(dǎo)致留學(xué)生無(wú)法在短期內(nèi)將所學(xué)知識(shí)應(yīng)用到實(shí)際問(wèn)題的解決中。同時(shí),傳統(tǒng)的實(shí)踐環(huán)節(jié)缺乏實(shí)時(shí)反饋,對(duì)于新手程序員來(lái)說(shuō),難以及時(shí)對(duì)程序進(jìn)行調(diào)試和糾錯(cuò)[2,13]。
因此,針對(duì)以上問(wèn)題,有必要對(duì)留學(xué)生編譯原理課程的實(shí)踐環(huán)節(jié)進(jìn)行改革,以提供更好的學(xué)習(xí)環(huán)境支持,幫助留學(xué)生更好地掌握與應(yīng)用編譯原理相關(guān)知識(shí)和技能。
為了解決留學(xué)生編譯原理課程實(shí)踐環(huán)節(jié)中存在的問(wèn)題,本文提出一種基于ChatGPT 的交互式編譯原理實(shí)踐環(huán)節(jié)實(shí)現(xiàn)方法,旨在為留學(xué)生提供個(gè)性化的學(xué)習(xí)支持和指導(dǎo),以促進(jìn)其學(xué)習(xí)和實(shí)踐能力的提升。
Prompt 作為發(fā)送給ChatGPT 等預(yù)訓(xùn)練大模型的指令,用于強(qiáng)制執(zhí)行規(guī)則、自動(dòng)化流程,以確保生成輸出的質(zhì)量(和數(shù)量)[14]。針對(duì)留學(xué)生對(duì)編譯原理課程內(nèi)容以及Chat-GPT Prompt[15-16]熟悉程度不一致的問(wèn)題,設(shè)計(jì)一套編譯原理編程實(shí)踐專(zhuān)用的Prompt 模版[14],覆蓋編譯原理編程各類(lèi)常見(jiàn)問(wèn)題,協(xié)助留學(xué)生生成各類(lèi)問(wèn)題的Prompt,以提供個(gè)性化的指導(dǎo)。通過(guò)與ChatGPT 進(jìn)行對(duì)話交互,留學(xué)生可以提出問(wèn)題、尋求解釋和示例代碼等支持,而ChatGPT 將根據(jù)其預(yù)訓(xùn)練的知識(shí)和語(yǔ)義理解能力,生成相應(yīng)的回答。
Prompt 模板主要包括兩大模塊,即基本功能實(shí)現(xiàn)模塊和代碼調(diào)試模塊。其中,基本功能實(shí)現(xiàn)模塊旨在引導(dǎo)學(xué)生在編譯器實(shí)踐中完成必要的基本功能,包括正確解析源代碼、進(jìn)行語(yǔ)義分析、生成目標(biāo)代碼或中間代碼等,如表2 所示。代碼調(diào)試模塊可以輔助學(xué)生在編程實(shí)踐環(huán)節(jié)中,針對(duì)遇到的各種類(lèi)型報(bào)錯(cuò)進(jìn)行代碼調(diào)試,保證代碼能夠正常運(yùn)行,如表3所示。
Table 2 Prompt template of lexical analysis表2 詞法分析Prompt模版
Table 3 Prompt template of syntax analysis表3 語(yǔ)法分析Prompt模版
下文以詞法分析錯(cuò)誤代碼調(diào)試為例:
當(dāng)詞法分析器無(wú)法識(shí)別某些詞法單元時(shí),學(xué)生可以根據(jù)自己熟悉的語(yǔ)言書(shū)寫(xiě)下列相關(guān)代碼調(diào)試Prompt。以英文為例:
I encountered an unrecognized lexical unit.What steps can I take to debug the lexer and identify the problem?
根據(jù)Prompt(1),可以向ChatGPT 發(fā)送指令,如圖1所示。
Fig.1 Prompt for error checking of lexical analysis圖1 詞法分析錯(cuò)誤檢查Prompt
ChatGPT 通過(guò)對(duì)源代碼的分析,給出了錯(cuò)誤檢查的建議,可以幫助學(xué)生進(jìn)行代碼修改,如圖2 所示。這里的答案輸出也可以選擇學(xué)生熟悉的語(yǔ)言,以解決留學(xué)生中對(duì)于英文和中文都不熟悉的情況。同時(shí),如果對(duì)于給出的方案不滿意,由于ChatGPT 具有上下文理解的能力,可在現(xiàn)有會(huì)話中繼續(xù)追加Prompt,直至得到正確的方案來(lái)修正代碼。
Fig.2 Solution provided by ChatGPT圖2 ChatGPT給出的解決方案
在實(shí)踐環(huán)節(jié)中,留學(xué)生可以利用ChatGPT 進(jìn)行交互式學(xué)習(xí)。學(xué)生可以向ChatGPT 提出問(wèn)題,如概念理解、代碼調(diào)試和項(xiàng)目指導(dǎo)等,而ChatGPT 將根據(jù)其預(yù)訓(xùn)練的知識(shí),生成相關(guān)的回答。通過(guò)與ChatGPT 的對(duì)話交互,留學(xué)生可以獲得個(gè)性化的學(xué)習(xí)支持和指導(dǎo),幫助其克服語(yǔ)言障礙,更好地理解與應(yīng)用編譯原理知識(shí)。
在2022-2023 第二學(xué)期,通過(guò)對(duì)南京郵電大學(xué)2020 級(jí)留學(xué)生計(jì)算機(jī)科學(xué)與技術(shù)專(zhuān)業(yè)的兩個(gè)班級(jí)進(jìn)行試點(diǎn)分析,發(fā)現(xiàn)留學(xué)生本科三年級(jí)學(xué)生在編程基礎(chǔ)整體不強(qiáng)的情況下,基本可以在ChatGPT 的輔助下完成編譯原理課程中的詞法分析和語(yǔ)法分析兩個(gè)課內(nèi)實(shí)驗(yàn),并且學(xué)習(xí)效果較之前學(xué)期有明顯改善。主要表現(xiàn)在以下幾個(gè)方面:
(1)課程參與主動(dòng)性增強(qiáng)。編譯原理的實(shí)踐環(huán)節(jié)不再是編程“老手”才能完成的事情,一些編程經(jīng)驗(yàn)不足的學(xué)生,通過(guò)使用Prompt 與ChatGPT 進(jìn)行互動(dòng),在編程的同時(shí),可以補(bǔ)充理論課程中的知識(shí)盲點(diǎn)。編程能力一般的學(xué)生,可以通過(guò)ChatGPT 的輔助完成基本功能;編程能力較強(qiáng)的學(xué)生,可以在基本功能的基礎(chǔ)上,利用ChatGPT 實(shí)現(xiàn)優(yōu)化的功能。
(2)學(xué)習(xí)知識(shí)邊界和學(xué)習(xí)模式的變化。在編譯原理實(shí)踐環(huán)節(jié),學(xué)生不再單純完成任務(wù)式地實(shí)現(xiàn)要求的基本功能,ChatGPT 龐大的知識(shí)體系和創(chuàng)造性可以擴(kuò)寬學(xué)生的知識(shí)邊界。學(xué)習(xí)不再是單純的“教師—學(xué)生—教材”三位一體的枯燥模式,更多的是探索、嘗試和頭腦風(fēng)暴,教師更多地指導(dǎo)學(xué)生如何正確使用Prompt從大模型中尋找答案。
(3)完成情況和學(xué)習(xí)效果。留學(xué)生獲取知識(shí)的渠道已不僅局限于書(shū)本,而且有互聯(lián)網(wǎng)中專(zhuān)業(yè)的網(wǎng)站(如Github)以及博客(如Quora)等,信息源多而雜。ChatGPT 為留學(xué)生提供了精煉的知識(shí),同時(shí)也為留學(xué)生生成了很多創(chuàng)造性的內(nèi)容。
本文旨在探討基于ChatGPT 的留學(xué)生編譯原理課程實(shí)踐環(huán)節(jié)改革方法。首先,基于ChatGPT 的自動(dòng)化輔導(dǎo)系統(tǒng)可為留學(xué)生提供個(gè)性化的學(xué)習(xí)支持和指導(dǎo)。學(xué)生可以根據(jù)提供的模板設(shè)計(jì)Prompt 向系統(tǒng)提問(wèn)并獲得符合語(yǔ)境和邏輯的回答,幫助其克服語(yǔ)言障礙,更好地理解和應(yīng)用編譯原理知識(shí)。留學(xué)生通過(guò)參與實(shí)踐項(xiàng)目,不僅能夠應(yīng)用所學(xué)的編譯原理知識(shí)解決實(shí)際問(wèn)題,而且能夠與團(tuán)隊(duì)成員合作,共同分析和解決復(fù)雜問(wèn)題。改革方案提供了個(gè)性化的學(xué)習(xí)支持和實(shí)踐經(jīng)驗(yàn),有效促進(jìn)了留學(xué)生在編譯原理課程中學(xué)習(xí)和實(shí)踐能力的提升。