关于少儿编程的小讨论

  大家好,我是阿赵。
  今天来讨论一下,小朋友学习编程的问题。
  在这个年代,手机作为电话本身的功能性已经越来越淡薄了,平时真正认识的朋友,基本上都是通过微信来沟通。而还会给你打电话发短信的,很大部分都是各种广告推销了。
  我接得最多的推销电话,就是少儿编程的。基本上每周都会有一两个电话,一接听对面就是“你好,我是某某少儿编程的某老师,现在有一节免费体验课程……”。对于这种电话,我都是礼貌性的一言不发直接挂断,因为我实在不知道说些什么好。
  并不是我自己作为程序员,所以就不屑于其他的编程教育机构。也并不是说我感觉自己可以轻松的教会儿子编程。而是我感觉,少儿编程,在很大程度上,是有点类似于脑白金这种东西。给钱的人和享受服务的人并不相同,所以很多时候给了钱,连小孩学了什么家长可能都搞不清楚。所以这里阿赵给大家分析一下,少儿编程究竟怎样去看待。
  少儿编程的课程种类非常多。
  比较著名的有乐高机器人类编程的可视化编程,比如Scratch或者Mixly。这种编程都是面向初学者,不需要手动输入代码,只需要在编程软件里面创建需要的积木节点,然后把多个功能的积木节点按照逻辑拼接在一起,然后配合上专门的传输数据方式,就可以控制车子移动逻辑、机器人行走逻辑,还能配合着界面做出很多有意思的东西,比如做游戏。这个东西我觉得有点类似于虚幻引擎的蓝图系统,但比蓝图简单很多。
  培训机构里也有学习传统语言,比如C++、Java或者Python的。但这些语言的难度有点高,所以也有一些培训机构自己写了一些简化版的语言编译器,把某种语言简化成更简单的语法和少量的API,让小孩能单纯的熟悉命令和语句的使用,为以后学习传统语言打基础的,比如GoC之类。
为什么这么小的小孩就要开始学习编程?培训机构给出的原因有很多,比如开发智力、锻炼逻辑思维、赢在起跑线,甚至说可以通过竞赛获奖报送清华北大都有人敢说出来。
  对于开发智力和锻炼逻辑思维,我是很认同的。虽然编程并不是什么很高大尚的东西,但如果小孩肯在这方面去花心思努力,起码他是肯主动去思考问题。那么,这样的小孩的脑部活跃程度和思维能力,肯定是比整体顾着玩游戏或者看电视的小孩高很多。
  至于功利性很强的那些目的,我觉得是大可不必的。长大之后的职业千万种,而大部分的职业都并不需要懂编程。如果真的想赢在起跑线上,可以选择学习的东西很多,编程反而是排在很后面的。
  如果只是基于开发智力,我觉得学习Scratch或者Mixly是挺不错的。不过这种课程在外面学习很贵,一两万元一期课程,实际上大部分时间就是教练在陪小孩玩乐高积木,然后教他们简单的控制一下。我儿子是小学一年级的时候开始学Scratch的,但并没有花一分钱。因为他们学校的课外兴趣小组有创意搭建课程,然后Scratch是学校免费教的。由于学得不错,进阶之后就一直免费学了一年,可以说是玩到出神入化了。
  其他的传统课程也很贵,一期课程也是一两万起的。我儿子最近在学校也学习C++的免费课程。他学了C++差不多有半年时间,每天在学校起码都上一节编程课。我偶尔也会了解一下他的学习进度,发现学了这么久,似乎进度很慢,才刚学会了基础语法,语句也只学到循环,更别说学习什么算法。
  我一开始是比较惊讶的,以我自己的学习经验,这些语言的语法,短则一两天,长则一两个月,怎么都应该学得会才对,应该不至于学这么久。但后来了解了一下之后,发现了问题所在。
  首先,现在小学虽然从一年级开始就有英语课,但一二年级的英语课都只是大家随便学一下,根本不需要背单词,也不需要考试的。到了三四年级,才渐渐的开始学,而且词汇量很少。所以编程里面遇到的第一个问题,就是单词记不住。这看似很搞笑的问题,平时在编程里面用到的单词也不算多,但对于小学生来说,记不住就是记不住。所以有些教育机构自己开发的简易语言里面,就把各种单词简化,让小朋友们避开这个英语难题。比如单词color,就只需要写一个字母c就可以,之类。这样做其实是挺好的,不用被英语困扰,才能把精力和思维完全集中在思考怎样编程上。不过按我的看法,那些编程常用的单词,在初中的时候都是必学必考的,到了那时候,根本就不会因为这个问题而困惑。
  然后,语法的学习相对来说是比较简单的,但在基础知识上的问题,就不是小学生们能解决的。
  举个例子,现在要写一个游戏摇杆的功能,实际很简单,就是获取摇杆头的坐标相对于摇杆中心点坐标的方向向量就可以了,或者直接获取角度也可以。但问题来了,对于小学生来说,什么是向量?什么是角度?三角函数又是什么?这些问题对于小学生来说,很可能就会变成“我是谁”,“我从哪来”,“我要到哪去”之类了。有一次我就看到儿子在位某个编程题目而苦苦思索,我看了一眼,明显就是简单的等差数列问题。是很简单,但不懂就是不懂,不是不懂编程,是不懂数学……
  我儿子很喜欢拿自己的编程能力去写一些简单的小游戏。一般小朋友写游戏,都是参考自己玩过的一些游戏,想自己实现出来。但由于基础知识的缺乏,所以会遇到很多问题,比如怎样计算物理碰撞、重力和加速度怎样求?时间插值怎样计算?空间坐标怎样旋转?等等。遇到这些问题,我一般都会选择让他想一些以他当前的知识能够实现的方式,而不会去真的傻傻的给他上数学课和物理课。因为这些知识,等到他上了初中高中之后,自然都会学到的。
  我是赞成小孩接触一下编程的,但我感觉没有必要带着功利的心态和目的去学习。由于小孩子的基础知识的确比较缺乏,在编程上面能学习的很多时候都局限于只学习一些基础语法和语句使用,这些东西并不值得花大价钱去学习。就算学会了,甚至去参加个什么少儿竞赛得奖了,也不用太高兴,因为含金量不高。程序语法是理性的东西,原则上是任何人都能学得会的。
  如果真的想以后小孩在编程的道路上面走得更远,我认为更应该从小对他的基础理科课程进行培养,比如数学、物理之类。编程比拼的不是谁的语法熟悉程度更高,而是比拼谁的算法更好。

你可能感兴趣的:(行业杂谈,少儿编程,Scratch,Mixly)