萌爸曾经从事过十多年的编程。编程作为一种新的知识学习,对小朋友的成长有什么作用?我把自己的思考分享出来,希望对各位爸妈有所帮助。
“从小就编程”有可能不只是名人传记里才能看到的故事,现在我们打开手机应用商店,能发现不少儿童编程APP,教育机构也开始推出少儿编程课程。儿童编程的概念一下子就火了起来。
在大洋彼岸的美国,总统奥巴马连续两年亲自为编程宣传活动“编程一小时”站台,凭一行“moveForward(100)”成为了全球首个写过代码的总统。
一起为“编程一小时站台”的豪华阵容还包括比尔盖茨、扎克伯格、维密超模Karlie Kloss、NBA球星波什、格莱美奖得主http://Will.I.AM(黑眼豆豆)等。白富美Karlie Kloss自己还开设了资助女孩子学编程的Kode with Karlie基金会。
美国张罗的热闹,英国则闷头往前抢。2013年,首相卡梅伦宣布对英国中小学教学大纲进行全面改革,并要求全国在2014年开始使用新大纲教学。教学大纲的修订就包括将“计算科学(Computing)”列为基础必修课程。
在新的英国国家教学大纲里,5-7岁的学生需要通过计算机课程掌握:
- 理解什么是算法,以及算法如何以程序的形式在电子设备上运行
- 创建和调试(debug)简单程序
- 用逻辑推理预测简单程序的执行结果
发达国家对推广编程教育的观点是:编程技能已不仅是信息产业对人才的需求,而将是所有产业的需求。产业需要的也不仅是软件专业人才,而是掌握编程技能的产业专业人才。
但是等等,作为一个养娃的父母,这些潮流趋势啊太遥远,而且我又不一定让孩子未来当程序员。为了自家孩子,咱能不能说点实惠的?
从教育角度看,儿童编程的核心的理念是把计算机编程看作与阅读、表达、数学等一样的,小朋友成长所需的基础技能来培养。
未来的生活中,人们使用数字化设备和软件来处理工作的需要会越来越大。这些变化就需要人们对计算机逻辑有更深的理解,要具备与计算机相近的“计算思维”(Computational Thinking),并具备与之关联的能力。
“计算思维”具体反映的是什么呢,萌爸用简单的方式说明一下。
一、理解计算机原理和程序机制
一天晚上我开车前打开手机导航,导航APP先说了一句提示语:“夜间行车请打开车灯。”坐在后边的儿子大叫起来:“它怎么知道现在是晚上!” 这个问题看似简单,但完整回答要包括程序逻辑、数据计算、网络通信、地理定位等一系列知识。了解计算机和智能设备的运行原理和程序机制是深入使用,乃至创造计算机设备和软件的基础。00后的孩子伴着数字设备和计算机长大,天生就熟悉一些应用机制,但还需对应用背后的计算逻辑有更深的认识。
二、数据化思考
计算机有强大的数据处理能力,借助计算机我们得以通过数据来理解、分析和解决问题。这种不同于原本的经验型的思考方式,就是数据化思考。儿子一年级学拼音,我会告诉他,分数(正确率)还不能彻底反映出学习的效果。我们还要考虑每次标拼音的用时长短。下图是儿子自己出题,自己用手机计时的小练习。
在全都标对的情况下,用时的缩短也体现出了能力增长。如果有用时超过平均时长的题,就要重点练习。通过对答题时长的监测,也会发现如书写习惯等方面的小问题。这就是数据化思考的一个小小例子。
三、逻辑思维
很多学习都能锻炼逻辑思维,编程的独特性在于,程序本身就是逻辑演绎的抽象体现,是更纯粹的逻辑训练过程。萌爸用一个冷笑话来举例说明。
老婆给程序员老公打电话:“下班买一斤包子回来,如果看到卖西瓜的,买一个。” 晚上,程序员老公捧着一个包子回了家。
这个冷笑话的梗是程序逻辑的牛角尖,程序员的逻辑是:
老婆定义 购买包子数量 = 一斤;如果(路上看见卖西瓜的) 购买包子数量 = 一个;老公 买包子(包子数量);
笑话虽冷,道理说清楚了。买包子在程序里就可以抽象为定义包子数量和买包子两个行为。这样“脑筋急转弯”式的逻辑,这就是计算机再平常不过的思考方式之一。
四、系统工程思维
这是解决复杂问题,并且找到最优方案的思维能力。能做成一件事的方法有好多种,如何选出最合适的,就需要系统的思考和判断。举小小例子,小朋友搭乐高时要不要先分类摆放零件?能不能不按说明书顺序搭建?如果有搭错的地方能否在不全拆回去也修好?这些问题没有绝对唯一的答案,而选择在于你的全局思考。
多人协作时,好的系统工程思维也能提升协作效果。我和儿子玩过好几次,把家里所有乐高积木全用上搭一个超级高楼。开始是两个人随便抓一个零件,一点一点往上垒。后来我们就定好楼的长宽分头搭建各自的楼层(定义接口,模块化分工),然后再组装到一起。这样做不光是提升了速度,还解决了稳固性(不同长短积木的咬合),美观性(颜色的搭配),合理性(给门窗、屋檐等特殊零件提前规划好位置)。
以上简要介绍了一些编程涉及的能力。编程学习还涉及算法、自动化、设计模式、数据结构、框架与引擎设计,数据存储等更多知识。同时,编程的过程都是面向问题、解决问题的过程,也能锻炼面向问题的定义问题、分析问题、解决问题的思维能力(Problem Solving)。
对编程学习有兴趣的爸妈们,有一些现成的APP和玩具能够让你们快速的上手尝鲜。目前有一些成熟的儿童编程软件,以图形化的界面来操作,小朋友容易上手,趣味性也不错。
先举个小例子,乐高有一个简单的在线编程小游戏《Move Bit by bit》。每个场景的任务是通过对前进、左转、右转三个指令的顺序执行,让小机器人走到指定位置。这就是一个最简单的指令式编程游戏。
麻省理工推出的Scratch是最早,目前也是最学习资源最丰富的图形化儿童编程工具之一。Scratch有丰富的指令和逻辑组件,能够做出有一定复杂度的小游戏,也能够实现物理实验的模拟。
Scratch有在线版和桌面版,有中文界面,线上有中文讨论区。但其绝大部分课程都是英文版。尝新的爸妈可以下载一个他们的入门级iPad APP《Scratch Jr》。
另外一个不错的APP叫Tynker,操作界面与Scratch很相似。Tynker的界面和元素非常精美,更游戏化,趣味性很足。
除了五个主题的任务外,Tynker还可以编程遥控Parrot无人机和双轮车,跟电子玩具的结合又能带出很多新颖的玩法。
还必须要提的是乐高。乐高的MindStorm机器人系列是可编程电子玩具的行业标杆,许多高校甚至企业使用乐高机器人来搭建设计原型。
Mindstorm也有图形化编程界面。乐高机器人的上手门槛较高,适合10岁以上的孩子。并且其价格也不低。如果只是为了解编程,还是上面免费的Scratch和Tynker更划算。
如果孩子对编程有更深的兴趣,爸妈们想给孩子找培训课程来学习,萌爸建议要按两个原则来选择。
- 是有完善的课程体系,能够让孩子持续的系统化学习。市场上有一些机构“拼凑”出的课程,实际上只是让孩子反复做小练习而已。性价比不高。
- 是编程课程能否与其它学科关联,与学校的学科教育相呼应,提升单位时间的学习价值。小朋友们上学后的课外时间本来就不多,在编程学习中融入数学、逻辑、几何、物理等其它知识,能大大提升学习的性价比。
Scratch是应用最广泛的儿童编程工具,它的网站上已经积累了用户贡献的上百门课程,按适用年龄和关联学科分类,具备了较为系统化的课程体系。英、美、日本等开展编程学习的国家有不少的学校都以Scratch为基础开展自己的课程。英文能力好的家长可以尝试用Scratch自己带孩子学习。
儿童编程刚刚兴起,学习资料、学习方法、师资都是在建立和摸索的阶段,国内还不具备一个成熟的学习环境。爸妈们可以根据自己的情况带孩子做适当的尝试。如果希望孩子能更多更深的学习,在目前的社会条件下,还得靠爸妈们自己多用心,为孩子创造好的学习机会。