徐 康,蔣凌云,2,黃海平,陳興國
(1.南京郵電大學(xué) 計算機學(xué)院、軟件學(xué)院、網(wǎng)絡(luò)空間安全學(xué)院,江蘇 南京 210023;2.南京郵電大學(xué)通達(dá)學(xué)院,江蘇 揚州 225127)
隨著全球化的進(jìn)展和教育國際化的發(fā)展,越來越多非洲、亞洲,甚至歐美的學(xué)生選擇到中國留學(xué),以獲得更好的學(xué)習(xí)和發(fā)展機會。然而,留學(xué)生在新的學(xué)習(xí)環(huán)境和文化背景下,往往會遇到一系列挑戰(zhàn)和困難。其中之一就是語言障礙,特別是對于非英語國家的留學(xué)生而言,其需要適應(yīng)英語作為教學(xué)語言和交流工具,以及理解英文教材并學(xué)會運用相關(guān)教學(xué)資源。這對于留學(xué)生,尤其是計算機科學(xué)專業(yè)領(lǐng)域的學(xué)生是一個嚴(yán)峻挑戰(zhàn)。
編譯原理是計算機科學(xué)與技術(shù)領(lǐng)域的重要課程之一,教授學(xué)生編譯器的原理和實現(xiàn)方法[1-2]。該課程主要涵蓋詞法分析、語法分析、語義分析和代碼生成等內(nèi)容。通過學(xué)習(xí)編譯原理,學(xué)生可以理解程序轉(zhuǎn)換過程和計算機語言的底層工作原理,培養(yǎng)其程序設(shè)計和問題解決能力。編譯原理課程通常包含理論學(xué)習(xí)和實踐環(huán)節(jié)兩部分,其中實踐環(huán)節(jié)對于學(xué)生的綜合能力培養(yǎng)尤為重要[3]。然而,由于留學(xué)生在語言方面的障礙,使其在課程學(xué)習(xí)、交流溝通以及編程實踐等方面會遇到各種問題。因此,有必要對留學(xué)生編譯原理課程的實踐環(huán)節(jié)進(jìn)行改革,以幫助其克服語言障礙,更好地掌握與應(yīng)用編譯原理知識和技能。
近年來,人工智能技術(shù)取得了巨大進(jìn)展,其中自然語言處理(Natural Language Processing,NLP)和生成模型的應(yīng)用[4]逐漸成為研究熱點。ChatGPT 作為一種基于預(yù)訓(xùn)練模型的語言生成模型,具有強大的語言理解和生成能力[5]。其可以通過與用戶的對話交互,生成符合語境和邏輯的語句及回答,尤其是ChatGPT 可以將自然語言描述的用戶意圖轉(zhuǎn)換成形式化的程序語言[6],這為留學(xué)生編譯原理課程的實踐環(huán)節(jié)提供了新的思路和可能性。
ChatGPT 在個性化教學(xué)、課程規(guī)劃、專業(yè)指導(dǎo)等方面具有革新教育的潛力[7-9],其中Prompt 是可以與ChatGPT 交互的一種自然語言指令,促使ChatGPT 生成編程需求、程序代碼以及計算機編程配套文檔,還可以模擬編程系統(tǒng)的某些行為[10]。因此,設(shè)計一種基于ChatGPT 的編譯原理實踐環(huán)節(jié)改革方法,針對編譯原理實踐環(huán)節(jié)不同階段的問題設(shè)計各種Prompt 模版,為留學(xué)生提供代碼自動糾錯功能以及個性化的學(xué)習(xí)解答和輔導(dǎo),以促進(jìn)其在編譯原理課程中學(xué)習(xí)和實踐能力的提升。
編譯原理是一門理論與實踐結(jié)合緊密的課程。通過實驗,使留學(xué)生加深對課內(nèi)所學(xué)有關(guān)編譯過程各階段采用的主要算法、方法和技術(shù)等內(nèi)容的理解,能把編譯原理相關(guān)理論運用到軟件開發(fā)中。在留學(xué)生手動生成詞法分析器及語法分析器的過程中,使其對相關(guān)工作機理有一個詳細(xì)了解,從而提高應(yīng)用程序設(shè)計能力以及分析、解決問題的能力。
1.1.1 教學(xué)目標(biāo)
(1)知識教學(xué)目標(biāo)。目標(biāo)1:使留學(xué)生理解編譯系統(tǒng)工作流程和編譯器各功能模塊設(shè)計原理,能夠利用基本原理和方法識別與分析計算機軟件開發(fā)領(lǐng)域復(fù)雜的工程問題。目標(biāo)2:使留學(xué)生掌握詞法分析器、語法分析器開發(fā)方法,能夠編寫詞法分析程序和語法分析程序,從而對編譯原理相關(guān)理論知識有更深入的理解。
(2)能力教學(xué)目標(biāo)。目標(biāo)1:使留學(xué)生具有一定的自學(xué)能力和信息獲取能力。目標(biāo)2:使留學(xué)生具有系統(tǒng)能力,能站在系統(tǒng)的全局去看問題、分析和解決問題。目標(biāo)3:使留學(xué)生具有設(shè)計、實現(xiàn)和闡述研究方案的能力。
1.1.2 實驗內(nèi)容
實驗內(nèi)容學(xué)時分配與基本要求如表1所示。

Table 1 Hour allocation and basic principle of experiments表1 實驗內(nèi)容學(xué)時分配與基本要求
在傳統(tǒng)的留學(xué)生編譯原理課程中,實踐環(huán)節(jié)往往存在一些問題和挑戰(zhàn)。首先,語言障礙是留學(xué)生在實踐環(huán)節(jié)中遇到的主要問題之一。留學(xué)生由于語言的限制,難以理解與運用編譯原理相關(guān)概念和技術(shù)。其可能面臨閱讀和理解英文教材、與教師和同學(xué)進(jìn)行討論與交流的困難[11]。以南京郵電大學(xué)計算機學(xué)院的留學(xué)生為例,首先,學(xué)生大多來自非英語國家,對于英文資料的理解存在一定困難;其次,實踐環(huán)節(jié)往往缺乏個性化的指導(dǎo)和支持[12]。每個留學(xué)生的學(xué)習(xí)需求和自身水平不同,但傳統(tǒng)實踐環(huán)節(jié)通常無法滿足學(xué)生個性化的需求,可能導(dǎo)致一些留學(xué)生在實踐項目中遇到困難時無法得到及時的幫助和指導(dǎo)。
此外,編譯原理的實踐項目通常需要學(xué)生進(jìn)行團(tuán)隊合作,共同解決復(fù)雜的問題。然而,由于語言和文化差異,留學(xué)生可能面臨與教師和同學(xué)之間的溝通障礙,從而影響團(tuán)隊合作和項目完成效果。另外,編譯原理課程實踐項目通常缺乏實際的應(yīng)用場景,導(dǎo)致留學(xué)生無法在短期內(nèi)將所學(xué)知識應(yīng)用到實際問題的解決中。同時,傳統(tǒng)的實踐環(huán)節(jié)缺乏實時反饋,對于新手程序員來說,難以及時對程序進(jìn)行調(diào)試和糾錯[2,13]。
因此,針對以上問題,有必要對留學(xué)生編譯原理課程的實踐環(huán)節(jié)進(jìn)行改革,以提供更好的學(xué)習(xí)環(huán)境支持,幫助留學(xué)生更好地掌握與應(yīng)用編譯原理相關(guān)知識和技能。
為了解決留學(xué)生編譯原理課程實踐環(huán)節(jié)中存在的問題,本文提出一種基于ChatGPT 的交互式編譯原理實踐環(huán)節(jié)實現(xiàn)方法,旨在為留學(xué)生提供個性化的學(xué)習(xí)支持和指導(dǎo),以促進(jìn)其學(xué)習(xí)和實踐能力的提升。
Prompt 作為發(fā)送給ChatGPT 等預(yù)訓(xùn)練大模型的指令,用于強制執(zhí)行規(guī)則、自動化流程,以確保生成輸出的質(zhì)量(和數(shù)量)[14]。針對留學(xué)生對編譯原理課程內(nèi)容以及Chat-GPT Prompt[15-16]熟悉程度不一致的問題,設(shè)計一套編譯原理編程實踐專用的Prompt 模版[14],覆蓋編譯原理編程各類常見問題,協(xié)助留學(xué)生生成各類問題的Prompt,以提供個性化的指導(dǎo)。通過與ChatGPT 進(jìn)行對話交互,留學(xué)生可以提出問題、尋求解釋和示例代碼等支持,而ChatGPT 將根據(jù)其預(yù)訓(xùn)練的知識和語義理解能力,生成相應(yīng)的回答。
Prompt 模板主要包括兩大模塊,即基本功能實現(xiàn)模塊和代碼調(diào)試模塊。其中,基本功能實現(xiàn)模塊旨在引導(dǎo)學(xué)生在編譯器實踐中完成必要的基本功能,包括正確解析源代碼、進(jìn)行語義分析、生成目標(biāo)代碼或中間代碼等,如表2 所示。代碼調(diào)試模塊可以輔助學(xué)生在編程實踐環(huán)節(jié)中,針對遇到的各種類型報錯進(jìn)行代碼調(diào)試,保證代碼能夠正常運行,如表3所示。

Table 2 Prompt template of lexical analysis表2 詞法分析Prompt模版

Table 3 Prompt template of syntax analysis表3 語法分析Prompt模版
下文以詞法分析錯誤代碼調(diào)試為例:
當(dāng)詞法分析器無法識別某些詞法單元時,學(xué)生可以根據(jù)自己熟悉的語言書寫下列相關(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 詞法分析錯誤檢查Prompt
ChatGPT 通過對源代碼的分析,給出了錯誤檢查的建議,可以幫助學(xué)生進(jìn)行代碼修改,如圖2 所示。這里的答案輸出也可以選擇學(xué)生熟悉的語言,以解決留學(xué)生中對于英文和中文都不熟悉的情況。同時,如果對于給出的方案不滿意,由于ChatGPT 具有上下文理解的能力,可在現(xiàn)有會話中繼續(xù)追加Prompt,直至得到正確的方案來修正代碼。

Fig.2 Solution provided by ChatGPT圖2 ChatGPT給出的解決方案
在實踐環(huán)節(jié)中,留學(xué)生可以利用ChatGPT 進(jìn)行交互式學(xué)習(xí)。學(xué)生可以向ChatGPT 提出問題,如概念理解、代碼調(diào)試和項目指導(dǎo)等,而ChatGPT 將根據(jù)其預(yù)訓(xùn)練的知識,生成相關(guān)的回答。通過與ChatGPT 的對話交互,留學(xué)生可以獲得個性化的學(xué)習(xí)支持和指導(dǎo),幫助其克服語言障礙,更好地理解與應(yīng)用編譯原理知識。
在2022-2023 第二學(xué)期,通過對南京郵電大學(xué)2020 級留學(xué)生計算機科學(xué)與技術(shù)專業(yè)的兩個班級進(jìn)行試點分析,發(fā)現(xiàn)留學(xué)生本科三年級學(xué)生在編程基礎(chǔ)整體不強的情況下,基本可以在ChatGPT 的輔助下完成編譯原理課程中的詞法分析和語法分析兩個課內(nèi)實驗,并且學(xué)習(xí)效果較之前學(xué)期有明顯改善。主要表現(xiàn)在以下幾個方面:
(1)課程參與主動性增強。編譯原理的實踐環(huán)節(jié)不再是編程“老手”才能完成的事情,一些編程經(jīng)驗不足的學(xué)生,通過使用Prompt 與ChatGPT 進(jìn)行互動,在編程的同時,可以補充理論課程中的知識盲點。編程能力一般的學(xué)生,可以通過ChatGPT 的輔助完成基本功能;編程能力較強的學(xué)生,可以在基本功能的基礎(chǔ)上,利用ChatGPT 實現(xiàn)優(yōu)化的功能。
(2)學(xué)習(xí)知識邊界和學(xué)習(xí)模式的變化。在編譯原理實踐環(huán)節(jié),學(xué)生不再單純完成任務(wù)式地實現(xiàn)要求的基本功能,ChatGPT 龐大的知識體系和創(chuàng)造性可以擴(kuò)寬學(xué)生的知識邊界。學(xué)習(xí)不再是單純的“教師—學(xué)生—教材”三位一體的枯燥模式,更多的是探索、嘗試和頭腦風(fēng)暴,教師更多地指導(dǎo)學(xué)生如何正確使用Prompt從大模型中尋找答案。
(3)完成情況和學(xué)習(xí)效果。留學(xué)生獲取知識的渠道已不僅局限于書本,而且有互聯(lián)網(wǎng)中專業(yè)的網(wǎng)站(如Github)以及博客(如Quora)等,信息源多而雜。ChatGPT 為留學(xué)生提供了精煉的知識,同時也為留學(xué)生生成了很多創(chuàng)造性的內(nèi)容。
本文旨在探討基于ChatGPT 的留學(xué)生編譯原理課程實踐環(huán)節(jié)改革方法。首先,基于ChatGPT 的自動化輔導(dǎo)系統(tǒng)可為留學(xué)生提供個性化的學(xué)習(xí)支持和指導(dǎo)。學(xué)生可以根據(jù)提供的模板設(shè)計Prompt 向系統(tǒng)提問并獲得符合語境和邏輯的回答,幫助其克服語言障礙,更好地理解和應(yīng)用編譯原理知識。留學(xué)生通過參與實踐項目,不僅能夠應(yīng)用所學(xué)的編譯原理知識解決實際問題,而且能夠與團(tuán)隊成員合作,共同分析和解決復(fù)雜問題。改革方案提供了個性化的學(xué)習(xí)支持和實踐經(jīng)驗,有效促進(jìn)了留學(xué)生在編譯原理課程中學(xué)習(xí)和實踐能力的提升。