胡崇偉:熱愛 Python 的鐵桿傳教士

在本次巡迴中主講「指令式編程教育」的胡崇偉,在開源江湖上以「marr」之名為人所知,是 Python 語言的鐵桿傳教士。胡崇偉多年來投入 Python 社群,除了是程式碼貢獻者,他的身影也出現在歷屆 Python 年會等大大小小社群活動之中;甚至自我介紹時,頭銜掛的也是「Python 愛好者」。以下就請胡崇偉來跟我們談談,何以 Python 如此令人忘情?以及我們如何透過 Python,連結編程教育的現況與未來。

我們不愛貢獻,除非為愛貢獻

開放原始碼(Open Source)是當今相當流行的詞彙,一般用來描述「一種在產品的出品和開發中提供最終源材料」的生產方式,有越來越多軟體及應用,採用開放原始碼及協作的方式進行開發;不過對胡崇偉來說,他更想突顯 Open Source 背後的黑客文化和社群故事,大大小小的社群坐落其中,黑客們好比武功高強的俠士在江湖上闖蕩,依循自己的喜好為社群和專案作出貢獻。

胡崇偉自 2000 年接觸 Python 後,一見如故,他形容就像「難以忘懷的初戀」感覺,決心為社群貢獻,起初透過文件或小型活動來推廣 Python 知名度,後來成為 Plone 軟體的貢獻者;2012 年起,與社群夥伴一同籌辦台灣 Python 年會(PyCon),並規劃教育訓練的課程;年會至今舉行了 6 屆,一年比一年更熱烈,足見 Python 在台灣已打開知名度,迎向新階段的機會和挑戰。「簡單地說,自己大部份時間是在讀人,少部份時間才讀程式,在分享 Python 社群文化之餘,一直思考怎樣能擴大 Python 的影響力。」胡崇偉總結道。

文字式語言:Scratch 之後,通往新世界的門

在教育部的「108課綱」裡,將資訊和生活科技兩科劃分到科技領域中,並在國高中列為必修;目前在校園編程教育中被廣泛使用的Scratch,是帶領學生入門的視覺化程式語言,但若要繼續深入學習,進而和實務接軌,遲早都必須進入到文字式語言。

對此,胡崇偉表示,Python 是最適用於教學的文字式語言,尤其搭配 Micro:bit 這類工具,更容易發揮綜效。Python 具有易學、易用、通用的特性:「易學」是指 Python 語法簡明直覺,接近自然語言,可延續自既有的英文和數理學習經驗;「 易用」是指 Python 具備豐富的函式庫和工具組,讓使用者容易專注於解決問題本身,不必花太多力氣在旁枝細節;「通用」是指 Python 非常受到歡迎,在全球也被廣泛使用。此外,Python 的延伸性很強,除了可運用在資訊領域的熱門課題,如資料科學、機器學習等方面,我們甚至在物理模擬程式和影像醫學等領域,也能夠看到 Python 的身影。

不過,在教育現場,當學生從圖像的 Scratch 轉移到文字的 Python,常會一些水土不服的情況,胡崇偉說:「語法上的適應,是優先會面對的挑戰,接著是語意的掌握,或是怎樣切合實務脈絡, 讓程式碼變得更簡潔。」除了持續練習之外,胡崇偉建議學員要爬梳自己的思維過程,分辨哪些是已經懂的基礎、哪些是卡關所在;藉由把學習歷程寫成線上文件,或參與線上論壇的討論,都是很好的方式。

而對於 Python 與 Micro:bit 的結合,胡崇偉說:「Python 是個通用化的工具環境,Micro:bit 和它所使用 MicroPython 則是個特化的學習環境,方便學員專注在教學專案上,快速獲得成就感。」 熟悉 MicroPython 基本語法和操作方式後,可以延續到 Python 的環境,包括資料分析、機器學習等廣大模組。」

運算思維:領悟劍意而非滯於劍招

話說回來,並不是每位孩子都有興趣或能力,將來要成為軟體工程師,因此在國民教育的階段,我們要帶給孩子的並非技術、而是素養;其中,運算思維( Computational Thinking)是很重要的一個部分。簡單地說, 運算思維指的是運用電腦可以理解的思維,去剖析問題、制定方案、解決問題的一套方法,它具有四個要素:拆解(Decomposition)、找出規律(Pattern Recognition)、抽象化(Abstraction)、設計演算法(Algorithms)。

就如同武俠小說中所描述,劍術大師是「不滯於物,草木竹石均可為劍」,運算思維也能運用在資訊科學以外的各種領域。有人以數學為例,嘗試讓運算思維能夠具像化:用一連串的點來模擬曲線、用點陣圖儲存現實生活中的景色、用遞迴的方式逐漸逼近平方根…等;「然而真正的挑戰在於,即使你舉了這些例子,一般人還是很難有感,必須透過拆解科技產品、利用常識反覆試誤、經歷一系列的體驗,才能體會運算思維的完整意涵,並從『溝通』、『做實驗』這類的能力學習起,培養運算思維的能力。」但胡崇偉提醒道,基於以往「導入建構式數學」、「培養科學/媒體素養」的經驗,我們幾乎可以預見, 在台灣,運算思維可能帶來的衝擊與利益糾葛。

建立起面對未來挑戰的立足點

坊間有許多教育者或家長,正焦慮於如何教「資訊科技」,才能讓孩子在這門「科目」上得到好表現;然而胡崇偉拋出另一個問題:「為什麼不是把科目打散,讓學生探尋自己想要的生活,從中發掘現實生活的問題,再由實際的生活達人來介紹他們是怎樣應用運算思維呢?甚至,如果僵化的教育體制,本身就是個問題,我們又可以怎樣串連合作,應用運算思維解構它呢?」

「從百年教育的尺度來看,我們必須經歷兩三代的努力,才能完成典範移轉;面對時代巨輪,將運算思維紮根成為未來國民的能力素養,已是我們無所迴避的挑戰。」胡崇偉以一名家長的角度指出,台灣的教育問題,根結之一是教學和評量方式的窄化,陳義高尚的課綱,在僵化的評量方式下,顯得格格不入。胡崇偉期許道:「數理英文、溝通能力、團隊合作的基礎紮實後,程式教育才能夠順利奠基成長,少點商業軟體,多點開源文化,我們才能讓推動的路走得長久。」