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

推荐订阅源

Vercel News
Vercel News
Recorded Future
Recorded Future
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
The GitHub Blog
The GitHub Blog
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Google DeepMind News
Google DeepMind News
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Microsoft Azure Blog
Microsoft Azure Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
M
MIT News - Artificial intelligence
云风的 BLOG
云风的 BLOG
Y
Y Combinator Blog
N
News | PayPal Newsroom
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Help Net Security
Help Net Security
博客园 - Franky
SecWiki News
SecWiki News
Recent Announcements
Recent Announcements
T
Troy Hunt's Blog
The Register - Security
The Register - Security
The Last Watchdog
The Last Watchdog
Webroot Blog
Webroot Blog
S
Security Affairs
博客园 - 司徒正美
S
Schneier on Security
I
InfoQ
博客园_首页
www.infosecurity-magazine.com
www.infosecurity-magazine.com
T
Threat Research - Cisco Blogs
Forbes - Security
Forbes - Security
腾讯CDC
N
Netflix TechBlog - Medium
N
News and Events Feed by Topic
Cloudbric
Cloudbric
T
The Exploit Database - CXSecurity.com
P
Proofpoint News Feed
A
About on SuperTechFans
Engineering at Meta
Engineering at Meta
Recent Commits to openclaw:main
Recent Commits to openclaw:main
B
Blog
V
Vulnerabilities – Threatpost
C
Check Point Blog
Google DeepMind News
Google DeepMind News
Google Online Security Blog
Google Online Security Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
Hacker News - Newest:
Hacker News - Newest: "LLM"
C
Cisco Blogs
Schneier on Security
Schneier on Security
O
OpenAI News
K
Kaspersky official blog

夜行人

回家路上 第一期的直播演示项目 震动检测器 正能量 在线参观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开发笔记 创业二三事
浏览器中的 Scratch 1.4
种瓜 · 2023-12-29 · via 夜行人

文章目录

前言

Vanessa 前几天在 Squeak 开发者邮件列表里发了个帖子, 庆祝 SqueakJS 十周年

我于 2013 年 11 月开始研究它,并于 2013 年 12 月 20 日首次公开发布。

SqueakJS 肯定不是最快的 Squeak 虚拟机。但它是兼容性最强的一个,也可以说是最容易理解和调试的一个。

最近我一直致力于复活 2005 年旧版的 Croquet (Alan Kay在2004年的图灵奖演讲中使用了它)

追随这个帖子, 我重新进入 SqueakJS 世界(几年前, 我更换了电脑, 无法使用 Etoys, 曾用 SqueakJS 运行 Etoys )。此次探索之旅, 给了我一些有趣的新发现。

SqueakJS

SqueakJS 是使用纯 JavaScript 实现的 Squeak 虚拟机, 可以运行未经修改的Squeak image。Squeak 是 Smalltalk 的现代实现, 最初的动态面向对象编程环境。它几乎在任何平台上都可以完全相同地运行, 现在也可以在 Web 浏览器中运行。

Squeak 最初的虚拟机由 John Maloney 使用 C 实现。

SqueakJS 使用 Lively Squeak 作为调试界面。

关于 SqueakJS 的未来, 前几天有人在 Hacker News的帖子里问了这个问题, 也是我过去感兴趣的问题:

你有没有考虑过在 WebAssembly 中实现 Smalltalk vm

Vanessa 的回答是:

我想使用 WebAssembly 加速 SqueakJS 的一些部分。例如, BitBlt将是一个主要的目标。
然而,关于整体的VM,我会交给其他人(Craig Latta一直在取得进展)。
我只是喜欢在动态高级语言中编码和调试。我们从 WASM 可能获得的唯一好处就是速度,但我们会在可读性、灵活性和乐趣方面失去很多。 我更愿意让 SqueakJS JIT 生成 JavaScript JIT 可以优化的代码。这可能会比 WASM 更快。 查看我在这方面的思考

在 Scratch 的所有版本中, 我认为 Scratch 1.4 是最出色的, 它简洁而优雅。 之后使用 Flash(Scratch2.0) 和 JavaScript(Scratch 3.0) 实现的版本, 僵硬而难以生长。我敢打赌在 Scratch 1.4 之后, 开发团队的乐趣肯定断崖式下跌📉。 我预计 Scratch 在未来会被 Snap! 完全取代。

Scratch 1.4 运行在早期的 Squeak 虚拟机之上, 早期的 Squeak 虚拟机是一个 32 位可执行文件, 在许多现代计算机上已经无法工作。

多亏了 VanessaSqueakJS 上的工作, 使得我们可以在现代浏览器里运行 Scratch 1.4

进入开发模式

我们不仅可以在浏览器里体验 Scratch 1.4 的大多数功能, 还可以进入 Scratch 的开发环境 Squeak 中, 这带来了巨大的乐趣、可理解性和深入探索的可能。

现代的 Scratch(Scratch3.0) 完全丧失了这些乐趣和可理解性, 非常令人失望。

要进入 Squeak 环境, 需要进行以下操作:

  1. 按住 Shift 键并单击 Scratch LOGO(页面左上角) 中 R 的圆形位置。
  2. 点击 Turn fill screen off
  3. 点击窗口右侧和底部出现的白色区域。
  4. 单击 open....
  5. 点击 browser
  6. 出现 System Browser — 在此处编辑代码。

Scratch 1.4 只是一个 Squeak 应用程序(Morphic 应用), 你可以利用掌握的 Smalltalk 知识尽情玩耍和改造它。

liveness(活性)

liveness(活性) 是指它们的编程界面包含来自正在运行的程序的反馈, 而 richness(丰富性) 是指它们允许用户使用特定领域的视觉表示和交互而不是代码来编辑程序 –Engraft: An API for Live, Rich, and Composable Programming

Scratch1.4 有出色的liveness(活性), 你可以在系统运行期间探索和修改它,仿佛在与一个"活"的对象互动, 这种交互式探索是理解系统的绝佳方式, 放弃与对象交互,转而阅读代码是非常愚蠢和原始的。 Alan kay 在创造 “面向对象” 一词时,强调了这种动态性(Dynamic), 但现代的面向对象系统几乎全都忽视了这一点。

尤其令人遗憾的是, Scratch 正是在 Smalltalk的"动态"传统中出现的产物, 但随着 John Maloney 和其他先驱离开这个团队, 剩下的人似乎完全忘记了哺育它的思想。 Scratch3.0 失去了大量的"活性", 尽管在用户界面中保留了最初的活性, 在此之下基本是完全"僵化"的(这种痛苦由开发者和任何有野心想扩展它的用户承受, 我是其中之一), 僵化的架构也导致它这些年来几乎没有任何发展。

好在 Snap! 和 MicroBlocks 在这个方向上继续前进,并持续取得巨大进展。

参考