Scratch 3.6与编程猫列表与消息广播对比分析

问题的提出

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和编程猫各自的优劣,以后我还会写出大量的这种对比性文章,供同学们参考。

原文地址:https://blog.51cto.com/zhuxianzhong/2472882

时间: 2024-10-02 19:13:22

Scratch 3.6与编程猫列表与消息广播对比分析的相关文章

少儿编程发展趋势少儿编程经验分享scratch编程猫

少儿编程发展趋势 2017年7月 ×××印发人工智能发展规划,将少儿编程教育提升为国家战略2017年12月 山东省在其最新出版的小学信息技术六年级教材中,加入了编程的内容. 2018年1月 教育部公布高中新课标,编程.计算思维成必修内容.以少儿编程为代表的信息技术学科将被纳入高考,编程地位直线上升,成了高中孩子的必修科目. 2018年4月 南京教育局将编程列入南京中考特招生的范畴. 在发达国家,少儿编程教育早就已成为国家重点推动的教育学科,而我国近年来也在逐步布局发展少儿编程教育. 电子化和程序

编程猫开发《摘星星小怪物》游戏

[阅读提示]编程猫中的源码编辑器是一款类似于Scratch的软件,而且在实现功能上做了大幅度的改进与提升.因此,熟悉Scratch编程的朋友可以很容易阅读本文:但是,其中的部分积木代码与Scratch并不相同.Scratch积木提供了少儿编程最基础的功能积木:编程猫源码编辑器则扩展了Scratch功能,并进行了大量简化. 根据本人使用百度指数的粗略分析,编程猫是截止目前国内最大规模且技术研发含量最高的少儿编程(含机器人编程)公司,值得关注. 一.游戏情景与快照 游戏未开始时界面如图所示: 游戏情

编程猫流程分析

一.编程猫精品分析图解: 二.核心内容: 1.编程工具->模版->可视化拖动视图: 2.使用scratch编程工具在线编程: 3.边学边玩,在线教育: 原文地址:https://www.cnblogs.com/PeterWolf/p/9267839.html

python高级编程之列表解析

#列表解析 #编写0到10之间的偶数 #方法1 #结果:[0, 2, 4, 6, 8] num=range(10) num1=len(num) evens=[] i=0 while i<num1: if i%2==0: evens.append(i) i+=1 print evens #方法2 print [(i)for i in range(10)if i%2==0] #enumerate获取索引 #方法1 i=0 l=['a','b','c','d'] for  li in l: l[i]=

Java Swing界面编程(30)---列表框:JList

列表框可以同时将多个选项信息以列表的方式展现给用户,使用JList可以构建一个列表框. package com.beyole.util; import java.awt.Container; import java.awt.GridLayout; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.util.Vector; import javax.swing.BorderFact

一款简单好用的动画/游戏制作软件|源码编辑器|编程猫南宁体验中心

好了,这个大三暑假有幸在南宁编程猫体验中心实习,在这边学习python和一些软件的使用. 其中,有个软件让我觉得..真的太适合我这种不是很会用pr来做视频的人了. 话不多说,在编程猫社区,然后下载个源码编辑器就能用了. shequ.codemao.c1n 给个图,让大家认识一下它 这个软件的底层的话,是由python语言弄的,里面所使用的积木的背后,也全部是python或者JavaScript. 就比如说我做个小动画,就几个小积木拼起来就可以完成这个效果了.关于这个源码编辑器,以后我会给出一些作

Win32编程中如何处理控制台消息

这篇文章讨论如何处理所有的控制台消息. 第一步,首先要安装一个事件钩子,也就是说要建立一个回调函数.调用Win32 API,原型如下: BOOL SetConsoleCtrlHandler(PHANDLER_ROUTINE HandlerRoutine, // 回调函数BOOL Add // 表示添加还是删除): 参数HandlerRoutine是一个指向函数的指针,原型如下: BOOL WINAPI HandlerRoutine(DWORD dwCtrlType // 控制事件类型): 所有的

开源学习--SlideExpandableListView中的列表项动画实现框架分析

前面的话 开源项目Android-SlideExpandableListView是一个简单的介绍列表项动画展示的小型项目,分析这个项目可以对自定义框架及列表类动画实现有个比较清晰的认识,工作中中时常根据需求扩展定义自己的适配器,虽然具体需求不同,但架构类似,本文把最近关于该开源项目的研究心得整理分享,共同学习~ 项目简介 github地址https://github.com/tjerkw/Android-SlideExpandableListView 这是个入门级的列表项动画展示框架,实现效果如

C++MFC编程笔记day02 MFC消息映射机制、菜单资源使用

机制3:MFC消息映射机制: 类内声明,类外定义宏,绑定消息处理函数 派生自CCmdTarget 类内声明宏:DECLARE_MESSAGE_MAP() 类外添加实现宏: BEGIN_MESSAGE_MAP(类名,父类名) END_MESSAGE_MAP() //数据结构 struct AFX_MSGMAP_ENTRY { UINT nMessage;   // 消息ID UINT nCode;      // 通知码 UINT nID;        // 控件ID或消息 UINT nLast