Etoys学习笔记: 与Scratch互操作
文章目录
A computer is an instrument whose music is ideas – Alan Kay
前言
读完《Mindstorms》之后, 对Etoys越发感兴趣, 《Mindstorms》给了我一种全新的看待学习系统(learning system)的视角。在这种视角下,Etoys惊人地优美,它展示出Alan Kay骇人的创造天才,Etoys让我们看到建构主义的理念如何实体化以及完美融合于系统之中;它也让我们看到,这个拥有惊人灵活度与简易性的系统如何支持探索者(孩子)去建构自己的世界。
近期准备写一篇文章: Etoys: LOGO的现代对应物
,来梳理我在Etoys中的探索见闻。此外,也在尝试用《Mindstorms》提供的视角来观察Scratch。这个过程中同样看到许多此前未曾遇见的风景。
本文记录了探索过程中的一个片段: Etoys与Scratch的互操作。
浮生一日
五一假期里,花了半天时间阅读Etoys社区里的文章。很喜欢Squeak Etoys, Children & Learning和Learning with Squeak Etoys。之后和Etoys渡过了愉快的另一个半天。
Etoys
我最初注意到Etoys,是在Alan Kay的演讲上,这个演讲给我极大的冲击。
如维基百科所言:
Etoys是一个富媒体创作环境,具有脚本对象模型,拥有适用于在不同平台上运行的不同对象,它是免费且开源的… 它预装在OLPC XO-1电脑中。已在美国,欧洲,南美,日本,韩国,印度,尼泊尔,埃塞俄比亚和其他地方成功使用。
如Alan Kay在Squeak Etoys, Children & Learning中提到的:
Etoys was inspired by LOGO, PARC-Smalltalk, Hypercard, and starLOGO
在Etoys身上我们可以看到前人的许多天才设计。
可以从这儿下载。Etoys的社区是squeakland,又一片有趣的land :)
现今基于建构主义构建的四片大陆分别是:
- Mathland(LOGO)
- Dynamicland(dynamicland.org)
- squeakland(Etoys)
- neverland(CodeLab)
入门
Etoys是一个child-friendly
的探索性环境。跟随教程和演示
:
很快就能入门.
如果你记得Seymour Papert在《Mindstorms》的开篇里讲到的齿轮和乌龟。那么你会发现眼前这个手绘风格的小车如此熟悉,它正是Etoys版的LOGO龟,它们的内在精神是呼应的。这种建构主义精神由《Mindstorms》做了清晰而细致的表述。
作品展览馆
入门之后,推荐逛一逛作品展览馆
。
如果你是新手,作品展览馆
可能会启发你 Etoys能够用来做些什么好玩的东西。
如果你已经写了十年程序,作品展览馆
可能会带给你极大的冲击,也许会打破你对编程的看法,让你看到传统编程是如此逼仄以及非人性化。
作品展览馆
中有一些引导性的教程,也很适合作为入门材料。这些引导性的教程十分有趣,它们本身就是Etoys的一个程序。教程和普通的程序并没有本质区别!
事实上Etoys的界面本身都是可编程的Etoys程序!
吃自己的狗粮
在这里被贯彻得很彻底。
不吃自己的狗粮
才是值得警惕的: 工具的创造团队号称构建了好用的编程/创作工具,然而他们自己,平时既不用它编程,连演讲的PPT都宁可选择系统内置的传统工具,而不用自己构建的创作工具
来创作,却偏偏说它能够帮助那些孩子们去编程和创作。
这可能是编程教育领域一个黑色幽默。
与Scratch互操作
我在Etoys游荡、探索时,发现百宝箱
里有一个有趣的东西: Scratch Client
:
从提示上可以看出,它是Scratch Networking Protocol Client
, 乍看起来似乎可以利用这个client与Scratch互操作!
Google一番, 找到在Scratch中开启该服务的操作: Remote Sensor Connections,但Scratch2.0已经改变了这个协议。
于是我们只好在Scratch1.4中做测试。一切顺利:
原理上,scratch会在42001端口运行服务,该服务实现了Scratch Networking Protocol
. 而Etoys则通过Scratch Client
连接42001。
服务的Python实现
在下载Scratch1.4时,我猜测这个服务是个简单的socket服务。于是我简单跑了一个socket server。试图观察Etoys的Scratch Client
与外部服务的通信细节。
|
|
果不其然,猜测是对的:
由此可以推断,Scratch Networking Protocol
是一个简易的socket server。如果对这个协议有更多的兴趣,可以参考官方文档.
此外社区也有一些围绕这个协议的开源项目:
Physical Etoys
五一和@王松碰了个面,聊天、吃海鲜、结对编程、逛neverland,我在给他展示Etoys时,他也极为震惊和兴奋。他提出一个很有趣的问题: Etoys是否支持硬件编程,诸如与机器人交互,如果可以他很想试试。我说可能不行,估计得使用Pharo。
今早想起codedojo的志愿者@Cyke此前在Anki开发者社区私信我一个有趣的项目。后来我随手把它贴在了FutureOfCoding社区: Physical Etoys。
我重新找到这个项目。发现它在机器人教育这块已经走得很远。
Physical Etoys的思路和codelab adapter颇为相似,甚至也支持插件,当然用的是smalltalk/tile来写的。
于是我决定近期对Etoys进行深入挖掘和研究,以便从中吸收可以应用在codelab adapter中的养分。
Etoys与codelab adapter
Scratch 2.0之后就不再支持Scratch Networking Protocol
,Scratch 3.0当然也不支持该协议,。于是它们都无法与Etoys交互。
我相信至今为止,Etoys依然是编程领域最为惊人的项目之一,最好的用户创作工具之一(Alan Kay的看法),也很可能是最好的教育项目之一,甚至可能没有之一。但Scratch3.0很可能是少儿编程教育的未来。为了让Etoys能够与Scratch3.0交互,CodeLab可能会构建一个Etoys插件,让Etoys能够与Scratch3.0互操作。
Etoys内置在OLPC中,在十几个第三世界国家使用。这些国家缺乏合格的教育者,基于建构主义的Etoys允许在没有教育者的情况下被使用。用户自发探索和构成社区。
考虑到Etoys影响广泛,但目前它的技术更新却相对缓慢。CodeLab近期准备构建一个codelab adapter插件,将AI、IoT、开源硬件的能力赋予Etoys。
codelab adapter在设计上,一直在认真回应一个基础问题: 互操作性
。《Mindstorms》和Etoys让我相信我们关注了一个正确的方向。互操作性
可能是基于建构主义的学习系统最重要的特性之一。
参考
- wikipedia Etoys
- 《Mindstorms》
- Etoys Articles
- Squeak Etoys, Children & Learning
- Learning with Squeak Etoys
- Physical Etoys
- Why does Smalltalk not become a commonly used platform for learning presentations and video lecture constructors? Squeak looks great as an interactive presentation platform for college lecturers.
- Remote Sensor Connections
- Communicating to Scratch via Python
- Communicating to Scratch via Python with a GUI
- Physical Etoys
- wikipedia Scratch
文章作者 种瓜
上次更新 2019-05-05