编程网

编程,不是刚需胜似刚需

2017-08-10

 

人工智能的高速发展,AlphaGo智能机器人、智能家居、无人驾驶等以前只能在科幻电影中看到的场景已经开始走进我们的生活了,而作为支撑这些技术的核心技能,编程正在被更多的人关注,越来越多的家长也开始关心是否需要让自己的孩子学习编程。


        有很多的家长会来问我们,如果我的孩子将来并不打算成为一个程序员,他学编程又有什么意义呢?


        通常我会问家长:“你送孩子去学钢琴,是希望孩子成为职业钢琴家吗?送孩子去学跆拳道,是希望孩子成为职业选手吗?”


        而家长的普遍的回答都是:“不是的,我们只是希望孩子能获得一些音乐的启蒙,培养一个爱好,让孩子坐得住”。或者是锻炼孩子的身体素质。


        儿童编程学习也是一样的,它和成人编程教育的核心区别就在于,少儿编程并不是为了孩子将来一定从事计算机行业做准备的。


        有少数的孩子会在编程学习过程中展现出不同寻常的天赋,在这条道路上找到了自己的兴趣所在,并最终选择了计算机科学领域作为自己的职业方向。比如比尔·盖茨,马克·扎克伯格等,他们都是在少年时期即对编程产生浓厚兴趣,并展现出过人的天赋,这也是他们创业并取得巨大成功的一个非常重要的起点。

        不过对于绝大多数孩子来说,情况也许并不是这样。他们学习编程并非一定要成为程序员,更不一定要为将来创业做准备,但是他们同样能从编程学习中获益,获得多方面的思维训练。而这些方面的训练,正是目前国内的教育板块比较缺乏的一块。


        从这样意义出发,我们喜欢将编程学习称之为一个思维训练的道场。为什么这样说呢?和一些棋类项目类似,编程所在的环境是一个人造的,边界清晰,自洽的环境,这个环境有自己的规则,这些规则并不是非常复杂,但是却可以从中变幻出无穷无尽的可能,你的思维能力的边界就是这个世界的边界。每个学生都可以在在这个思维的道场中不断练习,不断磨练,提高自己的思维段位。


        具体说来,通过学习编程,除了通常被提及的一些如促进学科知识学习,了解计算机如何工作等知识层面的益处之外,在更深层次的思维和学习心理方面,孩子至少可以在这几个方面受益:


1.逻辑思维的训练


        逻辑思维在编程学习中非常重要。逻辑是程序的基石,逻辑是程序的灵魂。遗憾的是在目前国内的K12教学内容当中,逻辑思维方面的训练是非常缺乏的。这方面的缺失带来很多问题,比如学生在写作中经常会犯基本的逻辑错误,在与别人的辩论中缺乏足够的逻辑能力来支撑自己的论点等等。


        这些缺陷的影响比我们想象的更加深远,可能会因为这个影响到留学申请 Essay 的质量,也可能会导致将来在职场竞争中受挫。


        编程学习是逻辑思维训练的一个非常有效的方式,因为在这个人造的,边界清晰,自洽的环境中,逻辑的错误导致的结果非常清晰:就是程序没有按照正确的方式运行。这会给学生一个即时的反馈,学生会自然而然的想办法修正自己的逻辑错误。通过这样的反复练习和修正,学生的逻辑思维能力可以得到明显的提升。


2.语言学习能力的训练


        没错,编程语言也是一门语言,不过相对于自然语言来说,它的规则要简单很多,语法也严格很多。我们知道一门自然语言的学习周期是很长的,而编程语言这些相对简单并且严格的语法规则,对孩子们来说,更像是在学习一门简化的新语言,一门可以与机器交流的语言。而且能迅速获得反馈和交流的乐趣,因为可以让计算机听自己指挥,看到自己的程序实现了自己想要的效果,这其实是一个非常神奇的体验,有些像电影《降临》中 Louise 通过学习外星生物的语言,理解他们的意图并与之交流的那种体验。


        通过学习这门新的语言,孩子们多了一种自我表达的手段,不但可以让计算机,机器人听自己的指挥,让自己的创造力变成现实,甚至是解决实际的问题,还可以利用互联网的力量,通过分享,发布自己的程序和作品,让成千上万的人看到。


3.敢于试错的勇气


        在编程世界里面,犯错是常态。可以说编程就是一个不断试错,不断 Debug ,最后终于让程序按照自己的设想运行的过程。相对于其他学科而言,编程的试错,修正,调试周期是非常短的,也就意味着试错成本是非常低的,低到学生们可能都意识不到自己是在不断试错。这样孩子们在潜移默化中内心变的更加强大,能更加平和的面对挫折和失败,并且能够不断尝试各种可能,最终解决问题。


        这样的学习过程和应试教育的学习模式颇有不同,应试教育从很多层面上来说是不鼓励试错的,因为试错的成本很高,这样容易导致学生的心理脆弱,不能正确的面对和处理挫折和失败。


        相反编程学习的这种学习过程更接近成年后在现实社会中学习和成长的方式,可以帮助学生在儿童时期就培养起良好的学习心理状态和习惯,而这些是实现终身学习的必备技能。


4.专注力


        编程学习是一个要求非常专注的学习过程,这对较低年龄的孩子来说可能是一个挑战。不过编程学习有一个有别于其他学科的巨大优势就是相对容易实现游戏化学习。通过类似游戏的角色代入,关卡设置,勋章奖励等手段,可以让学生更加沉浸在编程学习情境之中,更加专注的学习,无形当中提升了学生的学习专注力。


        所以对儿童编程学习而言,不论是由教师来现场授课,还是通过软件工具来进行引导式学习,最好的教学方式就是游戏化教学方式。


        目前市场上有很多儿童编程学习产品,有的是采用图形化编程,即学生在屏幕上拖拽模块完成程序;有的是代码式编程,学生需要输入代码。究竟选择哪一种方式跟孩子的年龄,与学生的认知能力有关。


        通常认为,图形编程更适合较低年龄的学生,代码编程更适合年龄大的学生。其实不管是图形编程还是代码编程学习,我们认为更重要是课程设置的方式。


        目前市场上有些机构的儿童编程课程设置,采用的是和成人学习编程类似的设置,比如先学语法,再学数据结构等等,我们认为这种简单的将成人课程移植到儿童编程领域的方法,并不符合儿童的认知能力和学习方式,效果不会很好。


        我们采用项目制的方式教孩子学习编程,从简单项目到复杂项目,循序渐进。既让孩子在做项目的过程中体验到成功的快乐,也让孩子在做项目的过程中潜移默化的接受编程的思维方式。