編者注:“芥末堆|教育智囊團”社群邀請了教育行業(yè)專家、學(xué)者、創(chuàng)始人、老師等人,不定期對當(dāng)下的熱點話題、細(xì)分領(lǐng)域、教育現(xiàn)象進(jìn)行探討和分享。
本期分享嘉賓:張龍,諾丁科技CEO,開發(fā)圖形化編程工具。
在本期【智囊分享】中,張老師分享了編程和創(chuàng)客里面三個重要組成部分,硬件、課程和軟件。
硬件分為沒有操作系統(tǒng)和有操作系統(tǒng)兩大類,比較有代表性的無操作系統(tǒng)硬件是arduino ide,它能對自己進(jìn)行開發(fā)。有操作系統(tǒng)硬件是microbit,它的開發(fā)工具比較豐富,有BBC開發(fā)的,有微軟開發(fā)的。
課程按照學(xué)習(xí)方式分成兩種不同類別,互聯(lián)網(wǎng)引導(dǎo)式學(xué)習(xí)和案例式學(xué)習(xí)。互聯(lián)網(wǎng)引導(dǎo)式學(xué)習(xí),他實際上很像闖關(guān)游戲,完成一個任務(wù),再完成另外一個任務(wù)。比較知名的是code.org,Blockly games。案例式的講解,這種大部分是以應(yīng)用軟件的應(yīng)用為學(xué)習(xí)方向。比較出名的有scratch、Blockly、Blockly for arduino,編程貓。
軟件按照功能分類,分為文本編程類、動畫編程類、純硬件編程類。
以下是分享實錄,經(jīng)智囊團成員陳健(@ by磕磕嘻)編輯整理。
大家好,今天主要和大家分享編程和創(chuàng)客里面三個重要組成部分,硬件、課程和軟件。但是本次分享不涉及課程授課方法這類內(nèi)容,相對于這些,我更擅長技術(shù)。
一、硬件
當(dāng)前市場上創(chuàng)客類的硬件有很多,琳瑯滿目,為幫助大家理解,我簡單做了個小分類,把它分成沒有操作系統(tǒng)和有操作系統(tǒng)兩大類。
1.沒有操作系統(tǒng)
生活中常見的arduino,是沒有操作系統(tǒng)的,主要是以C語言類編程為主;比較有代表性的就是arduino ide,它能對自己進(jìn)行開發(fā)。然后是scratch、blockly for arduino、以及scratch for arduino。此外,arduino比較特別,它本身是沒有操作系統(tǒng)的,必須先用編輯器生成代碼,對它進(jìn)行燒寫,燒寫后它才能根據(jù)指定命令行來執(zhí)行相應(yīng)的運行方式或者動作。這是我們最常見的,也是比較廉價的一種。市面上大概70%左右的商家,應(yīng)該都是基于arduino來制作的創(chuàng)客套件。
2.有操作系統(tǒng)的
有操作系統(tǒng)的硬件芯片比較特別。相對單片機的芯片它里面包含了一個操作系統(tǒng),價格會稍稍貴一些。
它包含的操作系統(tǒng)也分成兩類。
第一類是嵌入式操作系統(tǒng),它是非實時操作系統(tǒng),比較代表性的就有樹莓派,類似于一個小電腦一樣,我們可以把它看成一個手機板子。此外還有樂高,樂高EV3大主機里面,實際上是集成了一個Linux操作系統(tǒng),也屬于嵌入式,內(nèi)核會比較大一些,但和PC比起來,功能相對較弱,我們可以把它看成手機。
第二類是實時操作系統(tǒng),內(nèi)核較小,很精簡。目前我見到的實時操作系統(tǒng)硬件類產(chǎn)品只有一個,BBC公司開發(fā)的microbit,它的開發(fā)工具比較豐富,有BBC開發(fā)的,有微軟開發(fā)的,有德國人開發(fā)的,還有其他。它的實時操作系統(tǒng)是應(yīng)用micro python的實時操作系統(tǒng),也是一個開源操作系統(tǒng)。對micro python支持的有諾丁。microbit是在microPython的基礎(chǔ)上開發(fā)的。
除了Linux操作系統(tǒng)以外,還有一類帶著安卓操作系統(tǒng)的。這種就是手機直接用的操作系統(tǒng),它也被用到了創(chuàng)客套件里面,但比較少見。舉個例子說明一下,像市面上我們?nèi)菀滓姷降模瑤е曨l、會走、會說話、帶著語音識別功能的,大多數(shù)都是這類安卓操作系統(tǒng)在后臺做支撐開發(fā)的。它的開發(fā)版功能會強大一點,芯片比較不同。這類有操作系統(tǒng)的芯片大部分都是ARM芯片,它的性能會比較好一些,價格會比較高一些。
二、課程
按照學(xué)習(xí)方式來分類,我們把課程分成互聯(lián)網(wǎng)引導(dǎo)式學(xué)習(xí)和案例式學(xué)習(xí)。
1.互聯(lián)網(wǎng)引導(dǎo)式學(xué)習(xí)
第一種學(xué)習(xí)方式很像闖關(guān)游戲。這種方式是按照編程思路來學(xué)習(xí)的,比如我們先學(xué)習(xí)它怎么動,然后再學(xué)習(xí)它的條件,再學(xué)習(xí)循環(huán)和學(xué)習(xí)嵌套循環(huán),之后學(xué)習(xí)函數(shù),一步一步引導(dǎo)式學(xué)習(xí)。比較知名的是code.org,Blockly games、諾丁,還有codemonkey都是采用這種形式學(xué)習(xí)。
2.案例式講解學(xué)習(xí)
另外一種是案例式的講解,這種大部分是以應(yīng)用軟件的應(yīng)用為學(xué)習(xí)方向。比較出名的有scratch、Blockly、Blockly for arduino, microbit、編程貓和一些其他的東西。這種方式一般開場的第一堂課,都是講解這個軟件的界面是什么樣、什么地方是舞臺、什么地方是編程欄、角色是什么樣的、如何使用拖塊?大部分的形式是這樣,之后會以案例形式來講解,比如說我們今天做一個案例,憤怒的小鳥。這個游戲是怎么樣的?然后我們來分解它,先做什么后做什么,都是以項目驅(qū)動式為主。 比如做一個小車,先搭建什么,后搭建什么,然后給它編程,哪一個馬達(dá)轉(zhuǎn)、哪個馬達(dá)停下,大部分都是這樣的。
雖然分成了兩個不同類別,但是我認(rèn)為兩種方式都需要。向?qū)剑m合低幼段的兒童,比較游戲化,比較循序漸進(jìn)。他對這個軟件還沒有思路的時候,我們可以一步一步來引導(dǎo)他,這種方式多適合于在線上來操作。案例講解的這種形式,在線上有個問題,互動交流不是很好,建議放到線下來做會更好一些,氣氛和小朋友的學(xué)習(xí)心態(tài)等各方面都會好很多。
三、軟件
我們按兩個不同的分類區(qū)分,第一個是按照功能分類,第二個是復(fù)雜分類。
1、按照功能分類
功能分類,實際上就是看他是不是可以進(jìn)行動畫編程、可不可以對硬件進(jìn)行控制?有沒有舞臺,有沒有動畫角色,能不能敲文字? 是不是可以通過網(wǎng)絡(luò)進(jìn)行通訊?來進(jìn)行分類。
我粗略地把它分成了三類。
文本編程類:這個比較經(jīng)典,最早的小海龜編程就是這種方式。它的上面是小海龜,下面是代碼。這種代碼比較特別,它不完全是編程代碼,它里面加載了特定的庫。還有codemonkey也是這種形式。之后我們可能在網(wǎng)上看見的學(xué)Python、JS,還有成人的一些課程里大部分都是用這種文本編程的形式。
動畫編程類:動畫編程以scratch為主要特征,帶有舞臺、卡通效果,有各種角色,動畫能夠互相交互,很像以前的flash。但是它不是通過調(diào)整畫面幀來實現(xiàn)動畫效果,而是通過圖形化編程語言來實現(xiàn),使用面也比較廣。此類軟件國內(nèi)常見的就是scratch,以及諾丁、編程貓。
純硬件編程類:它的軟件有很多,我列幾個比較流行的。像手機上能夠拖快的、小汽車能跑、機器人能動等這類都是硬件編程工具來實現(xiàn)的,比較出名的是微軟開發(fā)的makecode、北師大副教授開發(fā)的米思奇、以及makeblock等等。
2、按復(fù)雜分類
按照比較有代表性的軟件生態(tài)圈,進(jìn)行了分類。
首先講的就是scratch,它2.0版以后是用Blockly開發(fā)的,把之前的代碼都拋棄掉了。但是我們目前用得最多的還有scratch1.0和2.0。它由MIT獨立研發(fā),它的形式就是在左側(cè)/右側(cè)有舞臺,都是基于圖形化的拖塊形式??梢越o動畫人物編程,同時也可以給硬件編程。但是硬件編程大部分都是由第三方來提供。比如scratch 1.0比較出名的第三方工具叫S4A,它是由伯克利大學(xué)的一個軟件團隊來開發(fā)的,只是對arduino進(jìn)行了兼容。
scratch2.0在國外的第三方硬件插件就很多了,但是scratch2.0原是支持硬件的。國外的第三方插件有S2M、scratch for arduino、scratch for microbit,實際上scratch也可以對micro python的操作系統(tǒng)編程,也可以對C語言的單片機進(jìn)行編程,但它中間都是通過通信插件來結(jié)合的。國內(nèi)做得比較好的有很多,我們在市面上看見帶著舞臺、又可以給硬件編程的,基本上都是scratch。
我們先跳過Blockly,我們先講下面的!snap。!snap跟scratch有千絲萬縷關(guān)系,實際上scratch是由adobe公司的ActionScript這個語言來開發(fā)的,必須用flash這個插件來支持。所以后來伯克利大學(xué)的教授覺得這種方式不是很好,就用了html方式重新把scratch的所有功能都實現(xiàn)了一遍,它的名字就叫!snap。它本身不支持硬件,后來有個國外團隊,把arduino的硬件植入到了!snap里面,它的軟件又做了一個離線的封裝,它叫snap4arduino,大家都可以到github上面去找,國內(nèi)用!snap的其實不多。
最下面是小海龜編程,這個分類主要是用代碼來實現(xiàn)教小朋友編程。這種方式,年齡大一點的小孩比較容易接受,這個分支其實比較多,有很多的軟件也運用這種形式,但是代碼就不再是當(dāng)年小海龜編程的那套代碼。改寫的人蠻多的,大家可以到36Kr上面教育板塊去看編程類的公司,用這類方式來做的還是蠻多的。這種形式比較出名的就是codemonkey。它們也是用這種形式來教的,教Python、JS、C等。
Blockly這個分支比較特別,實際上Blockly本身不是教編程的具,它是一個圖形化編程框架。谷歌公司把這個框架提供給大家,大家在這個框架上來堆東西,堆出來各種各樣的東西。
支持用這種形式來堆的硬件公司就比較多了。像國外的微軟的makecode、PXT formicrobit等。剛才我們提到過,scratch還有一個新的版本——scratch3.0, scratch改換了兩種不同的語言開發(fā),現(xiàn)在是第三種。他基本把以前的工具都放棄掉,然后重新在blockly的基礎(chǔ)上構(gòu)建了scratch3.0,應(yīng)該會在18年的中旬或者年底發(fā)行這款軟件。
基于谷歌這個框架,這種游戲情節(jié)向?qū)綄W(xué)習(xí)方式有三個,我上面只寫了兩個,第一個是code.org,這個大家都知道,第二個是谷歌自己的學(xué)習(xí)工具叫Blockly games,也是在它這個框架上二次開發(fā)的。這種方式費時間,但是效果會很好,大部分都是以學(xué)編程的邏輯為主。
我們再講講國內(nèi)的,國內(nèi)的支持基于Blockly來開發(fā)。實際上我們知道有圖形化界面,有舞臺效果的,應(yīng)該就是編程貓了,諾丁也同時支持。不過諾丁比較特別一些,諾丁支持arduino的硬件和micro python,同時支持多個硬件互動,加入了一些物聯(lián)網(wǎng)功能。這兩款軟件是國內(nèi)開發(fā)的,算是比較少見的。
然后最后一類就是國內(nèi)開發(fā)的,基于blockly開發(fā)可對開源硬件及單片機進(jìn)行編程的,比如:腦力風(fēng)暴、米思奇,makeblock手機版等等,只要你在手機上看見能用的,有一個左側(cè)的變量或者是右側(cè)變量可以通話,運行生成后直接對硬件進(jìn)行控制。這種形式基本上都是對Blockly進(jìn)行二次開發(fā)。支持硬件的軟件比較多,也比較常見。
本次分享的內(nèi)容大概就這些,如果有我沒提到的,大家想要補充的可以在文章底部留言區(qū)告訴我,我來補充一下,謝謝大家!
2、芥末堆不接受通過公關(guān)費、車馬費等任何形式發(fā)布失實文章,只呈現(xiàn)有價值的內(nèi)容給讀者;
3、如果你也從事教育,并希望被芥末堆報道,請您 填寫信息告訴我們。