问题的提出

Scratch与编程猫都仅支持普通变量与列表(相当于数组)两种类型。但是,具体使用过程中,发现二者还是各有利弊。
对于基本的列表操作,例如创建,初始化,增删改查,我们且不论。本短文中主要分析在大数据量情况下,两个软件各自的管理方案及各自存在的问题。
另一方面,Scratch与编程猫都提供了对消息广播的支持——这与这些软件的事件驱动编程及多线程编程支持是分不开的。但是,这方面Scratch设计上存在明显的仓促,而编程猫则略胜一筹。详见下文。

本文测试软件都是使用上述两个软件的离线版本,且都是最新版本:Scratch 3.6和编程猫源码编辑器KITTEN 3.4.26。

Scratch的列表支持

在创建列表后,支持轻松地添加初始数据,通过如图所示的后面“+”号或者干脆输入一项后按回车键即可。
另外一个很强大的支持是支持文本数据的导入与导出,见下图:

当然,文本文件(.txt 、.csv、 .tsv)中的数据是要按规律排列的。当文本内容达到三五十行以后,这种功能的提供就太及时了。对于青少年编程中,加入适当的文件编程知识是非常必要的。

编程猫的列表支持

第一,不支持上面的直接按回车添加新数据。
第二,根本不支持存储在文本中大量数据的导入与导出!这一点实在不太友好!

窃以为:编程猫既然定位之一是全国青少年编程等级考试与比赛,应当在开发环境中全部包含Scratch现在的支持(再适当扩展,以体现出更强大的功能)。因为许多青少年编程等级考试内容是要求参赛者非常熟练Scratch的各种细节支持的,而如果编程猫的功能与Scratch交叉——而不是包含关系,将对学编程猫的考生是一种误导(例如,某考生在使用编程猫时可能轻松实现某种编程,但是使用Scratch时却捉襟见肘,甚至是无所适从,那么麻烦大了)!

消息广播支持对比

Scratch在“事件”类积木组中提供了消息相关的积木支持命令,如下图所示:

编程猫也是在“事件”类积木组中提供了消息相关的积木支持命令,如下图所示:

乍看起来,好像支持一样!?但其实,还是有一个很大差距的。

大量消息的管理问题

例如一个小程序中使用20条以上消息进行多线程通讯管理,那么,如何统一管理这些消息,既高效又不易出现错误呢?

Scratch 3.6方案

在使用Scratch编程的最开始遇到上述问题时,我自然想到能不能使用列表来管理这些消息?
【问题1】创建列表是没有问题的,如存储“消息1、消息2、消息3......“。
【问题2】广播消息方面,也没有问题!大家注意,在Scratch中‘椭圆’形状的积木都是代表变量积木;因此,即使在广播消息时不能直接广播列表中的消息文本,但是可以借助于一个中间变量实现,如下图所示:


这里的代码不用解释了吧,大家一定能够理解。

但是,广播的问题解决得满意了,消息接收又如何呢?再往下看。
【问题3】注意Scratch中提供的”当接收到......“这一块积木,它接收到的内容根本不是使用变量类型积木表达的!只能从其中的下拉列表框中选择固定的文本消息或者新建一条固定消息!因此,前面使用列表来管理大量消息的办法几乎作废了!答案是:对于大量的消息,Scratch只能一条一条手动接收!

编程猫方案

至此,细心的朋友可能已经看出编程猫的优势了。的确,因为编程猫发送与接收消息积木块都提供了变量支持,所以,对于使用列表管理大量消息的问题,编程猫的管理效率是明显比Scratch要高得多的。

小结

实践证明,Scratch以其出击早、”极度保守“(确保软件的稳固性)的软件设计策略与世界性的各种宣传活动赢得了全世界范围青少年编程者与家长的青睐。而编程猫作为基于Scratch核心框架并深度二次开发出的佼佼者,极大程度地抛弃了Scratch的许多不足的同时进一步扩展了Scratch架构功能,在今天的中国少儿编程市场基本处于领头羊位置,但是,问题还是很多的——仅仅是从软件开发支持方面看。

本文仅仅从两个功能点上对比分析了Scratch和编程猫各自的优劣,以后我还会写出大量的这种对比性文章,供同学们参考。