为什么学习编程?
计算机作为迄今为止人类发明的最伟大的工具,那么编程就是与计算机交流的途径,学编程是为了更好的控制使用它。随着人工智能发展,人类与机器的交流变得越来越重要,编程能力将在可以预见的未来成为人机交流基础,因此,每个人都应该像学会写字一样,学会写程序。
另外从个人成长来看,编程可以培养观察力、想象力、创造力、逻辑思维能力以及解决问题的空间思维判断能力等。所以学习编程并不是要大家都成为软件工程师,而是要学习一种计算思维,这种计算思维融合了数学、逻辑、运算法则,教会你用一种新方式思考这个世界。
我们这个社会不正大谈创造吗,“创”必须在你的头脑中有才可能在现实中“造”出来。编程完成的也正是这个过程,需要先在你大脑中进行构思并给出推断结果,然后再实际验证结果是不是符合预期,也就是“伟大的思想只有付诸行动才能成为壮举”。
在逻辑思维中有种分析方法叫做MECE(Mutually Exclusive and Collectively Exhaustive),意思就是“相互独立,完全穷尽”,也就是“不重复,不遗漏”,能够借此有效把握问题的核心,并解决问题的方法。在编程过程中也正是完成这样一种操作,需要考虑到各种情况,根据不同的情况作出不同的选择(逻辑运算,条件判断等等),而且各个选择之间不仅不能重复,还要避免遗漏某一种可能性造成程序的异常行为。久而久之,习惯了这种思维之后,思考问题的逻辑会更清晰。
编程中经常用到的方式是将整体功能分解成一个个小的模块,现实生活中在解决复杂问题时,问题的分解也是一项非常重要的能力。另外在编写程序的过程中还需要有一个调试过程,程序运行起来发现不对有问题,这时需要快速找到出错的地方并修正过来,这里面包含的能力很多,比如抗挫折力、观察力、专注力等等。
锻炼了自学能力,信息时代每一天都是瞬息万变,如果学习方式单一没有较强的自学能力是无法应对的,学习编程的过程也正是锻炼自学能力的过程。
综述有千百个学习的理由让你去学习编程,根本的原因还是学习编程让你成为一个思考者,而不是一个纯粹的被执行者。
学什么?多大学?
目前入选各类中小学教材的有下面几种:
Logo语言、VB、Scratch、Python,随着时代的发展,LOGO语言和VB慢慢淡出,并不是说VB有多落后,作为微软的核心语言直到现在还有很多人去用还是有道理的。如今有各种可视化的编程环境,反而感觉Python真的不适合孩子去学习。
如果孩子感兴趣,多大年龄开始都有可能,市面上有各种编程游戏、套件,灌输的也是这样一种理念,对于不同年龄段学些什么,可以根据孩子的发育、认知特点去选择。
比如低龄儿童可以玩一些编程小游戏,类似盒子岛、电灯机器人、我的世界、机器乌龟这一类,大约3岁的孩子就能掌握其基本的游戏规则,培养编程中的模块化思维、顺序执行等基本概念了。
入学后低年级可以接触Scratch、App Inventor、Cargo-Bot等,用一些可视化编程工具来完成一些复杂的任务。尤其前两种不仅仅可以挑战一些复杂的编程游戏还可以完成对硬件的控制。
App Inventor,抛弃复杂的程式代码而使用积木式的堆叠法来开发Android程式,除此之外它也正式支持乐高NXT机器人,对于Android初学者或是机器人开发者来说是一大福音。
Scratch是由麻省理工学院(MIT) 面向儿童青少年设计开发的具有强大功能的编程工具,Scratch软件的优势是易学且功能强大,有助于孩子们充分发挥自己的想象力,而在动手创作过程中,他们的学习积极性、想象力和创造力会得到极大的锻炼,用它可以很容易地创造交互式故事情节、动画、游戏,在Scratch课堂上,孩子们不仅仅会学会如何编写程序,还会学习到Science(科学), Technology(技术), Engineering(工程), Arts(艺术), Maths(数学)等多个领域的知识。这语言也逐渐被纳入教材或校本教材,当然也是某些创新实验室建设的一些必备内容。
兴趣培养起来后尝试学习一种真正的编程语言,比如Python、Swift等,尝试编写一些软件,初步学习算法、数据结构以及面向对象编程,也可以尝试一些硬件编程,比如Arduino。Python的设计哲学是“优雅”、“明确”、“简单”,也许正是这样一种特点才成为热点。
反思
正如坐在同一个教室里学习的学生,智商不一样、努力的程度不一样,最终走向社会也会有不同的职责类似,也不是全世界的每一个孩子都需要知道如何用Python、用C + +,学习它不过是为某些人打开一扇门而已。