Scratch 3.6與編程貓列表與消息廣播對比分析

問題的提出

Scratch與編程貓都僅支持普通變量與列表(相當於數組)兩種類型。但是,具體使用過程中,發現二者還是各有利弊。
對於基本的列表操作,例如創建,初始化,增刪改查,我們且不論。本短文中主要分析在大數據量情況下,兩個軟件各自的管理方案及各自存在的問題。
另一方面,Scratch與編程貓都提供了對消息廣播的支持——這與這些軟件的事件驅動編程及多線程編程支持是分不開的。但是,這方面Scratch設計上存在明顯的倉促,而編程貓則略勝一籌。詳見下文。

本文測試軟件都是使用上述兩個軟件的離線版本,且都是最新版本:Scratch 3.6和編程貓源碼編輯器KITTEN 3.4.26。

Scratch的列表支持

Scratch 3.6與編程貓列表與消息廣播對比分析

在創建列表後,支持輕鬆地添加初始數據,通過如圖所示的後面“+”號或者乾脆輸入一項後按回車鍵即可。
另外一個很強大的支持是支持文本數據的導入與導出,見下圖:
Scratch 3.6與編程貓列表與消息廣播對比分析

當然,文本文件(.txt 、.csv、 .tsv)中的數據是要按規律排列的。當文本內容達到三五十行以後,這種功能的提供就太及時了。對於青少年編程中,加入適當的文件編程知識是非常必要的。

編程貓的列表支持

Scratch 3.6與編程貓列表與消息廣播對比分析

第一,不支持上面的直接按回車添加新數據。
第二,根本不支持存儲在文本中大量數據的導入與導出!這一點實在不太友好!

竊以爲:編程貓既然定位之一是全國青少年編程等級考試與比賽,應當在開發環境中全部包含Scratch現在的支持(再適當擴展,以體現出更強大的功能)。因爲許多青少年編程等級考試內容是要求參賽者非常熟練Scratch的各種細節支持的,而如果編程貓的功能與Scratch交叉——而不是包含關係,將對學編程貓的考生是一種誤導(例如,某考生在使用編程貓時可能輕鬆實現某種編程,但是使用Scratch時卻捉襟見肘,甚至是無所適從,那麼麻煩大了)!

消息廣播支持對比

Scratch在“事件”類積木組中提供了消息相關的積木支持命令,如下圖所示:
Scratch 3.6與編程貓列表與消息廣播對比分析

編程貓也是在“事件”類積木組中提供了消息相關的積木支持命令,如下圖所示:
Scratch 3.6與編程貓列表與消息廣播對比分析

乍看起來,好像支持一樣!?但其實,還是有一個很大差距的。

大量消息的管理問題

例如一個小程序中使用20條以上消息進行多線程通訊管理,那麼,如何統一管理這些消息,既高效又不易出現錯誤呢?

Scratch 3.6方案

在使用Scratch編程的最開始遇到上述問題時,我自然想到能不能使用列表來管理這些消息?
【問題1】創建列表是沒有問題的,如存儲“消息1、消息2、消息3......“。
【問題2】廣播消息方面,也沒有問題!大家注意,在Scratch中‘橢圓’形狀的積木都是代表變量積木;因此,即使在廣播消息時不能直接廣播列表中的消息文本,但是可以藉助於一箇中間變量實現,如下圖所示:

Scratch 3.6與編程貓列表與消息廣播對比分析
這裏的代碼不用解釋了吧,大家一定能夠理解。

但是,廣播的問題解決得滿意了,消息接收又如何呢?再往下看。
【問題3】注意Scratch中提供的”當接收到......“這一塊積木,它接收到的內容根本不是使用變量類型積木表達的!只能從其中的下拉列表框中選擇固定的文本消息或者新建一條固定消息!因此,前面使用列表來管理大量消息的辦法幾乎作廢了!答案是:對於大量的消息,Scratch只能一條一條手動接收!

編程貓方案

至此,細心的朋友可能已經看出編程貓的優勢了。的確,因爲編程貓發送與接收消息積木塊都提供了變量支持,所以,對於使用列表管理大量消息的問題,編程貓的管理效率是明顯比Scratch要高得多的。

小結

實踐證明,Scratch以其出擊早、”極度保守“(確保軟件的穩固性)的軟件設計策略與世界性的各種宣傳活動贏得了全世界範圍青少年編程者與家長的青睞。而編程貓作爲基於Scratch核心框架並深度二次開發出的佼佼者,極大程度地拋棄了Scratch的許多不足的同時進一步擴展了Scratch架構功能,在今天的中國少兒編程市場基本處於領頭羊位置,但是,問題還是很多的——僅僅是從軟件開發支持方面看。

本文僅僅從兩個功能點上對比分析了Scratch和編程貓各自的優劣,以後我還會寫出大量的這種對比性文章,供同學們參考。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章