编者注:“芥末堆|教育智囊团”社群邀请了教育行业专家、学者、创始人、老师等人,不定期对当下的热点话题、细分领域、教育现象进行探讨和分享。
本期分享嘉宾:张龙,诺丁科技CEO,开发图形化编程工具。
在本期【智囊分享】中,张老师分享了编程和创客里面三个重要组成部分,硬件、课程和软件。
硬件分为没有操作系统和有操作系统两大类,比较有代表性的无操作系统硬件是arduino ide,它能对自己进行开发。有操作系统硬件是microbit,它的开发工具比较丰富,有BBC开发的,有微软开发的。
课程按照学习方式分成两种不同类别,互联网引导式学习和案例式学习。互联网引导式学习,他实际上很像闯关游戏,完成一个任务,再完成另外一个任务。比较知名的是code.org,Blockly games。案例式的讲解,这种大部分是以应用软件的应用为学习方向。比较出名的有scratch、Blockly、Blockly for arduino,编程猫。
软件按照功能分类,分为文本编程类、动画编程类、纯硬件编程类。
以下是分享实录,经智囊团成员陈健(@ by磕磕嘻)编辑整理。
大家好,今天主要和大家分享编程和创客里面三个重要组成部分,硬件、课程和软件。但是本次分享不涉及课程授课方法这类内容,相对于这些,我更擅长技术。
一、硬件
当前市场上创客类的硬件有很多,琳琅满目,为帮助大家理解,我简单做了个小分类,把它分成没有操作系统和有操作系统两大类。
1.没有操作系统
生活中常见的arduino,是没有操作系统的,主要是以C语言类编程为主;比较有代表性的就是arduino ide,它能对自己进行开发。然后是scratch、blockly for arduino、以及scratch for arduino。此外,arduino比较特别,它本身是没有操作系统的,必须先用编辑器生成代码,对它进行烧写,烧写后它才能根据指定命令行来执行相应的运行方式或者动作。这是我们最常见的,也是比较廉价的一种。市面上大概70%左右的商家,应该都是基于arduino来制作的创客套件。
2.有操作系统的
有操作系统的硬件芯片比较特别。相对单片机的芯片它里面包含了一个操作系统,价格会稍稍贵一些。
它包含的操作系统也分成两类。
第一类是嵌入式操作系统,它是非实时操作系统,比较代表性的就有树莓派,类似于一个小电脑一样,我们可以把它看成一个手机板子。此外还有乐高,乐高EV3大主机里面,实际上是集成了一个Linux操作系统,也属于嵌入式,内核会比较大一些,但和PC比起来,功能相对较弱,我们可以把它看成手机。
第二类是实时操作系统,内核较小,很精简。目前我见到的实时操作系统硬件类产品只有一个,BBC公司开发的microbit,它的开发工具比较丰富,有BBC开发的,有微软开发的,有德国人开发的,还有其他。它的实时操作系统是应用micro python的实时操作系统,也是一个开源操作系统。对micro python支持的有诺丁。microbit是在microPython的基础上开发的。
除了Linux操作系统以外,还有一类带着安卓操作系统的。这种就是手机直接用的操作系统,它也被用到了创客套件里面,但比较少见。举个例子说明一下,像市面上我们容易见到的,带着视频、会走、会说话、带着语音识别功能的,大多数都是这类安卓操作系统在后台做支撑开发的。它的开发版功能会强大一点,芯片比较不同。这类有操作系统的芯片大部分都是ARM芯片,它的性能会比较好一些,价格会比较高一些。
二、课程
按照学习方式来分类,我们把课程分成互联网引导式学习和案例式学习。
1.互联网引导式学习
第一种学习方式很像闯关游戏。这种方式是按照编程思路来学习的,比如我们先学习它怎么动,然后再学习它的条件,再学习循环和学习嵌套循环,之后学习函数,一步一步引导式学习。比较知名的是code.org,Blockly games、诺丁,还有codemonkey都是采用这种形式学习。
2.案例式讲解学习
另外一种是案例式的讲解,这种大部分是以应用软件的应用为学习方向。比较出名的有scratch、Blockly、Blockly for arduino, microbit、编程猫和一些其他的东西。这种方式一般开场的第一堂课,都是讲解这个软件的界面是什么样、什么地方是舞台、什么地方是编程栏、角色是什么样的、如何使用拖块?大部分的形式是这样,之后会以案例形式来讲解,比如说我们今天做一个案例,愤怒的小鸟。这个游戏是怎么样的?然后我们来分解它,先做什么后做什么,都是以项目驱动式为主。 比如做一个小车,先搭建什么,后搭建什么,然后给它编程,哪一个马达转、哪个马达停下,大部分都是这样的。
虽然分成了两个不同类别,但是我认为两种方式都需要。向导式,更适合低幼段的儿童,比较游戏化,比较循序渐进。他对这个软件还没有思路的时候,我们可以一步一步来引导他,这种方式多适合于在线上来操作。案例讲解的这种形式,在线上有个问题,互动交流不是很好,建议放到线下来做会更好一些,气氛和小朋友的学习心态等各方面都会好很多。
三、软件
我们按两个不同的分类区分,第一个是按照功能分类,第二个是复杂分类。
1、按照功能分类
功能分类,实际上就是看他是不是可以进行动画编程、可不可以对硬件进行控制?有没有舞台,有没有动画角色,能不能敲文字? 是不是可以通过网络进行通讯?来进行分类。
我粗略地把它分成了三类。
文本编程类:这个比较经典,最早的小海龟编程就是这种方式。它的上面是小海龟,下面是代码。这种代码比较特别,它不完全是编程代码,它里面加载了特定的库。还有codemonkey也是这种形式。之后我们可能在网上看见的学Python、JS,还有成人的一些课程里大部分都是用这种文本编程的形式。
动画编程类:动画编程以scratch为主要特征,带有舞台、卡通效果,有各种角色,动画能够互相交互,很像以前的flash。但是它不是通过调整画面帧来实现动画效果,而是通过图形化编程语言来实现,使用面也比较广。此类软件国内常见的就是scratch,以及诺丁、编程猫。
纯硬件编程类:它的软件有很多,我列几个比较流行的。像手机上能够拖快的、小汽车能跑、机器人能动等这类都是硬件编程工具来实现的,比较出名的是微软开发的makecode、北师大副教授开发的米思奇、以及makeblock等等。
2、按复杂分类
按照比较有代表性的软件生态圈,进行了分类。
首先讲的就是scratch,它2.0版以后是用Blockly开发的,把之前的代码都抛弃掉了。但是我们目前用得最多的还有scratch1.0和2.0。它由MIT独立研发,它的形式就是在左侧/右侧有舞台,都是基于图形化的拖块形式。可以给动画人物编程,同时也可以给硬件编程。但是硬件编程大部分都是由第三方来提供。比如scratch 1.0比较出名的第三方工具叫S4A,它是由伯克利大学的一个软件团队来开发的,只是对arduino进行了兼容。
scratch2.0在国外的第三方硬件插件就很多了,但是scratch2.0原是支持硬件的。国外的第三方插件有S2M、scratch for arduino、scratch for microbit,实际上scratch也可以对micro python的操作系统编程,也可以对C语言的单片机进行编程,但它中间都是通过通信插件来结合的。国内做得比较好的有很多,我们在市面上看见带着舞台、又可以给硬件编程的,基本上都是scratch。
我们先跳过Blockly,我们先讲下面的!snap。!snap跟scratch有千丝万缕关系,实际上scratch是由adobe公司的ActionScript这个语言来开发的,必须用flash这个插件来支持。所以后来伯克利大学的教授觉得这种方式不是很好,就用了html方式重新把scratch的所有功能都实现了一遍,它的名字就叫!snap。它本身不支持硬件,后来有个国外团队,把arduino的硬件植入到了!snap里面,它的软件又做了一个离线的封装,它叫snap4arduino,大家都可以到github上面去找,国内用!snap的其实不多。
最下面是小海龟编程,这个分类主要是用代码来实现教小朋友编程。这种方式,年龄大一点的小孩比较容易接受,这个分支其实比较多,有很多的软件也运用这种形式,但是代码就不再是当年小海龟编程的那套代码。改写的人蛮多的,大家可以到36Kr上面教育板块去看编程类的公司,用这类方式来做的还是蛮多的。这种形式比较出名的就是codemonkey。它们也是用这种形式来教的,教Python、JS、C等。
Blockly这个分支比较特别,实际上Blockly本身不是教编程的具,它是一个图形化编程框架。谷歌公司把这个框架提供给大家,大家在这个框架上来堆东西,堆出来各种各样的东西。
支持用这种形式来堆的硬件公司就比较多了。像国外的微软的makecode、PXT formicrobit等。刚才我们提到过,scratch还有一个新的版本——scratch3.0, scratch改换了两种不同的语言开发,现在是第三种。他基本把以前的工具都放弃掉,然后重新在blockly的基础上构建了scratch3.0,应该会在18年的中旬或者年底发行这款软件。
基于谷歌这个框架,这种游戏情节向导式学习方式有三个,我上面只写了两个,第一个是code.org,这个大家都知道,第二个是谷歌自己的学习工具叫Blockly games,也是在它这个框架上二次开发的。这种方式费时间,但是效果会很好,大部分都是以学编程的逻辑为主。
我们再讲讲国内的,国内的支持基于Blockly来开发。实际上我们知道有图形化界面,有舞台效果的,应该就是编程猫了,诺丁也同时支持。不过诺丁比较特别一些,诺丁支持arduino的硬件和micro python,同时支持多个硬件互动,加入了一些物联网功能。这两款软件是国内开发的,算是比较少见的。
然后最后一类就是国内开发的,基于blockly开发可对开源硬件及单片机进行编程的,比如:脑力风暴、米思奇,makeblock手机版等等,只要你在手机上看见能用的,有一个左侧的变量或者是右侧变量可以通话,运行生成后直接对硬件进行控制。这种形式基本上都是对Blockly进行二次开发。支持硬件的软件比较多,也比较常见。
本次分享的内容大概就这些,如果有我没提到的,大家想要补充的可以在文章底部留言区告诉我,我来补充一下,谢谢大家!
2、芥末堆不接受通过公关费、车马费等任何形式发布失实文章,只呈现有价值的内容给读者;
3、如果你也从事教育,并希望被芥末堆报道,请您 填写信息告诉我们。