從 MicroBlocks 開始你的硬件編程之旅
作者簡介
種瓜系英荔教育架構(gòu)師,同時(shí)為英荔官方合作伙伴——非營利編程教育組織 CodeLab 創(chuàng)始人、CodeLab Adapter 核心開發(fā)者、國內(nèi)人工智能學(xué)術(shù)社區(qū) PaperWeekly 聯(lián)合創(chuàng)始人、在線教育開源社區(qū) Open edX Authors & 中國社區(qū)發(fā)起人之一。
2022 年,種瓜擔(dān)任 MicroBlocks 的中國區(qū)官方大使(由風(fēng)靡全球的 Scratch 聯(lián)合創(chuàng)始人兼首席架構(gòu)師、 MicroBlocks 創(chuàng)始人 John Maloney 官方指定)。
英荔教育與 CodeLab 均為 MicroBlocks 官方合作伙伴,將共同面向全國推廣這一小巧、快速、用戶友好的圖形化硬件編程平臺,讓其惠及更多編程群體。
MicroBlocks 是一種免費(fèi)/自由的、類似于 Scratch 的圖形化編程語言,支持許多具有教育屬性的微控制器主板,如 micro:bit、ESP32/ESP8266、樹莓派 Pico 等,歡迎使用 MicroBlocks 來學(xué)習(xí)物理計(jì)算/硬件編程。

MicroBlocks 中文主頁(microblocksfun.cn)
MicroBlocks 簡介
The challenge is not building it but understanding it?!狟ret Victor 《Seeing Spaces》
讓學(xué)習(xí)者專注于解決問題而不是操心系統(tǒng)機(jī)制。——John Maloney
MicroBlocks 是硬件編程(物理計(jì)算)領(lǐng)域的 Scratch, 它是第一個(gè)具有 Scratch 臨界質(zhì)量的硬件編程平臺,能夠幫助數(shù)以千萬的新手真正入門。
MicroBlocks 試圖解決什么問題呢?或者說當(dāng)前的硬件編程領(lǐng)域存在哪些問題?
硬件編程太難入門了
入門太困難了!我在給老楊的禮物里記錄了我們所受的苦:
我跟老楊便決定好好學(xué)習(xí)單片機(jī)編程(或者叫它硬件編程/物理計(jì)算),那時(shí)我已經(jīng)有一些軟件編程經(jīng)驗(yàn),但只是初學(xué)者。很快我們就發(fā)現(xiàn),學(xué)習(xí)單片機(jī)太難了!可怕得像一場災(zāi)難。
翻了后一頁,就忘了前一頁的內(nèi)容,因?yàn)槊恳豁摱加袩o數(shù)細(xì)節(jié),根本記不住。也不知道哪些重要哪些不重要,作者只是一股腦都告述你。玲瑯滿目的新名詞,看起來完全不像中文,讀起來像生造詞。每一個(gè)概念又牽扯出一大堆其他概念,好像永遠(yuǎn)沒有盡頭。我們這本看不懂,就看那本,但都差不多。
…
多年后,我在閱讀《Mindstorms》時(shí), 幾乎感動(dòng)得落淚,這是一個(gè)何等慈悲善意的心靈,為初學(xué)者少受些苦難,對教育界宣戰(zhàn),“要改變的是學(xué)校的教育機(jī)制,而不是孩子”。Seymour Parpert 所抨擊的計(jì)算機(jī)教育里的那些災(zāi)難性想法/做法,我大多都親歷過,盡管這本書在我上學(xué)時(shí),已經(jīng)出版了 30 年(40 年后才有中文版),但整個(gè)計(jì)算機(jī)教育領(lǐng)域好像聞所未聞似的(今天基本依然如此)??上攵?,主流計(jì)算機(jī)教育領(lǐng)域到處都是車禍現(xiàn)場(今天基本依然如此)。
當(dāng)我遇到 MicroBlocks,我突然意識到,這可能是我十年前跟老楊一直尋找的東西。十年過去,它終于出現(xiàn)了。如果我們在上學(xué)時(shí)遇到它,能用它來做多少有趣的東西呀!
Arduino 與 MicroPython
正在閱讀文章的你可能是一個(gè)有經(jīng)驗(yàn)的 Maker(創(chuàng)客),覺得 Arduino 已經(jīng)很好地解決了入門困難的問題,它讓業(yè)余愛好者也可以很好地玩轉(zhuǎn)硬件。的確,Arduino 是硬件編程領(lǐng)域的重大進(jìn)步,讓這個(gè)領(lǐng)域不再那么令人生畏。在 Arduino 之后,MicroPython 又進(jìn)一步降低了門檻。
可能是門檻實(shí)在太高,即便降了不少,對于沒有任何經(jīng)驗(yàn)的編程新手,依然令人生畏。
圖形化硬件編程
隨著 Maker/STEM/少兒編程在教育領(lǐng)域引發(fā)越來越多的關(guān)注,更多的人試圖進(jìn)一步降低編程的門檻,讓新手不僅能進(jìn)行軟件編程,也能成為 Maker,對現(xiàn)實(shí)世界的硬件進(jìn)行編程,進(jìn)而制作各種有趣的小發(fā)明。
Scratch 在幫助新手入門編程方面取得了巨大成功,截至今天(2022.11.22),單是 MIT Scratch 社區(qū)就已經(jīng)有 9958 萬的用戶,年齡段分布從 4 歲(22 萬)到 80 歲(1.2 萬)。

他們在社區(qū)里一共創(chuàng)作了 1 億 1708 萬個(gè)程序項(xiàng)目!
也許是受到 Scratch 的鼓舞,人們想把 Scratch 的成功經(jīng)驗(yàn)移植到硬件編程領(lǐng)域,他們的想法是,使用圖形積木來控制硬件!
這便是今天數(shù)以百計(jì)的公司(Google、微軟和樂高…)和高校(CMU、MIT、UC Berkeley…)正在做的事情。
可是,僅僅將代碼圖形化是不夠的。
圖形化編程環(huán)境通過減少編程過程的語法錯(cuò)誤來幫助學(xué)習(xí),一些研究表明,學(xué)習(xí)語法的困難只在早期階段會(huì)遇到,學(xué)習(xí)編程的一個(gè)更大挑戰(zhàn)是,學(xué)習(xí)者需要能夠正確預(yù)測源代碼的更改對程序運(yùn)行行為的影響。
MicroBlocks: 解決真正的挑戰(zhàn)
這個(gè)更大挑戰(zhàn)正是 MicroBlocks 試圖解決的大問題。
MicroBlocks 通過提供擁有活性(liveness)的編程環(huán)境,縮短了反饋循環(huán),從而鼓勵(lì)學(xué)習(xí)者通過「試錯(cuò)」進(jìn)行實(shí)驗(yàn)和編程。這些改進(jìn)極大提升了編程的「可理解性」。
MicroBlocks 相較于其他編程平臺具體優(yōu)越在哪些地方?我在比較圖形化硬件編程平臺做了細(xì)致討論。
我曾經(jīng)在硬件編程上吃了太多的苦,這正是我如此熱衷于分享 MicroBlocks 的原因:不希望新手們再去忍受那些不必要的痛苦!
從 MicroBlocks 開始你的硬件編程之旅吧!