惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

大猫的无限游戏
大猫的无限游戏
H
Help Net Security
The Cloudflare Blog
Y
Y Combinator Blog
A
Arctic Wolf
Cyberwarzone
Cyberwarzone
G
Google Developers Blog
Recent Announcements
Recent Announcements
S
SegmentFault 最新的问题
Microsoft Security Blog
Microsoft Security Blog
WordPress大学
WordPress大学
博客园 - Franky
罗磊的独立博客
Martin Fowler
Martin Fowler
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
博客园 - 三生石上(FineUI控件)
N
News and Events Feed by Topic
F
Fortinet All Blogs
N
News | PayPal Newsroom
J
Java Code Geeks
www.infosecurity-magazine.com
www.infosecurity-magazine.com
博客园 - 【当耐特】
M
MIT News - Artificial intelligence
Google Online Security Blog
Google Online Security Blog
Recorded Future
Recorded Future
博客园 - 聂微东
S
Securelist
C
CERT Recently Published Vulnerability Notes
小众软件
小众软件
Cisco Talos Blog
Cisco Talos Blog
S
Security Affairs
NISL@THU
NISL@THU
A
About on SuperTechFans
PCI Perspectives
PCI Perspectives
N
News and Events Feed by Topic
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Jina AI
Jina AI
Microsoft Azure Blog
Microsoft Azure Blog
AWS News Blog
AWS News Blog
GbyAI
GbyAI
C
Cyber Attacks, Cyber Crime and Cyber Security
V
Vulnerabilities – Threatpost
D
Docker
P
Proofpoint News Feed
W
WeLiveSecurity
Help Net Security
Help Net Security
The GitHub Blog
The GitHub Blog
The Last Watchdog
The Last Watchdog
The Hacker News
The Hacker News
博客园 - 叶小钗

夜行人

回家路上 第一期的直播演示项目 震动检测器 正能量 在线参观CodeLab Neverland 发布 CodeLab Adapter 3.3.1 DynamicTable 之 纸糊方向盘 CodeLab DynamicTable: 一个可实施的技术方案 CodeLab Insight 发布 Alpha 版 情人节 Home Assistant 周报 && IoT 周报 (02) Joplin: 关注隐私的 Evernote 开源替代软件 浏览器的未来与 Web 传感器 Home Assistant 周报 && IoT 周报 (01) 百宝箱(01) 论自由 介绍 WebThings Home Assistant 周报 && iot 周报 (00) 百宝箱(00) 毛姆读书心得 传世之作 周末徒步 CodeLab Adapter ❤️ Jupyter/Python 航班 躲雨 夏令营途中 [译]思想--作为一种技术 The future of coding 美国之行 三门问题的程序模拟 从Python转向Pharo https://blog.just4fun.site/post/iot/iot-open-source-projects/ Python异步编程笔记 https://blog.just4fun.site/post/iot/iot-open-source-hardware-community/ 万物积木化开发者社区 CodeLab ❤️ Blender Scratch3技术分析之云变量 API(第7篇) [译]对管道(Pipes)的偏爱 [译]提出正确的问题比得到正确答案更重要 蓝牙设备与Scratch3.0 创建你的第一个Scratch3.0 Extension Scratch3技术分析之项目内部数据(第6篇) Scratch3技术分析之社区 API(第5篇) Scratch3技术分析之User API(第4篇) Scratch3技术分析之项目主页API(第3篇) Scratch3技术分析之静态资源API(第2篇) Scratch3.0、micro:bit与Windows7 https://blog.just4fun.site/post/iot/zerynth-vs-micropython/ 核聚变、方所与半宅空间 可视化编程为何是个糟糕的主意 codelab.club周末聚会 关于codelab.club '下一件大事'是一个房间 Hungry Robot - Eat everything 编程作为一种思考方式 今日简史 史蒂夫·乔布斯传 罗素自选文集 https://blog.just4fun.site/post/edx/tianjin-scratch-ai/ https://blog.just4fun.site/post/edx/richie-cms-openedx/ 徒步武功山 WebUSB与micro:bit 积木化编程与3D场景 夜宿武功山顶 scratch3-adapter接入优必选Alpha系列机器人 https://blog.just4fun.site/post/edx/video-migration-note/ scratch3-adapter重构笔记 https://blog.just4fun.site/post/edx/edx-community-members/ 两种硬件编程风格的比较 使用micro:bit自制PPT翻页笔 柏拉图对话集 scratch3.0 + micro:bit 七月电影放映计划 非营利组织的管理 Screenly--用树莓派让任何屏幕变为可编程的数字标牌 以最佳实践开始你的Django项目 micro:bit与事件驱动 为Scratch3.0设计的插件系统(上篇) OCR应用一例 近两年读过的一些好书 blockly开发之使用python驱动浏览器中的turtle(2) 牛顿新传 文学理论入门 逻辑的引擎 人生的意义 blockly开发之生成并运行js代码(1) blockly开发之hello world(0) micro:bit使用笔记 神器之Termux https://blog.just4fun.site/post/iot/micropython-notes/ Cozmo what is this Scratch的前世今生 下段旅程 我行在远方 爆裂 途中杂记 https://blog.just4fun.site/post/edx/open-edx-startup/ cozmo系列之入门 - 有性格且可编程的机器人 PaperWeekly开发笔记 创业二三事
Etoys学习笔记: 与Scratch互操作
种瓜 · 2019-05-05 · via 夜行人

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 & LearningLearning with Squeak 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与外部服务的通信细节。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# https://python3-cookbook.readthedocs.io/zh_CN/latest/c11/p02_creating_tcp_server.html#id2
from socketserver import BaseRequestHandler, TCPServer
# Etoys scratch client
class EchoHandler(BaseRequestHandler):
    def handle(self):
        print('Got connection from', self.client_address)
        while True:
            msg = self.request.recv(1024)
            print(f'msg:${msg}')
            if not msg:
                break
            self.request.send(msg)

if __name__ == '__main__':
    serv = TCPServer(('',42001), EchoHandler)
    serv.serve_forever()

果不其然,猜测是对的:

由此可以推断,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让我相信我们关注了一个正确的方向。互操作性可能是基于建构主义的学习系统最重要的特性之一。

参考