鄧江華
編者按:在科技發(fā)展日新月異的今天,信息技術教學已經(jīng)遠離了開、關機還需要反復講解的時代,三歲孩童熟練地擺弄著iPad已非奇事。自策劃了“Scratch來了”這一專題之后,編輯深刻感受到研究程序語言的老師的可愛,他們的執(zhí)著、他們的探索,使得程序教學不再那么枯燥,煥發(fā)出勃勃生機。因此,雜志特別策劃了這一專欄,將陸續(xù)刊發(fā)一些程序教學領域有代表性的教學實踐。也期待更多老師投身到程序教學中去,通過自身的踐行,推動程序教學的復興。
本期,鄧老師將就“類Scratch軟件群”這一概念進行詳細闡述,如需更進一步交流,請@鄧老師的郵箱:123412387@qq.com。在此,特別感謝吳俊杰老師的熱情支持。
Scratch 2.0測試版就要來臨,我們懷著激動的心情在等待。一方面Scratch 2.0使用Flash技術重寫代碼,圖形也矢量化了,讓作品更加流暢和便于網(wǎng)絡分享。在功能方面更是有了很大提升,如視頻互動、在線數(shù)據(jù)庫、在線編輯存儲,自定義函數(shù)功能、支持更多的硬件等。而另一方面,工作組更注重知識產(chǎn)權,加強社區(qū)經(jīng)營,與LEGO商業(yè)合作,不再支持開源硬件等。讓很多想?yún)⑴cScratch教學的老師左右為難,舉棋不定。擔心如果我們積極推廣教學后,2.0商業(yè)化了怎么辦?
其實Scratch從誕生開始就不孤獨,它是由開源軟件Squeak 2.8開發(fā)而來,而這一項目已經(jīng)有35年的歷史了。它的界面是卡通的,使用圖形化編程,適合兒童和初學者學習電腦編程?!癘LPC(One Laptop per Child,每個孩子都有一臺電腦)”項目,在向全世界貧困兒童捐贈的100美元筆記本電腦中就安裝了這個軟件的一個集成版本EToys。開發(fā)它們的主要程序語言Smalltalk更是來自上世紀70年代的古董級的編程語言,至今都還有著頑強的生命力。在2012年11月,Scratch在編程語言排行榜上名列37位。而它們的編寫靈感都來自麻省理工學院人工智能研究部的海龜編程——LOGO。
基于開源軟件編寫的Scratch,遵循開源軟件的協(xié)議,采用了最為寬松的MIT協(xié)議(麻省理工學院開源協(xié)議)——開發(fā)組織除了保留對“Scratch”名稱和“小貓”LOGO的權利外,公布源碼,允許任意修改、發(fā)布、傳播。最新的官方版本是1.4版。而根據(jù)開源項目的開發(fā)模式和軟件發(fā)布過程,一般來說,開發(fā)的進程不會很快,從α版到β版再到正式版,所以我們的等待可能會很久。但是,好在目前已經(jīng)有不同的改進擴展版本在網(wǎng)上流通供我們選擇。下面我們來一一認識它們吧!
● 加州大學伯克利分校的版本:BYOB
軟件群中的典型軟件是采用Scratch源碼修改而來的,最典型的是BYOB。BYOB的原意是:建立自己的程序塊(Build Your Own Blocks),是由德國律師Jens M nig和加州大學伯克利分校講師Brian Harvey這樣兩位Smalltlak編程高手為Scratch編寫的擴展版,增加了高級函數(shù)和自定義函數(shù)功能,讓Scratch成為真正的面向對象編程工具。其中,Jens還設計了Scratch的封裝程序ChirpCompiler (Scratch2Exe),能將作品封裝為可執(zhí)行文件。這一功能使得Scratch可以編寫獨立運行的程序項目,也為一門編程語言的完整性做出了貢獻。BYOB擴展的內(nèi)容主要有三個。
1.分享菜單改為編譯項目和局域網(wǎng)共享功能
在編譯項目時,文件名一定不要使用中文,不然容易出錯。編譯好的文件在我的文檔中,圖標如下,如果想使用自己的圖標,請去下載單獨的封裝程序ChirpCompiler。
BYOB的聯(lián)網(wǎng)功能相當強大,首先在一臺電腦上運行BYOB,編寫好代碼,選擇設置為主機,如果彈出本機的IP地址窗口,表示設置成功。然后,從另一臺電腦上也啟動BYOB,選擇聯(lián)接到主機,會彈出IP地址的輸入框,輸入主機的IP即可,這時選擇主機菜單上的“分享這個角色”,聯(lián)接到主機上的BYOB程序里,將會增加這個角色及腳本,包括變量和鏈表。這一功能有助于教師講解多角色多任務的復雜程序,教師可以分時間分步驟地邊講解,邊發(fā)送原程序給學生,易于學生閱讀與理解。同時也為多人共同編寫程序提供了重要的技術保障(如圖1)。
2.控制塊的變化
BYOB在控制塊中增加了調用塊和調試塊,偵測塊中增加了事物塊和屬性塊,數(shù)字和邏輯運算塊中增加了字符轉換及克隆程序塊,有些功能尚在測試階段,老師們可以自己實踐。如果想體驗BYOB更豐富的程序塊,請打開BYOB例子下的TOOLS文件夾下的tools文件,在各程序塊下都會出現(xiàn)隱藏的擴展塊(如圖2)。
3.變量塊中增加新建程序塊
自定義函數(shù)這一功能的實現(xiàn)讓BYOB成為一個真正的面向對象的編程語言,不僅是小學生和初學者的工具,更可成為中學及大學教學程序的重要入門工具。目前美國多所高校與高中正在進行教學嘗試。新建程序塊的方法很簡單:筆者將以自定義多邊形DBX繪圖工具塊為例進行講解(經(jīng)測試定義帶參數(shù)的函數(shù)不能使用漢字)。
(1)選擇一個分類對應的分類塊,新建好的程序就放在對應分類里,如選擇畫筆,新建的塊就存放在畫筆塊的最下方。選擇新建程序塊的三種屬性,輸入塊的名稱以及適合范圍,然后確定(如下頁圖3)。
(2)創(chuàng)建程序參數(shù):①在程序塊編輯器中,選擇DBX后面的“+”添加參數(shù)。②在彈出的創(chuàng)建輸入名中輸入多邊形邊數(shù)(bianshu),再選擇輸入名后方的箭頭,選擇輸入名的類型為數(shù)字,輸入框為單個數(shù)值輸入,因為邊數(shù)最少的多邊形是三角形,所以設置默認值為3。③用同樣的方法添加多邊形的邊長(bianchang),設置為數(shù)字型,默認值設置為100。而多邊形的角度值,利用多邊形外角和為360度的公式進行計算(如圖4)。
(3)創(chuàng)建程序塊。先從畫筆塊中拖入“落筆”,再從控制塊中拖入“重復執(zhí)行10次”,從動作塊中拖入“移動10步”、“旋轉15度”。再將bianshu拖到重復執(zhí)行次數(shù)中,bianchang拖到移動步數(shù)中,在旋轉度數(shù)中拖入數(shù)字和邏輯運算中的除法塊,輸入360/bianshu(如圖5)。至此,整合多邊形畫圖程序塊編寫完成。
到畫筆程序塊的下方,將出現(xiàn)DBX程序塊,拖到腳本測試一下吧!修改多邊形的邊數(shù)從3~8,畫出了不同的圖形喔。當然,還可在程序腳本之中直接再使用這個塊,同時也可以在參數(shù)中放置變量,通過變量的調節(jié),繪出各具特點的圖形來(如圖6)。
與BYOB類似,從動作、控制、外觀、偵測、聲音、數(shù)字與邏輯運算、畫筆、變量、文件、顏色、系統(tǒng)、文字、網(wǎng)絡、報告等15類,增加擴展程序塊的項目,讓使用者更方便地實現(xiàn)自己的想法,同時也體現(xiàn)了Scratch的核心思想──想法、程序、分享。其中與開源硬件相結合的有Scratch for Arduino(S4A);程序模塊種類豐富的要數(shù)Bingo,還有Panther、Insanity、Gopher等。它們與Scratch相比,增加的功能均列在了下頁表中。使用者可以根據(jù)自己的需要,選擇對應功能的版本,甚至還可以學習Smalltalk語言,編寫屬于自己的版本。
筆者通過比較開源軟件項目Scratch的各個改進版本,希望大家能夠看到開源項目的旺盛生命力。眾人拾柴火焰高,只有大家共同努力才能把項目做好。事實上,上面的這種比較的過程,也是我們從事程序教學的重要教學內(nèi)容,程序設計軟件的不同版本的選擇,是一個重要的能力,平臺的選擇往往決定著一個軟件項目的成敗,因此期待著更多的老師從平臺選用的角度設計信息技術的教學內(nèi)容。
● 基于網(wǎng)頁版的類Scratch軟件群
使編程更方便、分享更及時,是所有項目最終的目標,類Scratch軟件群有網(wǎng)絡化的趨勢。Scratch2.0在線版用Flash重新編寫了所有代碼,成為這一軟件群的新領袖,令人期待。BYOB項目組也開始了SNAP! 4.0項目,通過網(wǎng)頁能實現(xiàn)BYOB的大部分功能。水熊蟲(Waterbear)項目組也開發(fā)了支持所有瀏覽器的編程語言。這三個項目,日前都處在測試階段階段,有興趣的讀者可以時常關注項目的發(fā)展。
1.Scratch2.0
在大家焦急等待之時,筆者通過強大的谷歌搜索找到了“三無嘗鮮版”(無數(shù)據(jù)庫、無云存儲、無社區(qū))Scratch 2.0,10月31日非正式地通過論壇www.iscratch.org推廣發(fā)布,同時也得到網(wǎng)友“揚州冷火”的支持,為此編寫了離線體驗版。讓很多的愛好者獲得了最新版的體驗。
2.SNAP! 4.0
BYOB項目組開發(fā)了在線版SNAP! 4.0,它生成的工程文件為XML格式。SNAP提供全部網(wǎng)頁源碼,用戶可以自行解壓到自己的網(wǎng)站上運行。并通過修改JS語言文件,將程序本地化。由于是網(wǎng)頁版,所以刪除了原BYOB程序中所有硬件部分的程序塊,以及聲音塊中的MIDI發(fā)聲模塊。另外,在自定義程序塊方面,SNAP也是相當出色。而且它支持各類瀏覽器,并且在手機及平板電腦上運行得也相當流暢,可以說是Scratch2.0有力的競爭對手(如圖7)。
3.水熊蟲(Waterbear)項目
該項目在Scratch程序塊的影響下,創(chuàng)建了在網(wǎng)頁拖動編程并運行的編程語言,讓編程更加方便、有趣,也是兒童、藝術家和任何想體驗編程的人的學習工具。水熊蟲的目標是超越Scratch,創(chuàng)建一種新的編程語言,創(chuàng)建一個可視的互動程序工具。它能在各種瀏覽器上運行,包括iPad上的Safari瀏覽器。項目組人員希望能夠創(chuàng)建出如水熊蟲一樣健壯的代碼,水熊蟲項目最大的特點是可以拖動程序塊來編寫程序,同時可以查看程序塊生成的原始代碼,讓使用者在使用程序塊編程時知其然,更要知其所以然。
綜上所述,類Scratch軟件群給予我們的選擇空間還是很大的,只要我們理解其核心理念。不論采用哪種軟件,最終的目的都是一致的。而根據(jù)國外非程序員體驗編程藝術的有一個參考的學習過程為:Scrath→Etoys→Squeak→任意Smalltalk語言,由此來說,Scratch只是一個開始。所以,即使是使用現(xiàn)在穩(wěn)定的1.4版,只要能讓學生和非程序員體驗到編程的樂趣,就已經(jīng)實現(xiàn)了信息技術的課堂之美了。通過兩年多的教學嘗試,筆者發(fā)現(xiàn)教會學生使用軟件是一件很簡單的事,而想法及解決想法的程序,才是接下來需要研究的方向,這個問題的解決將極大地影響信息技術學科的發(fā)展。
最后,希望在大家等待最新版時,能關注專為Scratch學習討論建立的網(wǎng)站www.iscratch.org。讓我們通過這一平臺,一起學習,共同進步。目前在圖形化編程這個領域,中國的力量還很弱,我們的需求還不能夠影響各個原始團隊的開發(fā)走向,不過我們有很大的用戶潛力,只要我們團結起來,深入地進行研究,相信會有更多地來自國內(nèi)外的開發(fā)者向一線老師取經(jīng),讓我們共同努力把“類Scratch軟件群”研究好、選用好。