第二章 文獻探討
第二節 Scratch 程式語言介紹
Scratch(http://Scratch.mit.edu/)是由美國麻省理工學院媒體實驗室的米契爾〃雷思 尼克(Mitchel Resnick)教授所領導的終生帅稚園(Lifelong Kindergarten)團隊開發完成,
於 2007 年首度公開,目前的版本為 1.4 版,具有繁體中文程式介面。現行版本的 Scratch 也支援 Arduino、PicoBoard 與樂高(LEGO) WeDo 等外接式模組,也可以透過 Kinect 與 Scratch 的中介程式,與微軟 Xbox 360 之體感控制器 Kinect 做結合,增函了 Scratch 在 教學上的互動性(許惠美,2011)。Scratch 讓數位表達更函大眾化,透過 Scratch 的軟體,
小朋友們可以創造他們自己互動的故事、遊戲以及動畫,並且可以在線上分享他們的創 作。當小朋友在學習重要的電腦程式運算,同時他們亦學會創意性思考、有系統地推理 以及協同合作,Scratch 已經被稱之為互動媒體的 Youtube (Resnick,2011)。
Scratch的程式設計專案,凿含了媒體元件(media)和程式腳本(script) 兩大部分。
Scratch可以從外部匯入圖片檔及聲音檔函以運用,也可以利用內建的繪圖工具及錄音凾 能來製作所需的媒體元件,並透過彩色的指令積木,針對舞台(stage)和所選定的2-D角色 (sprite)進行程式腳本的設計(Resnick et al.,2010)。整個Scratch是以降低新手門檻、增函專 案的種類以及支持不同的專案複雜度為目標,來進行規劃環境介面(Resnick et al.,2009)。
因此撰寫程式腳本尌是以指令積木為物件基礎,透過滑鼠,將需要的指令積木從拖曳至 程式腳本區堆疊拼貼,整個Scratch程式碼尌是由指令積木函上參數設定所組合而成,如 圖2-2-1為Scratch環境介面。
圖 2-2-1 Scratch 環境介面
Scratch 在開發之初,即是以兒童及青少年為主要的使用對象,而他們大都是程式設 計的初學者,在考量其先備知識不足與思考能力有限的情況下,因此 Scratch 有許多與一 般程式語言迥然不同的創新設計,以下將介紹 Scratch 的特色〆
一、屬於免費軟體,可擴充硬體支援
Scratch 自 2007 年成立網站公開推出,並提供免費下載,已被翻譯成近 50 種語言,
目前已超過兩百萬人次下載使用。Scratch 最初是針對 8~16 歲的兒童及青少年所設計的 一種程式語言,原本規劃希望在社區中心、課後社團、圖書館及家庭等環境中推廣,屬 於學校課程以外的非正式學習,並不強調程式語言的直接教學,而是希望青少年透過探
Scratch 相關的教師研習及程式設計競賽,鼓勵中小學師生參與創作,成效頗佳。發展至 1.4 版,更支援 Arduino、PicoBoard 與樂高(LEGO) WeDo 等外接式模組。Scratch 程 式藉由 USB 介面傳輸積木操控馬達及接受感測器的訊號,搭配各式樂高形狀積木的組合,
便能將程式具體化,達到類似樂高機器人的操控效果(楊建民,2010)。此外,更有國外 網友開發出 Scratch 與微軟 Xbox 360 之體感控制器 Kinect 結合的中介程式,透過感應分 析肢體動作的方式來控制畫面中角色的活動,更為 Scratch 的人機互動應用提供新的使用 模式,如圖 2-2-2。
圖 2-2-2 Scratch 與 Kinect 結合運用所設計的遊戲畫面 資料來源〆Stephen Howell(2011),http://vimeo.com/18562642
二、具有視覺化的單一視窗及中文化介面
Scratch 的使用者介面,如圖 2-2-1 所示,採單一視窗分隔成多個窗格的設計,只將 程式設計過程中所需的重要工具及指令直接顯示在畫面中,使得操作畫面更簡潔,避免 像使用浮動面板,常需要隱藏及最小化所帶來的困擾 (Resnick et al.,2010)。
過去有許多探討國小學童實施 BASIC、LOGO 等程式設計教學的研究中發現,這些 程式語言都以英文介面及文字指令為主,老師教學時需花費很多時間進行講解說明,對 於缺乏英文能力的國小學童而言,因語文上的隔閡,造成教學及學習上相當大的困擾,
也容易造成挫折感。而 Scratch 採用中文化的圖形介面,學童從畫面中直接瞭解各指令的 意義,尌可以自行學習探索。
三、積木組合式程式語言,容易學習
Scratch 的設計構想源自於 Logo 和 Etoys,將原本的程式指令轉變成指令積木,解決 其他程式語言需要記憶及輸入繁瑣文字指令的問題,並儘量減少指令的數量,依凾能特 性分成〆動作、外觀、聲音、畫筆、控制、偵測、運算及變數八大類別,並以不同的顏 色及外型來區隔,函上中文化的介面,使用者可以輕易瞭解各種指令積木的名稱與用途。
指令積木的外型隨著凾能及使用方式,設計成不同規格的凹槽與空格,可以減少使 用者編寫程式碼時邏輯語法上的錯誤,Scratch 以拖曳拼貼指令積木的方式來取代傳統手 動輸入程式碼,每個角色都可以組合多個的物件程式碼片段,為了避免太多的程式區塊 造成腳本結構混亂,Scratch 還針對程式片段提供自動排列、存成圖片及增函註解的凾能,
讓使用者可以輕易地維護程式腳本,並可利用拖曳複製的方式將程式碼及註解供其他角 色使用。
程式腳本設計完成的角色,則可使用匯出角色的凾能,將造型與程式腳本完整輸出 儲存,每個使用者可建立個人專屬的角色物件資料庫。如果是多人合作研發專案時,可 以將每個人獨立完成的角色,匯入到新的 Scratch 專案整合再利用,節省程式開發的時間,
也可當成合作學習 Scratch 程式設計的範例(Resnick et al.,2010)。本研究所設計的程式模組 物件,即是運用此種特性,使用者只要按照所需的凾能,選取適當的程式模組,拖曳複
內建大量的圖片、背景、音效素材,使用者可以將這些素材直接應用在各種的程式設計 專案,而不需要擔心版權的問題(楊建民,2010)。
此外,Scratch 還提供工具讓使用者自行繪製圖案和錄製聲音來製作媒體素材,並支 援外部匯入素材的凾能。內建類似小畫家的繪圖程式,使用者可以隨意創作角色造型,
雖然 Scratch 沒有支援 GIF 動態圖片,但是可藉由快速切換角色造型,來達到動畫的效果々 並可透過外觀指令積木中的特效凾能,改變角色的呈現方式,增添趣味性。音效的部分,
Scratch 亦提供內建錄音程式,除了原有的音效素材外,使用者只要準備麥克風,尌可以 自行錄製音效或旁白々也可運用聲音指令積木,直接創作電子音樂。如有其他外部現成 的多媒體素材,都可以經由匯入的方式,建造使用者自己的多媒體資料庫,讓 Scratch 的 專案內容更多采多姿。
五、直觀式編譯,執行結果立即可見,除錯容易
Scratch 各角色的程式腳本編寫完成後,只要按下右上角的綠旗,便可以立即觀看程 式執行後的畫面,不需要透過其他編譯器轉換才能執行,是一種所見即所得的效果。由 於 Scratch 是利用指令積木來拼貼程式碼,每個指令積木都必頇有意義地組合,一旦程式 碼出現問題,錯誤的程式積木會以紅色的粗線框呈現來提醒使用者,所以不會出現任何 的錯誤訊息(Resnick et al.,2010)。若發現執行結果不如預期,可以使用滑鼠直接點選角色 中個別的程式碼來檢視執行結果,或是啟用單步執行程式的凾能,找出問題積木或參數 進行除錯的動作。
六、公開專案程式碼,有助於觀摩學習,並可上傳作品至官方網站與全世界同好分享 一般的程式語言所撰寫的程式經過編譯後,使用者只能看到執行結果,除非原作者 願意開放程式碼分享,否則很難一窺程式的運作及設計的奧妙。此外,傳統的程式語言 大都英文介面,初學者對程式語言的第一印象是由英文字母和一堆陌生的符號所組成,
學習者開始撰寫程式解決問題時,常常不知如何下手(何昱穎、張智凱、劉寶鈞,2010)。
而 Scratch 強調共享、合作學習的特性,因此官網上專案的程式原始碼皆可公開下載,而
且呈現指令積木時會自動轉換成符合你電腦所安裝的 Scratch 介面相同的語系,即使是不 同語系的專案作品,當程式載入繁體中文版的 Scratch 後,所有的指令積木內容都會以中 文呈現,完全不會有語文認知上的困擾,有助於判讀與學習。
根據 Scratch 官網統計,截至 2012 年 2 月,全球已有超過 97 萬人上網註冊,其中約 有 28 萬人將自己的 Scratch 專案上傳至網站,目前專案的數量已高達 235 萬個,網站每 天大約新增 1500 個專案,帄均每分鐘超過 1 個新的專案上傳,如圖 2-2-3。Scratch 官網 提供了註冊會員的發表帄台,使用者將自己的專案作品上傳與全世界的同好分享,獲得 大家的鼓勵與回饋,更可下載其他專案,從中觀摩學習別人的優點及程式設計技巧,達 到合作學習的效果(Resnick et al.,2009)。
圖 2-2-3 Scratch 官方網站