曹天澤* 潘家志
(杭州師范大學(xué),浙江 杭州310000)
讓學(xué)生很好的閱讀代碼,理解程序的運(yùn)行原理,一直是程序設(shè)計(jì)類課程的核心目標(biāo)。現(xiàn)有的課程教學(xué)模式常常將課程類型為理論課和實(shí)驗(yàn)課。在理論課中使用ppt 進(jìn)行演示,教述編程語言的語法,在實(shí)驗(yàn)課中讓學(xué)生模仿教材或者PPT 中的代碼。在實(shí)際教學(xué)中,常有以下缺陷:(1)ppt 并沒有原生對(duì)于各類編程語言的高亮,在實(shí)際演示時(shí),無法對(duì)代碼中各類變量、方法、控制結(jié)構(gòu)、類、類的成員進(jìn)行鮮明的標(biāo)記,增加學(xué)生辨識(shí)理解的難度;(2)在設(shè)計(jì)格式樣式時(shí),在ppt 中撰寫的代碼對(duì)常常誤輸入中文全角的符號(hào)。學(xué)生在復(fù)制ppt 中的代碼到編譯器中執(zhí)行時(shí),常常因?yàn)闆]有清楚認(rèn)識(shí)到全角符號(hào)的樣式,造成程序運(yùn)行失敗。對(duì)于這些錯(cuò)誤,學(xué)生也經(jīng)常不能自行排查,常困惑于此,進(jìn)而打擊學(xué)習(xí)編程的積極性。Markdown 作為一種簡單標(biāo)記語法,有別于LaTeX 的復(fù)雜和高聳的學(xué)習(xí)曲線,通過相對(duì)少量的標(biāo)記即可渲染出簡單明了的文檔。2018 年微軟推出的編輯器VS Code 就原生支持Markdown 語法,甚至各類網(wǎng)站都退出各類web 版編輯器,只需一個(gè)瀏覽器軟件就可完成Markdown 文檔的寫作。筆者通過數(shù)年的探索和實(shí)踐,在各類程序設(shè)計(jì)類課程中引入Markdown 進(jìn)行教學(xué)演示,有些許體會(huì),借此與同仁分享[1]。
MarkDown 將具體文檔的樣式和文本的內(nèi)容分離,在文本中只聲明結(jié)構(gòu),而具體的樣式渲染交由所依附的編輯器渲染引擎負(fù)責(zé)。最常用的語法如表所示。
Markdown 常用語法
Markdown 通過在行首插入#來聲明此行為標(biāo)題,而定義為幾級(jí)標(biāo)題,取決于插入#的數(shù)量,編輯器會(huì)基于不同級(jí)別的標(biāo)題,渲染為不同的字體、大小和間距。對(duì)于一級(jí)標(biāo)題,除了字體設(shè)置比較大,還會(huì)帶有下劃線。對(duì)于除一級(jí)標(biāo)題以為的二級(jí)、三級(jí)等標(biāo)題,會(huì)依次設(shè)置為較小的字體大小。
對(duì)于在文本編輯中的經(jīng)常使用的加粗、斜體字、列表、引用、鏈接、插入圖片等功能,Markdown 中都有相應(yīng)的語法給予支持。對(duì)于要加粗的文本,只需在文本兩端插入“**”;對(duì)于要設(shè)置為斜體字的文本,需要在在文本兩端“*”;對(duì)于要設(shè)置為列表的內(nèi)容,需要在個(gè)列表的行首插入“*”。對(duì)于要引用一段其他文獻(xiàn)的內(nèi)容,可以在引用的段落內(nèi)容前加入一個(gè)“>”,編輯器會(huì)在設(shè)定該段文字的背景色有別于正文。當(dāng)要插入超鏈接的時(shí)候,需要使用“[title](link)”的結(jié)構(gòu),在圓括號(hào)“()”中寫入超鏈接,正文會(huì)顯示出方括號(hào)"[]"中的內(nèi)容,但點(diǎn)擊文本,可以跳轉(zhuǎn)到相應(yīng)的超鏈接。當(dāng)要插入圖片的時(shí)候,需要使用“”的結(jié)構(gòu),在方括號(hào)中寫入要顯示圖片的本地或者在網(wǎng)絡(luò)中的路徑,如果顯示失敗,編輯器會(huì)顯示方括號(hào)中的文本內(nèi)容[2]。
在日常編輯文本中難免需要插入表格,Markdown 支持通過在不同單元格內(nèi)容之間使用“|”來設(shè)置單元格,通過使用“-”來聲明該行上一行的內(nèi)容為行首內(nèi)容,編輯器會(huì)相應(yīng)的將行首的內(nèi)容加粗,如圖1。通過在使用“-”來分割行首和其他行的單元格中不同位置插入英文冒號(hào),可以分別聲明該列為左對(duì)齊、右對(duì)齊和居中對(duì)齊。
Markdown 支持使用Tex 或LaTeX 格式的插入數(shù)學(xué)公式,只需在兩個(gè)美元符號(hào)“$$”包括住LaTeX 格式的公式,就能正確的顯示出精美的公式,如圖2。
Markdown 本身支持對(duì)于代碼塊文本的整體高亮顯示,只需在兩個(gè)“```”符號(hào)之間輸入代碼,并在第一個(gè)“```”后標(biāo)注對(duì)應(yīng)的編程語言。Markdown 會(huì)基于相應(yīng)的編程語言特性對(duì)代碼文本進(jìn)行高亮。如圖3,分別編寫了C 編程語言和Python 編程語言的Hello World 程序。Markdown 文本對(duì)于各語言的頭文件、解釋器聲明語句、方法以及各類字符串常量分別用各類鮮明的顏色進(jìn)行區(qū)分,便于快速閱讀代碼,知曉代碼運(yùn)行邏輯。
圖2 使用LaTex 公式的代碼和樣式
圖3 C 代碼塊和python 代碼塊在Markdown 中的渲染效果
在日常教學(xué)中,放棄以PPT 展示的純理論課教學(xué)形式。采用機(jī)房實(shí)驗(yàn)室授課,學(xué)生都必有一臺(tái)電腦?;贛arkdown 編寫教案,將示例代碼穿插的寫入教案文檔中。上課時(shí),利用同屏傳輸軟件InletexEMC,同步傳輸文檔內(nèi)容給學(xué)生,按小節(jié)為單位講解教學(xué),并現(xiàn)場示例代碼的實(shí)際運(yùn)行過程。完成一節(jié)教學(xué)后,立刻讓學(xué)生動(dòng)手實(shí)際操作,加強(qiáng)記憶。學(xué)生也可根據(jù)自己的理解,修改Markdown 教案,便于反復(fù)的回溯。
在基于Python 和R 語言編程的演示性教學(xué)中,更是可以用Jupyter Notebook 替代普通的Markdown 文件。學(xué)生可以直接運(yùn)行文檔中的示例代碼得到結(jié)構(gòu),所見即所得,省去了復(fù)制文檔中代碼到自己編輯器中運(yùn)行的繁瑣步驟[3]。
Markdown 因?yàn)槠浜唵挝谋緲?biāo)記的特點(diǎn),原生支持各類代碼的語法高亮,非常適合在計(jì)算機(jī)信息類程序語言教學(xué)工作的作為承載教案資料的媒介,從而讓學(xué)生更快,更好的學(xué)習(xí)編程。