scratch是为了用最快的方式引起小朋友对编程的兴趣, 所以都是围绕着人物及其移动、对话框、声音和对用户输入的响应来做的。它也希望给小朋友一些初步的编程概念,如循环、判断、变量、数组等,但这些概念非常弱,使用起来也很难用。并且像其他编程语言里的基础概念或者基础库功能,在scratch里也是缺失的。
这儿就scratch和python的基础库做一下对比。基础库指的是python默认安装自带的库。不和python第三方库对比的原因是:如果对比,那么python就是万能的了。

scratch有而python基础库没有的

scratch中的前三类语句:运动、外观、声音,都是控制角色的,在python基础库中都没有。当然这一部分是最有趣的,能快速激发孩子的兴趣。

scratch和python基础语法库的对比

python的基础语法也可以代表绝大多数现代编程语言的基础语法,甚至python的还要更少一些(或者说更简练些)
从scratch的事件开始讲,这部分不是最基本的语法,而是属于多线程异步编码的部分。如对按键的监听、屏幕点击事件的注册和回调函数、消息发送、异步等待等。
控制部分的等待1秒不属于基础语法,下面的就都是了。

分类 scratch代码 python代码
控制 重复执行10次 for i in range(10):
控制 重复执行 while True:
控制 如果<条件> 那么 if 条件:
控制 如果<条件> 那么 否则 if 条件: else:
控制 重复执行直到<条件> while 条件:
运算 + - * / 除以的余数 + - * / %
运算 > < = 与 或 不成立 > < == and or not

简单变量的四则运算到逻辑运算, scratch就会变得非常复杂. 要将不同的算式和变量拖入, 效率比python低了非常多, 逻辑复杂以后读起来也比较别扭
而复杂的变量, scratch只有一维数组,用起来的感觉就是捉襟见肘, 对二维图画的平面来说, 有个二维数组肯定方便很多, 比如做一个很简单的贪吃蛇游戏, 都需要知道蛇和苹果的二维坐标. scratch就只能用一维数组加算法来模拟二维数组了. 并且scratch数组只能预先建立,而不能实时新建new, 也限制了它的使用. 实际要用的时候,还要考虑scratch孱弱的语法限制.
其他功能,比如开发些小游戏需要保存和读取存档, 而scartch又不支持读写文件. 当然这也是为了安全, 怕小朋友把系统文件搞坏就得不偿失了.
另外一个比较糟心的就是所有变量几乎都是全局变量, 需要预先建立而不能实时新建. 稍微复杂一些的程序就会有一堆变量需要拖拽, 非常混乱. 另外没有自建积木类比函数, 没有函数内的局部变量, 也没有函数返回值, 全部要通过全局变量操作, 这对形成良好的编程思想其实是不利的.
理解这些限制, 也有利于理解scratch设计者的想法, 比较复杂的有很多函数的项目是不适合scartch的.

标签: none 阅读量: 613

添加新评论