作者:唐瑤瑤 / 臺灣大學計算機及資訊網路中心程式設計組程式設計師
鑑於十二年國教107課綱納入資訊教育,並將程式設計列為國、高中之必修課,以及英美等國考慮5歲開始將程式設計列為必修等趨勢,使得目前家有國高中生,同時也以coding為工作的筆者,因而衍生出程式教育是否應往下紮根之看法。
亮亮升小六那一年參加慶齡工業中心辦的樂高機器人NXT程式營,第一天下課回來我興奮地問(對,是我很興奮):你們用什麼語言寫機器人程式啊?他正在看書痴痴地笑著、頭也不抬回我:用英語啊,媽媽。
笑話講完了,我想教孩子寫程式的熱度也在那一年漸漸被澆熄……
自己是在進入職場後真正開始寫程式(大學、研究所時期真的不能算),從寫驅動程式、微軟MFC windows application開始,然後是開發Web Application、Mobile App。使用過的程式語言有C、C++、C#、PHP,一直到最近幾年愛用的JavaScript,至於現在,我想好好學會Swift、Python。
程式師通常是在工作壓力下精熟某個語言的,因為就是要解決接手的案子,或是因應新的領導政策等。但其實現在網路上提供的協助非常多,像是StackOverflow,只要關鍵字下得精確(回到亮亮的回答:使用英語),幾乎都能找到相關的解決辦法。至於程式語言自學部分,各門各派都有完備的線上免費教學文件,程式碼也都可以直接拷貝下來修改應用,只要有心想學,入門門檻並不高。
然而在coding這麼些年後,會發現任何一種程式語言本身都不難,甚至基本精神架構都差不多。通常困難點是對問題了解的程度(包括拆解問題模組、解決問題的能力)、問題的複雜度、系統流程控制、甚至是使用者因素。所以個人認為數學邏輯力是寫程式的基本能力,但除非你是要幫華爾街寫演算法,否則並不會用到很艱深的數學喔。
回到這篇程式教育的主題,我提出下列問題自問自答:
問題一:為何要學寫程式?
如果想從事職業是程式設計,那當然就是得學。寫程式是一個和電腦溝通的過程,程式語言目前已經被定義為第二外語。程式有bug即代表和電腦溝通不良,此時程式師會需要檢查是語法上的錯誤(Syntax error)或邏輯上的問題,導致電腦不懂指示而無法輸出或是錯誤的輸出。程式師需要去debug,這才是考驗技術及經驗的部分,而這個經年累月過程的確可以培養邏輯判斷力。
但若不想以此為生,可以多學些其他語言,像是英語、西班牙語、德語、越南語等,和真實的人類溝通要比和電腦溝通有趣,不要把自己侷限在一方螢幕裡。再來最重要的部分,寫程式的目的是要解決問題、幫助人類,並不是要造成破壞,或者成為犯罪集團的幫兇。
問題二:為何兒童要學寫程式?
最常得到的標準答案是學習解決問題的能力,以及邏輯力的訓練。其實個人針對兒童時期的觀察,邏輯能力其實用紙筆就可以,桌遊、紙牌都是很好的訓練。休閒娛樂在真實的人群裡才有溫度,虛擬的網路世界會造成疏離及冷漠。我懷疑兒童沒有更值得花時間去做的事嗎?像是學習舞蹈、樂器、親近大自然或飼養小動物?解決問題的能力更應該在日常生活及大自然中訓練,只是我常見到一台平板就能讓孩子安靜的度過一天。
問題三:兒童用什麼方式學寫程式?兩歲發平板是怎麼回事?
坊間常見廣告詞說從遊戲中學程式,那麼到底是在寫程式還是玩遊戲呢?Drag and Drop堆積木式的程式教學,恕我駑鈍,實在看不出所以,但兒童長時間近距離盯螢幕很容易會造成視力問題。
Python或JavaScript這種不需編譯可以直接執行看到結果,可能是較理想的程式教育入門。但話說回來,如果兒童連if、else、end、while等英語單字意思都不懂,或者在數學中的= equal,和程式中的 = assign 會被混淆的話,建議不需要過早接觸。
若兒童在沒有大人的監督指導下使用3C,極可能造成<<翻轉過動人生>>作者Todd Rose於書中所說,關於電腦教育軟硬體廠商發送平板的問題:於是貧窮兒童有了電腦,而富家兒童有了電腦與老師。
可以不用電腦教程式嗎?可以的,這個https://code.org/curriculum/unplugged 就是針對4歲以上兒童提供不插電(Unplugged)課程示範。
最後是我為何要嘆息?回到教育現場,我分別經歷過孩子們公立國小、國中及高中階段,我問他們學校電腦課在做什麼?答案幾乎都是老師一講解完,切回給各自螢幕控制權時,孩子們立刻玩起線上遊戲、上社群網站聊天、甚至是上了兒童不宜的網站。
結語
「未蒙其利、先受其害」。兒童在使用3C、電腦時,若沒有家長在旁督導(老師都不見得顧得到),他們很快會受這虛擬世界吸引,商人餵他們什麼都直接買帳,完全沒有過濾也不需要思考。我們本來希望能培養邏輯觀念強、會思考的未來人類,結果很可能是提早毀了他們的身心。個人的建議是在兒童閱讀能力及數學邏輯基本觀念未培養完成前,請不要給他們電腦(3C)。先學會親近自然、愛好藝術、多多閱讀會是我個人的選擇。兒童程式力?等英文都學會了再說吧!
參考網頁
1、新課綱「程式設計」,學邏輯解問題
http://epaper.naer.edu.tw/index.php?edm_no=134&content_no=2672
2、愛沙尼亞程式教育:學程式語言,比第二外語還簡單
http://topic.parenting.com.tw/issue/2016/coding/article-12.html
3、CS Fundamentals Unplugged
https://code.org/curriculum/unplugged
4、人人搶學程式,美國工程師:「Coder」不等於「Engineer」
http://www.inside.com.tw/2016/05/12/please-dont-code
5、教孩子們一個 「實用到二十二世紀」的程式語言
http://ckhung0.blogspot.tw/2016/04/learn-to-code.html