曹天澤* 潘家志
(杭州師范大學,浙江 杭州310000)
讓學生很好的閱讀代碼,理解程序的運行原理,一直是程序設計類課程的核心目標。現有的課程教學模式常常將課程類型為理論課和實驗課。在理論課中使用ppt 進行演示,教述編程語言的語法,在實驗課中讓學生模仿教材或者PPT 中的代碼。在實際教學中,常有以下缺陷:(1)ppt 并沒有原生對于各類編程語言的高亮,在實際演示時,無法對代碼中各類變量、方法、控制結構、類、類的成員進行鮮明的標記,增加學生辨識理解的難度;(2)在設計格式樣式時,在ppt 中撰寫的代碼對常常誤輸入中文全角的符號。學生在復制ppt 中的代碼到編譯器中執行時,常常因為沒有清楚認識到全角符號的樣式,造成程序運行失敗。對于這些錯誤,學生也經常不能自行排查,常困惑于此,進而打擊學習編程的積極性。Markdown 作為一種簡單標記語法,有別于LaTeX 的復雜和高聳的學習曲線,通過相對少量的標記即可渲染出簡單明了的文檔。2018 年微軟推出的編輯器VS Code 就原生支持Markdown 語法,甚至各類網站都退出各類web 版編輯器,只需一個瀏覽器軟件就可完成Markdown 文檔的寫作。筆者通過數年的探索和實踐,在各類程序設計類課程中引入Markdown 進行教學演示,有些許體會,借此與同仁分享[1]。
MarkDown 將具體文檔的樣式和文本的內容分離,在文本中只聲明結構,而具體的樣式渲染交由所依附的編輯器渲染引擎負責。最常用的語法如表所示。

Markdown 常用語法
Markdown 通過在行首插入#來聲明此行為標題,而定義為幾級標題,取決于插入#的數量,編輯器會基于不同級別的標題,渲染為不同的字體、大小和間距。對于一級標題,除了字體設置比較大,還會帶有下劃線。對于除一級標題以為的二級、三級等標題,會依次設置為較小的字體大小。
對于在文本編輯中的經常使用的加粗、斜體字、列表、引用、鏈接、插入圖片等功能,Markdown 中都有相應的語法給予支持。對于要加粗的文本,只需在文本兩端插入“**”;對于要設置為斜體字的文本,需要在在文本兩端“*”;對于要設置為列表的內容,需要在個列表的行首插入“*”。對于要引用一段其他文獻的內容,可以在引用的段落內容前加入一個“>”,編輯器會在設定該段文字的背景色有別于正文。當要插入超鏈接的時候,需要使用“[title](link)”的結構,在圓括號“()”中寫入超鏈接,正文會顯示出方括號"[]"中的內容,但點擊文本,可以跳轉到相應的超鏈接。當要插入圖片的時候,需要使用“”的結構,在方括號中寫入要顯示圖片的本地或者在網絡中的路徑,如果顯示失敗,編輯器會顯示方括號中的文本內容[2]。
在日常編輯文本中難免需要插入表格,Markdown 支持通過在不同單元格內容之間使用“|”來設置單元格,通過使用“-”來聲明該行上一行的內容為行首內容,編輯器會相應的將行首的內容加粗,如圖1。通過在使用“-”來分割行首和其他行的單元格中不同位置插入英文冒號,可以分別聲明該列為左對齊、右對齊和居中對齊。
Markdown 支持使用Tex 或LaTeX 格式的插入數學公式,只需在兩個美元符號“$$”包括住LaTeX 格式的公式,就能正確的顯示出精美的公式,如圖2。
Markdown 本身支持對于代碼塊文本的整體高亮顯示,只需在兩個“```”符號之間輸入代碼,并在第一個“```”后標注對應的編程語言。Markdown 會基于相應的編程語言特性對代碼文本進行高亮。如圖3,分別編寫了C 編程語言和Python 編程語言的Hello World 程序。Markdown 文本對于各語言的頭文件、解釋器聲明語句、方法以及各類字符串常量分別用各類鮮明的顏色進行區分,便于快速閱讀代碼,知曉代碼運行邏輯。

圖2 使用LaTex 公式的代碼和樣式

圖3 C 代碼塊和python 代碼塊在Markdown 中的渲染效果
在日常教學中,放棄以PPT 展示的純理論課教學形式。采用機房實驗室授課,學生都必有一臺電腦。基于Markdown 編寫教案,將示例代碼穿插的寫入教案文檔中。上課時,利用同屏傳輸軟件InletexEMC,同步傳輸文檔內容給學生,按小節為單位講解教學,并現場示例代碼的實際運行過程。完成一節教學后,立刻讓學生動手實際操作,加強記憶。學生也可根據自己的理解,修改Markdown 教案,便于反復的回溯。
在基于Python 和R 語言編程的演示性教學中,更是可以用Jupyter Notebook 替代普通的Markdown 文件。學生可以直接運行文檔中的示例代碼得到結構,所見即所得,省去了復制文檔中代碼到自己編輯器中運行的繁瑣步驟[3]。
Markdown 因為其簡單文本標記的特點,原生支持各類代碼的語法高亮,非常適合在計算機信息類程序語言教學工作的作為承載教案資料的媒介,從而讓學生更快,更好的學習編程。