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