第一类问题:编程和乐高和机器人,究竟是啥关系?
“编程就是学乐高吗?”“编程就是学机器人吗?”“编程就是学乐高机器人?”“一直弄不懂编程,好多积木拼装也说是编程,感觉好糊涂啊”……这是最出乎我意料的一类问题,但居然是问得最多的。看来不少麻麻被近几年儿童教育领域冒出来的新概念新名词给搅得有点儿昏菜了。问题稍稍有点跑题,我下面的回答可能也会有点跑题,BUT,没关系,只要是对娃有用的,咱们就撸起袖子把它啃透彻搞清楚!
首先,乐高是儿童拼装搭建积木的大品牌,旗下包括很多很多的系列产品,我把它们按功能分成三大类:
砖块搭建类大家应该非常熟悉,绝大多数孩子刚开始接触乐高时玩的就是这一类。我们平时给孩子买的很多一盒一盒的场景类、建筑类主题积木,或者散装的积木桶(Lego Classic系列)都是这种类型。孩子可以按照图纸说明一步一步从头到尾,或者凭自己想象创造拼搭出成品。它最大的特点是——不能动。砖块搭建玩熟了之后,渐渐地可以让孩子接触机械搭建类,机械搭建时会用到轮子、齿轮、梁、栓、马达、控制器等器件。我们平时给孩子买的很多一盒一盒的汽车、火车、飞机、变形金刚等等主题积木,或者专门的科技积木套装(Lego Technic系列)都是这种类型。它最大的特点是——能简单地、重复地动。
乐高机器人则是在砖块和机械搭建的基础之上,结合了编程控制。比方说上面这个挖土机的手臂能通过齿轮被马达所带动,它是个机械搭建。但如果它还能连接电脑程序,让它可以自动地从指定的A点挖些土搬到B点,就是个机器人了。它最大的特点是——想怎么动就怎么动,通过编程来控制。所以,回答前面的问题,学乐高机器人是包括了学编程的。
BUT(注意是一个大大的BUT哦),编程只是乐高机器人的一部分,可以说是比较简单的一部分。比如就挖土机这个例子,编程要干的活很少,控制它走到A点,挖土,再跑到B点,倒土,完了,期间可能需要判断一下距离,角度,或者调用一下传感器,逻辑非常简单。可在没有图纸的情况下,怎么搭出这个能前进、后退、转弯,手臂能抬起放下,还能挖土、倒土的机器却是难点。没有这个灵活的机器,程序编得再好也没招,叫天天不应叫地地不灵。
去年逃逃和几位同学一起参加FLL(FIRST Lego League,FIRST乐高联赛),开始他们想当然地把团队分成一半一半,一半负责搭建,一半负责编程,后来发现要完成任务的瓶颈全集中在机械搭建上,编程则很简单,派一人搞定即可。
所以说如果想培养孩子的编程能力,我建议最好专门学编程,玩乐高机器人通常可能只有30%左右的时间会花在编程上,而且一般不会很深入(当然如果你要整个机器人去解魔方,编程的比重就会很大,但这种Project毕竟是少数)。乐高机器人的机械搭建部分很有挑战,而且非常培养孩子的综合能力,比如力学知识、空间思维、想象力、创造力、美感等等。只是说如果你的目的是让孩子学编程的话,通过乐高机器人学编程,有点像报了个“平面设计”的班来学画画一样。
{
买包子(1);
}
Else
{
买包子(10);
}
再后来,一些有爱的程序员觉得这样的语言小朋友用起来太难了,那些“if”、”else”什么的很难记,所以又发明了一类拖拽式的编程语言。编程者不需要手动写代码,只需要将操作界面上的指令方框拖到主界面,并且对指令框做一些参数设置就好。这种拖拽式的编程语言有很多种,比如Scratch、Hopscotch以及国内的编程猫,前面提到的乐高机器人,用的也是拖拽式的编程语言。
每种编程语言都有自己适用的一亩三分地。广义的编程可不仅仅是用某种语言编写代码,更重要的是该怎么用语言去操控它适用的环境。比如说你可能听过JavaScript用来进行网页开发,但要真正使用它得熟悉html,DOM,CSS,网页生命周期,浏览器渲染机制等等等等;而C++则适合写底层驱动,但也必须把操控的资源和硬件接口搞得一清二楚。@#¥%&()*&…逃妈你究竟在说什么?噢,这一小段搞不太懂没关系,我想表达的是:因为孩子学的是基本的编程思想,而不是解决某个领域的特定问题,所以学哪个语言都无所谓,因为基本的编程思想在各个语言中是相通的。只有当真正去从事编程工作时,才需要根据要实现的功能选择一门合适的语言。而且,对于很多编程高手来说,换语言就像从使用Windows电脑换成使用苹果电脑一样,没什么难度,只要稍微适应一段时间就好。