scratch和python对比
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的.