MicroBlocks 是一种免费/自由的、类似于 Scratch 的图形化编程语言,支持许多具有教育属性的微控制器主板,如 micro:bit、ESP32/ESP8266、树莓派 Pico 等,欢迎使用 MicroBlocks 来学习物理计算/硬件编程。

MicroBlocks 中文主页 已经正式上线!

MicroBlocks 简介

The challenge is not building it but understanding it – Bret Victor 《Seeing Spaces

让学习者专注于解决问题而不是操心系统机制 – John Maloney

MicroBlocks 是硬件编程(物理计算)领域的 Scratch, 它是第一个具有 Scratch 临界质量的硬件编程平台,能够帮助数以千万的新手真正入门。

MicroBlocks 试图解决什么问题呢? 或者说当前的硬件编程领域存在哪些问题?

硬件编程太难入门了

入门太困难了! 我在给老杨的礼物 🎁里记录了我们所受的苦:

我跟老杨便决定好好学习单片机编程(或者叫它硬件编程/物理计算),那时我已经有一些软件编程经验,但只是初学者。很快我们就发现,学习单片机太难了!可怕得像一场灾难。
翻了后一页,就忘了前一页的内容,因为每一页都有无数细节,根本记不住。也不知道哪些重要哪些不重要,作者只是一股脑都告述你。玲琅满目的新名词,看起来完全不像中文,读起来像生造词。每一个概念又牵扯出一大堆其他概念,好像永远没有尽头。我们这本看不懂,就看那本,但都差不多。

多年后,我在阅读《Mindstorms》时, 几乎感动的落泪, 这是一个何等慈悲善意的心灵,为初学者少受些苦难,对教育界宣战,“要改变的是学校的教育机制,而不是孩子”。Seymour Parpert 所抨击的计算机教育里的那些灾难性想法/做法,我大多都亲历过,尽管这本书在我上学时,已经出版了 30 年(40 年后才有中文版), 但整个计算机教育领域好像闻所未闻似的(今天基本依然如此)。 可想而知,主流计算机教育领域到处都是车祸现场(今天基本依然如此)。

当我遇到 MicroBlocks,

我突然意识到,这可能我十年前跟老杨一直寻找的东西。十年过去,它终于出现了。如果我们在上学时遇到它,能用它来做多少有趣的东西呀!

Arduino 与 MicroPython

正在阅读文章的你可能是一个有经验的 Maker(创客),觉得 Arduino 已经很好地解决了入门困难的问题,它让业余爱好者也可以很好地玩转硬件。的确,Arduino 是硬件编程领域的重大进步,让这个领域不再那么令人生畏。在 Arduino 之后,MicroPython 又进一步降低了门槛。

可能是门槛实在太高,即便降了不少,对于没有任何经验的编程新手,依然令人生畏。

图形化硬件编程

随着 Maker/STEM/少儿编程 在教育领域引发越来越多的关注,更多的人试图进一步降低编程的门槛,让新手不仅能进行软件编程,也能成为 Maker,对现实世界的硬件进行编程,进而制作各种有趣的小发明。

Scratch 在帮助新手入门编程方面取得了巨大成功, 截至今天(2022.11.22),单是 MIT Scratch 社区就已经有 9958 万的用户,年龄段分布从 4 岁(22 万)到 80 岁(1.2 万)。

他们在社区里一共创作了 1 亿 1708 万个程序项目!

也许是受到 Scratch 的鼓舞,人们想把 Scratch 的成功经验移植到硬件编程领域,他们的想法是,使用图形积木来控制硬件!

这便是今天数以百计的公司(Google 、微软和乐高…)和高校(CMU、MIT、UC Berkeley…)正在做的事情。

可是,仅仅将代码图形化是不够的。

图形化编程环境通过减少编程过程的语法错误来帮助学习,一些研究表明,学习语法的困难只在早期阶段会遇到,学习编程的一个更大挑战是,学习者需要能够正确预测源代码的更改对程序运行行为的影响。

MicroBlocks: 解决真正的挑战

这个更大挑战正是 MicroBlocks 试图解决的大问题。

MicroBlocks 通过提供拥有活性(liveness)的编程环境,缩短了反馈循环,从而鼓励学习者通过「试错」进行实验和编程。这些改进极大提升了编程的 “可理解性”。

MicroBlocks 相较于其他编程平台具体优越在哪些地方? 我在比较图形化硬件编程平台做了细致讨论。

我曾经在硬件编程上吃了太多的苦, 这正是我如此热衷于分享 MicroBlocks 的原因: 不希望新手们再去忍受那些不必要的痛苦!

MicroBlocks开始你的硬件编程之旅吧!