少儿编程是什么?要学吗?如何学?
编程是一件很有趣的事情,主要能培养这些能力:
一、构思能力
编程是一种“先写剧本,后看结果”的活动,这要求孩子先在脑子里进行构思并模拟出结果,然后再实际验证结果是不是符合预期。这是一个“异步”的过程,对于这种“都得事先想好”的方式,孩子一开始是不适应的,因为这违背他们的直觉。
二、逻辑能力
编程需要考虑到各种情况,根据不同的情况作出不同的选择(分支),而且各个分支之间不能重复,也要避免遗漏某一种可能性造成程序的异常行为。在逻辑思维中有个词叫做MECE(Mutually Exclusive and Collectively Exhaustive),意思就是“相互排斥且整体完备”,也就是“不重复,不遗漏”。这是逻辑思维中的一个重要原则。
三、模式识别能力
在编程中我们经常需要发现一些“可以重复”的单元,然后让计算机去重复它。举个简单的例子,计算(1+5)×4相当于(1+5)+(1+5)+(1+5)+(1+5),其中每一个(1+5)就是一个可重复的单元,或者说是一种模式(pattern)。在解决实际问题时,模式并不都是显而易见的,有些模式是隐藏的,或者需要一定的变换才能出现的,这些都考验孩子观察力和识别力。
四、分解问题的能力
一些复杂的问题都可以分解中等的问题,中等的问题还可以进一步分解成小问题。在解决复杂问题时,问题的分解是非常重要的,编程中我们也经常需要使用这样的方法。
五、调试除错能力
任何工作都无法一蹴而就,是人总会犯错误,程序运行起来发现不对有问题,这时需要孩子能够找到出错的地方在哪里,并且将它改正。这里面包含的能力很多,比如抗挫折力、观察力、专注力等等。
总之,通过学习编程所培养的能力并不只是适用于编程,而是可以在很多方面派上用场。
关于不同年龄段学些什么,建议:
* 4~6岁:玩一些编程小游戏,比如用指令控制一个角色到达终点,绕过一些障碍物,用循环来完成重复任务等等。不错的游戏包括:Box Island、LightBot Jr.等。
* 7~9岁:用一些可视化编程工具来完成一些复杂的任务,比如Scratch、AppInventor等。也可以挑战一些复杂的编程游戏,比如Cargo-Bot、Human Resource Machine等。
* 10岁+:学习一种真正的编程语言,比如Swift、Python等,尝试编写一些软件,初步学习算法、数据结构以及面向对象编程。也可以尝试一些硬件编程,比如用Arduino做个小机器人。
根据以上的建议,我把少儿编程总结为四个方面:
一、图形编程
图形化编程,现在最流行的是Scratch 。
Scratch 是由美国麻省理工学院设计开发的,一款面向青少年的简易编程工具。即使不会英语和键盘操作,用户也可以真接使用中文图形化进行编程,使用鼠标拖动模块到程序编辑栏实现相应功能,轻松的创建动画,游戏。建议利用网上系统的学习资源,以家庭教育为主,某些编程平台练习为辅,进行图形化编程学习。不必参与培训。
图形化编程学习完成后,可以在各大少儿编程平台上构思和发布自己的作品,与大家相互学习与交流。
二、编程赛事
在图形化编程学习结束后,有三个方向可以发展。第一个发展方向是,参加少儿编程赛事,如:全国青少年创意编程与智能设计大赛等。
学习完代码编程之后,可以参加赛事或考一些证书,如:NOIP青少年计算机信息学奥林匹克竞赛、全国计算机等级考试“二级Python”等。
针对Scratch–Python—NOIP–IOI进阶路,为大家整理了一些全国性的比赛。
三、硬件编程
硬件编程也即智能硬件设计。
硬件编程是一个科技概念,指通过将硬件和软件相结合对传统设备进行智能化改造。而智能硬件移动应用则是软件,通过应用连接智能硬件,操作简单,开发简便,各式应用层出不穷。
在图形化编程学习结束后第二个发展方向是,在图形化编程的基础上,动手参与智能硬件设计。我们这里的智能硬件设计(硬件编程)是狭义的设计范畴,属于动手与益智开发。
智能硬件设计又包括编程积木搭建和智能硬件编程设计。编程积木搭建,一般是图形化编程;智能硬件编程设计,可涉及图形化编程与代码编程。
鼓励大家在学习完图形化编程的课程后,自己多查询一些相关的资料,多去动手尝试。
四、代码编程
在图形化编程学习结束后第三个发展方向是,基于编程的兴趣,继续学习真正的代码编程,这要求学习者有较好的自学能力。
当然这个过程,不必要在图形化编程的基础。建议学习语言:Python、JavaScript、C/C++等。还有现在比较热的人工智能的学习。建议通过正规的渠道进行代码编程学习。
作为兴趣的学习者,可以参与图形化编程、编程赛事以及智能硬件设计的学习,不必参与代码编程;做为特长爱好的学习者,要学习代码编程,但不必要学习图形化编程。
愿你喜欢上编程!
其他阅读:
少儿编程之编程赛事
少儿编程之代码编程
少儿编程之硬件编程
少儿编程之图形编程
少儿编程是什么?要学吗?如何学?