# Scratch简介
Scratch是个教育项目, 诞生自MIT Media Lab "终生幼儿园"(Lifelong Kindergarten)小组。
Scratch能让一个孩子在其创作的作品,对接到各种硬件,并在他现实世界中被使用,甚至帮助Ta的父母和邻居解决了日常的生活问题,他的学习热情将将被噼里啪啦点燃。
# Logo语言和派珀特
大部分人谈论计算机的方式都是将计算机当成工具,一种完成任务的方法,但在派珀特眼中,计算机能帮助我们用全新的方式认识世界,它将成为儿童表达想法的媒介。
人类从幼年开始构建不同的心智模式(mental model)解释自己周围的现象,比如加速的汽车、猫粗糙的舌头。随着逐渐长大,我们的经验和这些模式产生碰撞,迫使我们调整模式以适应不断变化的现实。
对于派珀特来说,计算机可以对照这些模式和经验,是兼顾玩耍和学习的完美载体。派珀特是第一个预见计算机可以用来帮助孩子们学习的人,他相信计算机可以让孩子们主动构建知识。
派珀特将皮亚杰的这些理念融入Logo语言,通过它,每个孩子都可以变成经验主义者。
派珀特作为近代人工智能领域的先驱者之一,20世纪60年代初,他与马文·明斯基在MIT创办了人工智能实验室。
# 儿童心理学家皮亚杰
雷斯尼克创造的Scratch受派珀特和他的Logo语言影响至深,派珀特对计算机的看法对他的影响则更为深刻。
而派珀特在创造Logo语言的时候,则主要是受皮亚杰的启发,并将他的思想融入到Logo语言中。
皮亚杰自1921年开始从事儿童心理学的研究,从智能的早期形态入手,目的在于由此探讨认知论的问题。
皮亚杰把适应看作智力的本质,他把儿童看成建造自己的个人知识理论的小哲学家和科学家。他认为活动即是感知的源泉,又是思维发展的基础。
从皮亚杰的理论里,我们可以看到Logo和Scratch的世界观和灵魂所在:对活动/交互的重视、让孩子在玩耍中不断创建和调整心智模式。
尽管Logo有各种分支和方言,尽管Scratch经历了几次技术变革(即将迎来3.0版本),也许在将来,从外表上你甚至不能一眼认出他们。
但他们内核的东西一直如初:对皮亚杰认知理论的实践,将计算机作为一种理想的媒介,让孩子们在活动中去构建和调整心智模型。以理解和适应外部环境。
# Scratch之父
雷斯尼克将Scratch从Logo语言止步的地方继续前进,将Logo语言带入未来,他们的传承关系可想而知,相似之处且多于不同。
计算机技术日新月异,Logo并没有跟上时代,Scratch试图将更多的多媒体元素吸收进来,以便孩子们能轻易地创作更具表现力的作品,"可以向他人炫耀的作品。
Scratch基于图形化的编程方式,通过拖拽、拼搭积木的方式,让整个编程过程十分直观,很像在玩乐高积木。这并不是偶然,雷斯尼克一直与乐高公司保持密切合作,乐高机器人便是他与导师派珀特密切合作研发的。
Logo语言的特色是派珀特所说的“低门槛”(易于学习)和雷斯尼克所称的“宽围墙”(不束缚儿童的想象)相比于Logo,Scratch的围墙则更宽,你可以在其中做更多你想做的事。
并不是每个孩子的兴趣都一样,作为一个优秀的工具,应该把“围墙”做宽,除了控制角色移动、画画之外,你还可以创作你自己的音乐、故事、电影、动画或者游戏。
scratch经历了基于Squeak编写的1.x版本;基于ActionScript编写的2.0版本(依赖flash),和基于html5技术的3.0(能够轻松跨平台运行)。
Google与MIT Media Lab将共同开发Scratch Blocks,Scratch Blocks使用谷歌的可视化编程语言Blockly。
使用Blockly积木块之后,Scratch将变的更加灵活、美观和易拓展,拼搭好的积木块可以直接转译为6门语言,而这些语言将直接运行在合适的地方(目前许多硬件都能直接运行Python和JavaScript)
积木化的编程方式是领域无关的,这种封装/抽象的思想,能恰当地屏蔽复杂度,仅将用户需要的东西暴露为可组合的积木块(很符合Unix设计哲学),如果我们使用得当,我们可以将大多数的事物封装为Scratch积木,任何对创造有热情的人都可以去自定义和改写他的生活,这大概是maker们梦想的天堂。
# 关于blockly
blockly是google发布的可视化编程工具,基于web技术构建。使用blockly的时候,用户可以通过拖曳模块,来构建代码逻辑,过程很像搭积木
在用户视角下,blockly是一个简单易用的可视化工具,用来生成代码。在开发者视角下,blockly是一个文本框,里边包含了用户输入好的代码。
Blockly能产生相应的JavaScript、Python、PHP、Dart代码,开发者也可以自定义产生的代码的语言。从开发者的角度来看,Blockly是一个用户可以写出语法完美的代码的编辑器。
# Scratch3.0
Scratch3.0基于html5构建,能轻松支持多平台运行,十分可期,而且带来了多项有趣的改进。
目前把Scratch3.0玩得很溜的,国外有Cozmo,而国内有makeblock和kittenbot。
项目有关源码 请到 https://github.com/LLK (opens new window)。