關於BYOB與Scratch的對比與反思

來源:互聯網
上載者:User

轉自:http://blog.sina.com.cn/s/blog_667a8d3501012iv2.html 特此鳴謝

關於BYOB與Scratch的對比與反思

這幾天,聽到一些老師在介紹BYOB,於是下載安裝來玩玩,並與Scratch進行對比學習,以下是我的一些學習收穫與體會,收集整理與大家分享與交流,如不當之處,敬請博友們批評指正。

一 一、 BYOB與Scratch的姻緣

運行BYOB發現他與 Scratch並沒有太大的區別,至少從外觀上來看是這樣的。但為什麼兩者名字差別如此之大呢?它們之間有著什麼樣的關係?帶著這些疑問,我查閱了一些外文材料,希望能解開這個謎團。

原來BYOB的全稱應該是Build Your Own Blocks,它是Scratch的一個改進版,由Jens Monig(Enterprise Applications Development, MioSoft Corporation)和Brian Harvey(University of California at Berkeley加州大學伯克利分校)基於Scratch原代碼的基礎上修改而成。

從Scratch的官方網站瞭解到,Scratch是一種開源的兒童編程軟體,MIT所有的開發原代碼都共用到了網路上,並支援和鼓勵使用者對其進行修改和完善。不過為了保護其Team Dev的權益和避免承擔不必要的責任,MITTeam Dev對Scratch的商標權做了規定:重新修改後的程式不得以Scratch的LOGO 名字、包括官方使用的預設角色等,一律不可以再重用,相關程式也不能掛放到Scratch的官方網站上,但必須註明是基於Scratch開發而成。至此我終於明白,縱然BYOB的介面和Scratch的介面奇似,但名字、預設角色都不一樣的原因了。細心的朋友,也許還可以在BYOB的主介面的LOGO上看到相關的著作權資訊。準確來講,它的全稱應該是:BYOB
based on Scratch by MIT.

深入瞭解之後,其實一點都不遇外,一直以來,ScratchTeam Dev都非常強調和鼓勵使用者對程式進行修改和重組,只是想不到他們連原代碼都開放,值得欽佩!不過也正因為有開發人員的博大胸襟和開放意識,才有如今Scratch軟體的不斷完善和蓬勃發展吧。

二 二、BYOB3.1與Scratch1.4的差別

那麼,到底BYOB對Scratch做了哪些改進呢?我想從介面開始瞭解是最直接和快速的方法。於是我以BYO3.1和Scratch1.4為例,對他們的介面進行了詳細的對比與分析,試圖找出它們的相同點與不同之處。


Scratch1.4主介面

BYOB3.1主介面

從主視窗來看,他們沒什麼兩樣,但對比功能表列和指令區,就能看到了一些改變。如BYOB3.1功能表列中的“分享”與Scratch1.4菜單中的“分享”就有很大的不同,前者可以對程式進行編譯和聯機共用,而後者不能編譯,但可以把作品分享到指定的Scratch指定的網路交流社區。以下是BYOB在Scratch的基礎上增強指令。

1、
模組:主要是針對調用和偵錯工具塊而定製了一些指令;

2、
模組:增加了對“對象”和“屬性”的偵測;

3、
模組:在原來的基礎上增加了以下運算指令,特別值得一提的是把整個指令碼用來做運算,為程式塊的間的資訊傳遞提供了便利。

4、
模組:改動最大,追加了添加不同類型的程式塊的功能,而且這個程式塊可以是單純的幾個指令的集合,也可以是帶參數的函數,能返回具體的值,支援遞迴調用。考慮到建立程式塊的過程也可以定義變數,所以與變數相關的設定指令也在預設條件下出現。另外,這一模組還增加了“指令碼變數”指令(用來快速定義臨時變數)和“複製鏈表”指令,支援調用鏈表中的鏈表,實現鏈表資料的重複調用。


對比了兩者程式指令區的異同,第一個感受就是:原封不動保留了Scratch1.4所有指令;第二個感受就是:追加,追加一些指令到其中。如此說來,BYOB的漢化版本也相對比較簡單,只需參考Scratch安裝檔案locale檔案夾中的漢化版本,在此基礎上進行適當的追求和修改即可。

不過儘管是追加,但BYOB的這一改進卻讓Scratch編程有了質的變化,實現了真正意義上的物件導向的編程,這是它最大的貢獻之一。 Scratch1.4版本,實現角色間或角色與背景間的通訊,通常只能用廣播實現,而且這種實現方式只能播放資訊,既不能傳遞變數,也不能返回具體的值,限制了程式的調用與代碼的重用。而BYOB的這一改進,使用者可以自由的增加不同類型的程式塊,並對其進行參數的調用,實現真正意義上的資訊傳遞,而這恰恰是OOP的核心思想之一。

……

三 三、 BYOB3.1 與Scratch2.0

近兩年,Scratch也在試圖對Scratch進行版本的升級,雖然還沒有正式發布,但陸續也發布了不少升級進度報告,從中也能大致瞭解到升級版本的一些功能。

1、Scratch2.0在介面的設定與重組方面,有了很大的改動,如1所示。從視覺的角度來看,1.4的視覺中心在舞台,而2.0版本的視角中心轉到了指令碼區,作為一種程式設計語言,我覺得2.0的視覺中心更合理。

圖1(圖片引自 Scratch官網)

2、背景更名了情境;

3、能使用相機運動感測;

4、Scratch在原來1.4的基礎上,還增加了“雲資料”;

5、增加了角色的複製,既可以繼承原來角色的屬性,又可以進行修改;

6、添加了“My Blocks”指令集,允許使用者添加帶新的程式組塊,可供重複調用(2、圖3所示)

圖2

圖3

7、主介面中增設了“Backpack”欄,使用者可以把程式組塊、角色、聲音等資訊儲存下來,應用到其它程式中,很好的實現代碼和對象特性的繼承與再利用;

8、分享與交流功能得到很大的提升。新版本主要基於Web平台來操作,這讓作品的分享和重組變得更容易,使用者還可以建立自己的工作室(4),對自己的作品進行分類管理,相關頁面還提供好友管理和瀏覽跟隨功能,使用者可以輕鬆回訪和交流。

當然,發開團隊也說明,同時會有一個離線版,供非網路環境使用。

圖4

與BYOB3.1相比, Scratch2.0有相同之處,也有其獨特的之處。

不同點:Scratch2.0 是基於flash環境下運行,而BYOB3.1仍然是java環境;

相同點:兩者都增加了“Make a Block”的功能,不過從版本預告資訊來看,Scratch2.0的添加新的程式組塊功能在自我定製方面似乎並不如BYOB強,至少在類別上就沒有BYOB多,這個還得等Scratch2.0正式發布之後去嘗試才能確認。

順便提提,聽說BYOB3.1也要升級了,而且不僅升級,連名字都會改,改為snap4.0,據說改名是因為BYOB的縮寫有歧義,但不管怎麼樣,升級也算是程式發展進步的表現,值得肯定,不過目前還不看到相關的功能簡介,只知道整個介面的色調變了,5所示。

圖5(圖片引自於BYOB website)

四、 如何看待這些不斷更新的兒童程式設計語言

看到這麼多個版本的不斷更新,是不是有點眼花繚亂了呢?其實軟體版本的更替也是非常正常的事情,至少說明了這個軟體是受關注和不斷髮展的。不過也許會有老師說:這麼快就出現這麼多版本,我們到底該用哪個版本好呀,眼看Scratch1.4還沒用熟,就又出來了BYOB,甚至是Scratch2.0,真讓人應接不暇……其實,這隻能說是我們的腳步慢了,在國外,早在前年前,這個軟體就很火爆了。不過,面對這些頻繁更新的兒童程式設計語言,身為一線教師,我們又該如何做才不會顯得被動呢?

從我的立場來看,我覺得首先應該明確兩件事。

1、 明確學生的認知水平,內容適用為宜——解決學什麼的問題

有時候我們總是希望用大人的思維是判定孩子學習語言的能力,認為我們大人給編出來的東西孩子也一定可以,我覺得這是不遵循孩子學習規律和對孩子不負責的表現。對於選擇什麼樣的語言來教學,既要看其本身的特點,更要看兒童的接收能力。

據悉,MIT的Scratch研究團隊開始的初衷就不希望把Scratch語言複雜化,以免引起兒童的恐懼心理,我想就是這個道理。伯克利的課程團隊最初開設BYOB試驗課程時,主要針對的學習群體是非電腦科學專業的18歲和19歲的青年。Brian Harvey也曾在他的文章中提到不建議兒童時期就開始寫遞迴程式、高階函數或對象類等。如此說來,那些新添的程式組塊未必用得很自如,至少在小學階段是這樣的。畢竟面對“簡潔的語句和複雜的調用”小學生理解起來還有一定的難度的。不過學有餘力的學生,多接觸一些物件導向的編程思想也是件非常有意義的事情,這也是程式設計的發展趨勢。

所以,面對版本的更替,我們並非一定要隨波逐流,一切應以學生的實際情況出發,充分考慮學生當下的認知水平,適用就好。

2、明確程式教學的核心,避免為教軟體而教——解決怎麼學和學得怎麼樣的問題

在教學上,無論我們選擇哪個版本的程式語言,軟體本身也僅僅是一個載體,而利用這個載體,學生能學到什麼,也才是我們思考的關鍵。我想大家都會認同:我們並非想教給學生某個指令有哪些功能,我們的眼光會更多地投放到學生能用這些指令做出些什麼東西來,而在這個做的過程中他們的哪些能力能得到提升。

所以,在選擇哪一個版本這個問題上,我覺得在適用的基礎上進一步明確程式設計教學的核心目標。依託圖形化的兒童編程軟體,引導學生在學編程的過程中,鍛煉思維,提升能力。否則會淪落為為教軟體而教的被動局面,以前的LOGO語言是這樣,現在的Scratch語言
也應該是這樣。

謝作如老師在他的《互動媒體技術》課程設計中提到的一個觀點,我非常欣賞:技術是有趣的、技術是有用、技術是不斷髮展。

(摘自:http://blog.sina.com.cn/s/blog_6611ddcf01015k6w.html)

這給我很大的啟示:身為資訊技術老師,程式設計教學的要務應該是讓學生感受學技術是有趣的,並從中體會技術的作用和不斷髮展的曆程。無論是哪個版本的程式設計語言,我想明確了這一點,然後根據學生當下的水平,選擇恰當的內容進行教學設計和教學實踐,學生一定能學得很精彩。

總之,辯正看,務實辦!

作者:廣州市天河區沐陂小學陳紫淩

特別鳴謝:

l 特別感謝北京景山學校吳俊傑老師從美國Scratch@MIT2012會議帶回來的有關Scratch2.0和BYOB等資訊;

l 特別感謝重慶人和街小學鄧江華老師提供的BYOB的安裝檔案,以及在JoinNet平台上的操作示範;

l 特別感謝溫州謝作如老師關於《互動媒體技術》課程的觀點分享;

l 特別感謝貓友匯群友的熱情交流,讓我獲得了很多的學習與交流資訊。

l ……

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.