在眾多的圖形化編程語言或兒童編程學習工具中,由MIT媒體實驗室和其終身幼兒園團隊支持研發(fā)的Scratch (scratch.mit.edu) 算得上是中國地區(qū)最廣為人知的。Scratch的突出影響力不僅體現(xiàn)在注冊用戶超過680萬以及發(fā)布共享項目超過970萬這些數(shù)據(jù)上,更體現(xiàn)在大量出版的Scratch教程書籍、網(wǎng)友自建的Scratch論壇活躍度上,這在眾多的兒童編程教學工具當中無出其右。
Scratch針對的目標群體是8~16歲的兒童。而Scratch最突出的特點,便是提供用戶一套由積木系統(tǒng)組成的編程指令,積木類型包括以下10種:
類型 注釋 動作 移動角色、變換角度
外觀 改變角色外形,添加說話/思考框,改變背景,放大或縮小角色
聲音 播放音頻文件
畫筆 通過控制畫筆的粗細顏色和形狀來畫畫
數(shù)據(jù) 新建變量和鏈表
事件 設定運行代碼塊的驅(qū)動事件
控制 條件指令“如果……那么……否則”、“重復”、“停止”等等
偵測 角色可與用戶創(chuàng)建或從PicoBoard、Lego WeDo導入的環(huán)境互動
數(shù)字和邏輯運算 數(shù)字運算,隨機數(shù)字生成,且或非邏輯運算
更多模塊 自定義指令積木或外部鏈接設備控制模塊
來看一看Scratch的界面和操作
用戶在中間區(qū)域選擇不同的編程指令“積木”后,在右邊的代碼界面自行組合,隨后在左側可視化窗口看到代碼的運行結果。Scratch中指令積木的外形和顏色都根據(jù)編程上的語法意義區(qū)分了開來。比如“控制”類的積木(如repeat重復)是C字型的,意味著這類積木內(nèi)部應該放置其他積木(塊);輸出數(shù)字類型量的積木用橢圓形表示;輸出布爾量的積木則用六角形來表示等等。
Scratch開創(chuàng)了積木式編程學習模式的先河
Scratch在2003年首次推出了桌面版,2005年首次推出了網(wǎng)頁版,2007年向公眾開放并加入了社區(qū)分享功能,2013年推出了沿用至今的最穩(wěn)定版本Scratch 2.0,該版本同時支持網(wǎng)頁版和離線版。
Scratch開創(chuàng)了模式化、積木式編程學習模式的先河,并激勵了許多相似或衍生產(chǎn)品的出現(xiàn),如Blockly(Google于2012年公測發(fā)布)、SNAP!、Hopscotch、Tynker等等。而這種積木式的學習模式的原型,則是來自于Lego。
然而,在圖形化編程語言中,Scratch并非是真正的“老大哥”。事實上,Scratch受到了專業(yè)編程語言Action Script、Java Script以及針對兒童的初階編程語言Alice、Squeak、Edtoys等前輩的啟發(fā),并融合了各方的優(yōu)點。Scratch 1.1~1.4 是基于Squeak(Smalltalk-80的一個實現(xiàn))開發(fā)的,而Scratch 2.0則是基于ActionScript開發(fā)的,同時使用JavaScript引擎,并用Flash完全重寫。
從Scratch看什么是好的學習產(chǎn)品設計
Scratch開發(fā)團隊在項目創(chuàng)建之初,總結出一門好的編程語言應該滿足三個條件:低門檻(low floor),即容易上手操作;高上限(high ceiling),即允許使用者建立高度復雜的項目;寬壁壘(wide walls),即支持各類項目的創(chuàng)建,能滿足用戶的不同需求。為了達到這三點要求,Scratch在不斷更迭的過程中,在保證用戶終身免費使用的前提下,始終堅定了三條核心設計原則:程序更易修改(More tinkerable)、項目更有意義(More meaningful)、社交氛圍更濃厚(More social)。
程序更易修改
MIT媒體實驗室下的終身幼兒園團隊與Lego有多年的合作經(jīng)驗,參與過Lego Mindstorms和其他機器人產(chǎn)品的研發(fā)。開發(fā)團隊發(fā)現(xiàn),在孩子們搭建積木的過程中,他們會積極地動手嘗試,并在搭建過程中自發(fā)地改進和創(chuàng)造。
Scratch的代碼窗口界面刻意被設計成類似實物桌子的樣子,便是在模仿孩子們玩Lego時的場景,方便孩子們隨意拖拽編程積木在這個“桌面”上。配合Scratch交互性極強的編程環(huán)境,用戶只要一觸發(fā)代碼塊的運行,可即刻在左邊的可視化窗口觀察到運行結果,并可在運行過程中修改代碼,觀察修改后代碼對應的觸發(fā)結果。
這種學習模式與一般編程學習工具倡導的“自上而下的規(guī)劃(top-down planning)”相反,被稱為“自下而上的修補(bottom-up tinkering)”,這樣的模式可能會讓學習過程有些雜亂無章,但用戶根據(jù)動畫運行結果來不斷修改代碼,這種探索實驗式的學習途徑其實是更讓學習者感到舒適的。Scratch多次更新的過程中,也強調(diào)了通過這種模式培養(yǎng)孩子們“直覺思維(intuitive learning)”的能力。
項目更有意義
我們都知道,我們在做一件自己認為有意義的事情時,我們是最享受的,這時候?qū)W習也是最高效的。Scratch的開發(fā)團隊也深知這一點。因此,Scratch在開發(fā)之初非常關注兩點:多樣性和個性化。
多樣性是指Scratch支持用戶創(chuàng)建各類項目,不管是故事、游戲、動畫,用戶都可以根據(jù)自己的需求和興趣在Scratch上完成相應類型的項目。
個性化是指支持用戶在Scratch中導入圖片或音樂、錄音、畫圖等功能。這也是Scratch至今仍堅持采用有些過時的二維位圖技術的原因。因為只有在這樣簡潔單一的環(huán)境下,用戶的各式各樣的素材才能被充分地得到支持,項目才會充滿創(chuàng)造的無限可能性。
社交氛圍更濃厚
Scratch這個名字,靈感來源于DJ打碟時“scratching”的技巧,即“混合不同的聲音”。因此,Scratch一個相當重要的概念便是“remix”,即“重新混合”。這不僅指Scratch希望用戶通過組合代碼積木、圖片、音樂、照片等元素做出有創(chuàng)意的項目,更是指Scratch鼓勵大家在社區(qū)中互相學習,并通過互相修改、優(yōu)化對方的代碼來改進項目。
自Scratch推出2.0版本后,Scratch從一門編程語言轉變成了一個語言與社區(qū)并重的產(chǎn)品。Scratch社區(qū)已是Scratch不可分割的一部分,其活躍的社區(qū)氛圍也是Scratch達到如此大影響力的主要原因。
“人工智能之父”Marvin Minsky曾說過:LEGO has a great grammar but not much literature。意思是,盡管Lego有一套非常適合孩子們學習的模式方法,卻沒有提供太多讓孩子們可以借鑒的優(yōu)秀作品范例。Scratch 2.0新增的“一鍵分享”功能,便體現(xiàn)出Scratch對“再創(chuàng)造”理念的重視,這種“分享”、“再創(chuàng)造”的概念極大推進了學習者之間的合作以及對開源的理解。不少Scratch經(jīng)典項目便是由來自多個不同國家的孩子跨國合作完成的。當然,擁有超過40種語言的翻譯版本是這一切跨國合作的基石。
在自身影響力越來越大的階段,Scratch在2009年7月推出了針對編程教育者的論壇ScratchED,除此之外,無論是在三條核心設計原則還是目標群體定位策略上,Scratch都沒有改變,始終如一地堅持了它的產(chǎn)品初衷,把使命定位在培養(yǎng)孩子們的“Digital fluency”(指使用計算機語言流暢表達的能力)上。Scratch認為,編程只是幫助我們表達的一種媒介,而非謀生的一種手段。編程能力就和讀寫能力一樣,即便我們不會成為專業(yè)的程序員或作家,這些能力都是我們需要掌握的基本能力。
在這些核心理念的牽引下,Scratch在版本更新過程中,明顯多媒體功能和多線程編程越來越突出,而Scratch編程語言的限制卻相對越來越明顯。比如,Scratch 2.0版本加強了與外部鏈接設備的互動,包括基本的攝像頭、錄音設備以及LEGO WeDo、LEGO Mindsotrms、Arduino和Scratch板等等,增強了多媒體功能;然而Scratch 2.0版本只支持一維數(shù)組(即數(shù)列l(wèi)ists),盡管2.0版本和1.4版本一樣支持浮點標量和字符串,但字符串的可操作范圍會相對更少。
不過,Scratch畢竟只是孩子學習編程的工具,并非Smalltalk和Squeak那樣的全功能應用程序開發(fā)語言。而Scratch早期所受到的批評,例如“孩子們難以在沒有大人指導的情況下學會Scratch”,早已通過降低語言門檻和豐富Scratch的教程資源等途徑彌補了。也許Scratch還會受到更多的質(zhì)疑和批評,但它始終如一的使命感、極大的包容性以及博取眾長的更新能力,終究會成就它無限的成長空間,成為更有效、更具影響力的兒童編程學習工具。
推薦閱讀:
Scratch創(chuàng)始人:編程造就創(chuàng)想者!
2、芥末堆不接受通過公關費、車馬費等任何形式發(fā)布失實文章,只呈現(xiàn)有價值的內(nèi)容給讀者;
3、如果你也從事教育,并希望被芥末堆報道,請您 填寫信息告訴我們。