軟體工程/遊戲設計/隨筆
subtitles 香檳散記 access_time 2019-09-13

常常覺得知識是很有趣的,但教育者本身並不關心人。即便是我這樣對程式有愛的學習者,到了CS學院上課,也常常覺得折磨⋯⋯

以下圖為例,取材自最近上課的講義。上方是投影片截圖,下方是我整理出來的筆記。這張投影片的主題是透過一個簡單的遞迴函式,示範OCaml語言的遞迴語法。

pic

這張投影片在課堂中大概只會使用30秒。但是否理解這30秒的內容,卻關乎接下來的學習效果。

計算原理就只是國中數學的乘法公式——乍看之下卻像是一種艱深定理的證明。但只要經過簡單的排版與上色,就可以大幅降低學生消耗的認知能量。我認為,不論你是不是程式熟手,都不該浪費能量在混亂的資訊中。

以下是我覺得可以做出的改變:

  • OCaml有許多宣告函式的語法,我換了一個最靠近C家族的(因為學生一定學過)。並透過排版與縮排讓他結構上更容易與已有的知識連結。

  • 使用等寬字來區分(可交給機器的)程式碼與(不可交給機器的)自然語言。

  • 使用等寬字後,我們可以輕易地做出上下整齊的排版空間。並將將後兩句switch概念的語法進行同質性的排比。第一個 | 符可加可不加,但個人偏好會加。

  • 使用桃紅色標明這則案例的關鍵字rec。

  • 使用橘色區分參數n。而n一但被標示出來,match與with便具備了關鍵字的隱喻。

  • 使用灰色標示註解——學生甚至不需要知道OCaml是使用(**)作為註解符這件事。

  • 使用黃色螢光筆標示出函式的遞迴點。

  • 井字號(#)為REPL工具的prompt字符,但其實在教學的上下文中,根本不需要使用——使用的結果就是讓學生copy代碼時如果沒有略過#,會得到錯誤。

最後還是想讚嘆Python當初把縮排納入語法的設計——這堪稱是科技對人類的無上關懷。考量到「程式更常被閱讀,而不是撰寫」這件事實,Python讓你無論怎麼惡搞,都得處理好排版;而一但你處理好了排版,其實也就沒那麼惡搞了⋯⋯

而世界的現實似乎就是,大學往往是教天才的,不是教笨蛋(如敝人)的。更廣一點來看,這其實也反映了大學體系強迫頂尖研究者同時也必須教學的弔詭之處。

Topic Tags
香檳散記