點閱率 | 2111 次

程式 X 創造 - 讓我們的下一代開始寫程式

文/陳俊廷 


近兩年來,在科技大廠各巨頭與新聞媒體的推波助瀾下,興起了人人學程式設計的風潮,美國總統歐巴馬在年初的新政見中提到,將在未來3年內投入40億美元用來推廣程式教育,台灣政府也搭上這股風潮,準備在2018年上路的「12年國教課綱」中納入程式設計課程,目的希望台灣也趕上這波教育趨勢,培養未來人才。

 

 │使用 ≠ 精通│

MIT Media Lab團隊的計劃執行長Mitch Resnick在一場TED的演講< Lets teach kids to code >中提到1980年後出生「N世代」的年輕族群由於成長過程與網路、智慧型手機及平板電腦等科技產品緊緊相依,常被認為是擅長運用數位科技的世代。但Mitch Resnick卻對這些說法提出質疑,他認為年輕人使用這些科技產品上網、打電動、傳簡訊,並不代表『精通』了這些科技。他認為所謂的「精通科技」,並不是指人們與新科技「互動」的能力,而是「創造」新科技的能力。前者好比閱讀,後者卻像寫書一樣,不僅需要高度的創造力和表達力,也如其字面所形容的一樣,涵蓋了「寫作」的技能,想創造新科技,就必須學習撰寫程式語言。

 

 │創造科技,從小紮根│

讀者們有沒有聽過愛沙尼亞(Eesti Vabariik)這個國家,愛沙尼亞身為波羅的海三小國之一,全國人口約130萬,比台北還少,但你知道嗎,知名的通訊軟體Skype就是出至於這個國家,她也是首個開放普選線上投票的國度、以及最早全面 e化的國家之一,同時也是全球第一個將程式語言列入小學一年級必修課程的國家!

 │ 愛沙尼亞共和國(來源:google map)

 

2012年,由愛沙尼亞共和國政府出資7萬歐元,與民間企業一起推行了名為「程式老虎」(ProgeTiiger)的計畫,當時全國中有20間國中小學的教師學生參與程式老虎的計畫。令人驚艷,不到10歲的小朋友已經有能力透過Scratch拼湊出一個小遊戲,或是使用intelligent brick 造出簡單的程式,指揮樂高機器人 Mindstorms。

 │ ProgeTiiger(圖片來源:http://progetiiger.ee/)

 

不只小國,美國總統歐巴馬最新政策「Computer Science for All」預定將在未來3年內投入40億美元資金到全美國學校,來增強電腦科學教育。英國政府也投入50萬英鎊,發展「Year of Code」計畫,從5歲開始推廣學習程式語言。

 │ Year Of Code官方網站(圖片來源:http://www.yearofcode.org/)

 

西班牙、法國、奧地利、保加利亞、捷克、丹麥、匈牙利、立陶宛、馬爾他、愛爾蘭、波蘭、葡萄牙、斯洛伐克等國也早已將程式設計納入課綱。芬蘭跟比利時更預定將在2016年起將程式列為核心課程,足見國外對程式設計的重視。

 

 │程式設計的門檻很高?│

早期學習程式設計,首先要從認識語法開始,你必須要先知道什麼是變數、判斷式、迴圈、函式,進一步則會進入到OOP (Object-oriented programming) 領域,然後可能還需要了解什麼是UML(Unified Modeling Language)、Unit Test等,要學的事情非常多,所以程式設計一向被認為是一門艱深且不容易接觸的課程。

 │ 對一般人來說,程式就像是一堆密密麻麻的文字集合體,讓人充滿恐懼

 

隨著科技的進步,在太空梭都已經上到火星的今天,程式語言早已不是大家刻板印象中那樣艱澀難懂。例如,蘋果的Swift就是以易學易用作為考量,如果你是一個有經驗的工程師,那可能只需要看看說明手冊就能輕易上手。

 │ Swift (圖片來源:https://developer.apple.com/swift/)

 

除了簡化標準程式語言外,視覺化程式也是近幾年的大熱門,透過將專業的程式指令轉換成簡單的積木方塊,只要將積木方塊拖曳組合就能簡單的完成程式設計,大大的降低了程式設計的門檻,目前較知名的有Google推出的Blockly跟MIT(Massachusetts Institute of Technology )推出的Scratch,下一章節將簡單介紹目前熱門的「視覺化程式語言」。

 

 │可視覺化的程式│

圖形化程式(或稱視覺化)除了有進入門檻低的優點外,對於邏輯訓練也有一定程度的幫助,相當適合教育用途,目前最知名的視覺化程式非Scratch莫屬,其他還有LEGO MindStorms Education NXT-G(可參考筆者先前寫過的電子報)、Google Blockly等也都是相當知名的圖形化程式。

Google Blockly

Blockly是一款由Google推出的視覺化程式語言,Blockly可以將視覺化程式轉成javascript、python、php等常見的語言輸出,適合有一定程式基礎的人使用,另外Google也推出了名為「Blockly Games」的教育課程,透過Blockly Games,或許不會真的學會寫一個App 或網頁的程式語言,但可以了解程式運作的基本邏輯,當作未來程式學習的準備當作未來程式學習的準備。

 │ Google Blockly(圖片來源:https://developers.google.com/blockly/)

 

Scratch

視覺化程式中最知名莫過於Scratch了,Scratch是由麻省理工大學媒體實驗室終身幼稚園組(the Lifelong Kindergarten group at the MIT Media Lab)在2006年研發出來,主要是協助8-16歲的兒童學習創意思考、協同合作及系統性思考,所發展的一套開源的程式設計自由軟體,當然也適用於各年齡層的人使用。

 │ Scratch專案:The Pico Show: Intro(圖片來源:https://scratch.mit.edu)

 

 │ 適合5歲孩童的ScratchJr (圖片來源:https://www.scratchjr.org)

 

 │網路的力量│

台灣常自許是個科技島,但在程式教學方面卻明顯慢人一步,當國外已經起跑好幾年了,我們才開始「研議」將程式設計納入課綱,且根據Hour of Code的資料,台灣的教育資源大部分集中在大都市,偏遠地區的孩童更加沒有機會接觸程式設計。

 │ 程式資源集中在大都市,凸顯了台灣教育資源分配不平均的問題(資料來源:https://hourofcode.com/us)

 

幸運的是,台灣的網路建置相當完善,網路上有許多的網站都有提供免費的程式設計課程,善用網路上的資源,也能讓較偏遠地區的學童接受完整的程式教育,以下簡單介紹一些知名的線上學習網站。

1.Hour of Code (https://hourofcode.com/us)

Hour of Code是由非盈利性組織「Code.org」所提供的一個免費程式教學的網站,上面有許許多多的程式語言學習課程,結合卡通及動畫,活潑的內容讓很多小朋友可以從小開始學習寫程式。

 │ Hour of Code (圖片來源:https://hourofcode.com/us)

 

2. Codecademy (https://www.codecademy.com/)

Codecademy是很知名的線上免費學習網站,可以學到的語言非常多種:HTML、CSS、Javascript、jQuery、Python、Ruby、PHP等。

 │ Codecademy (圖片來源:https://www.codecademy.com/)

 

3. Khan Academy可汗學院 (https://www.khanacademy.org/)

由Salman Khan創立的非營利教育機構「可汗學院」,現於Youtube有超過5,600部教學影片,內容包羅萬象,有數學、歷史、醫學、金融、物理、化學等,當然也有涵蓋程式設計課程。

 │ Khan Academy (圖片來源:https://www.khanacademy.org/)

 

4. treehouse (https://teamtreehouse.com/)

treehouse的課程多是實用技能專案,如APP的開發、架設wordpress等,要注意treehouse是付費網站,每個月25美元。

 │ treehouse (圖片來源:https://teamtreehouse.com/)

 │結語│

松本行弘先生在他的書中< 松本行弘談程式世界的未來 >談到,隨著電腦的價格不斷下降,未來可能的景象之一,就是:「至今還沒用上電腦的地方,也會開始嵌入電腦」,可以預測的,程式能力將會越來越受到重視,或許擁有程式設計的能力,在未來將會成為求職的基本條件,就如同現在操作office的能力一樣。


│資料來源

宜蘭縣教育支援平台:http://blog.ilc.edu.tw/blog/blog/1279
Scratch官方網站:https://scratch.mit.edu/
Google 玩遊戲學程式中文化線上課程Blockly Games:http://www.bnext.com.tw/ext_rss/view/id/1562129
視覺化程式語言的未來:http://www.ithome.com.tw/voice/93114
嘉義市國中小網路競賽專區:http://race.cy.edu.tw/client/
Hour of Code:https://hourofcode.com/us/zh
Codecademy:https://www.codecademy.com/
Khan Academy:https://www.khanacademy.org/
treehouse:https://teamtreehouse.com/