2014/01/23

Empower Through Education

籌備 PyCon APAC 2014 之際,我們尋找既有的 Brochure 資訊,發現 Python Software Foundation (PSF) 有個 Python Brochure Project,整理了一份 34頁的文件。簡單看了申請辦法,出錢 1500美金左右,可取得 480份。

Brochure 有一篇名為 Learning to Program with Python 的短文,說明 Python 如何被應用在教育領域。易學易用,是 Python 的特色,使得它適合用於中小學或大學入門程式設計的場合,它舉了 OLPC (One Laptop per Child)ExpEYES 兩個例子。

剛好這兩個例子,都有窮人教育工具的味道,在這裡反而比較少聽到討論了,找得到的 OLPC 討論,似乎也停在計畫已偏離初衷的批評,但這種討論方式,並無助核心議題的進展。我相信,這類系統裡的軟體和資訊教育工具,還是值得大家投入關注,期待 Open Source 或商業版本的成果,都能持續累進。

如果資訊知識與應用能力,是每位國民都該培養的技能,那麼程式設計的能力,肯定也在學習過程扮演一個角色。首先,程式設計的本質,在於解決問題,能夠條列執行方法或步驟,讓問題不斷被改善,本身就是設計一個程式。程式設計的學習過程,需要參照現實脈絡,先求科學邏輯的正確,再把成本效益的工程思惟納入,也就是說,解決問題的方法可能有多種,但適用的情境也可能不同,這也是現實世界的真實情況。如果這樣的定義說得通,那麼,視程式設計是資訊素養的核心訓練,實不為過。

程式設計概念的早期教育,不少人已從 K12 階段開始推動,這階段的學習,利用 Scratch 之類的工具,是合適的,但高中生到大一生,使用 Python 當通用式的入門語言,具備更多好處,我認為最關鍵的因素在於,並非每位學生都會走上程式設計的專業道路 (這要繼續學習更多語言和領域技能),但每個人後半輩子的生活與工作,都需要「收集資料、分析數據、連結資料庫或 API、認識網路原理」的相關能力,Python 的 Scripting 特性和豐富的函式庫,有助於投資最小力氣,獲得最大效益,我相信 Python 也是終身學習的好夥伴。

具體來說,不是每個人都需要寫程式碼,但每個人讀程式碼的機會肯定更多,為了解決問題,我們首先要做的事不是自己開發,而是分析自己的需求,尋找既有的合適工具,不足之處再動手客製化。實務經驗是,Scripting 語言更專注於處理問題的核心,型別或編譯的要求,對多數情境像是一種 Premature Optimization。