我从编程语言的角度谈区别。
Scratch 是视觉化编程,输入以鼠标为主,减少键盘的使用,也避免了不合法的语法;程序员在工作上多使用文本编程,会容易出现语法及其他方面的编译错误,但编码的效率更高。
Scratch 的主要编程范式是指令式(imperative)和事件驱动(event-driven);程序员在工作上除这两种范式外,还会比较多使用到面向对象(object-oriented)、函数式(functional)编程范式。
Scratch 通过自定义区块(custom block)可一定程度上进行模块化编程(modular programming),但现时的版本中自义区块不能返回值,比较难实现一些递归算法;程序员在工作上有更多模块化的工具,例如把项目分拆成子项目(程序库、框架等),用面向对象的话会把数据封装成类,更方便重复使用、扩展,去开发大型的软件。
Scratch 的变量类型较少,现版本只有字符串、数字和列表,比较难实现复杂的数据结构。
总体而言,Scratch 可培养儿童学习最基本的指令式编程思维(控制结构、变量、表达式、子程序等),视觉化编程容易入手,可实现一些简单的算法,适合做一些简单的图形编程/小游戏。