全民学编程丨“编程热”到底值不值得跟?

2019-05-09      2681

       全民都在学编程,就像孩子们都在学数理化一样。在信息化的时代,“编程 ”被认为是孩子适应人工智能时代的切入口之一。“编程热”让很多家长开始了解少儿编程,出于各种原因,为了让孩子能够有一个好的未来;一些家长是为了孩子的升学考试;还有很多是希望自己的孩子能够有更强大的逻辑能力。



微信图片_20190429161709.png


       朋友圈也不时刷出各种编程消息,后台也收到一些家长的信息,他们还在思考到底孩子要不要学编程,它培养了孩子什么能力?编程思维究竟是一种什么思维?是提高数学、培养逻辑? 今天小编再和大家好好聊聊这个话题。


      首先我先说明一点,学编程不等于一定要当码农。编程中积累的经验和能力,让我们在其他行业也游走得尚好,因为它不光是一项技能,更是培养一种思维,一种思考问题的角度。

                                           

- 新知识带来新思维 -


       小时候学画画时老师跟我说,学了画画之后,你看待世界的视角和之前是不一样的。后来发现还真是,学画画的人,往往会更注意一个东西的细节、质感,喜欢变换看事物的角度,试图去寻找它“透视”在不同平面上的样子。


每一个新领域都能给我们带来新的知识,装载着这些新知识的我们,自然也会获得新的思维,新的能力,新的看待世界的角度。


学编程也如此。


- 编程的本质是什么 -



用一句话来解释,编程就是和电脑对话,用电脑听得懂的语言,告诉它我想让它做的事。

 

比如说电脑,作为新时代的高科技产品,它理性、严谨、不讲故事讲数据,它要不听不懂我们的指令,一旦听懂了就会执行,而且每次都会执行。所以,要跟电脑沟通对话,我们也必须让自己变得理性、严谨起来,从电脑的角度去思考问题,这就是所谓的编程思维。


- 这种思维能给孩子带来什么好处 -


下面我用一个大家都很熟悉的游戏“贪吃蛇”作例子,把编程思维所培养的能力逐个掰一掰。



贪吃蛇游戏规则:用上下左右键控制蛇的方向,寻找吃的东西,每吃一口就能得到一定的积分,而且蛇的身子会越吃越长,身子越长玩的难度就越大,不能碰墙,不能碰到自己的身体,等到了一定的分数,就能过关,挑战难度更高的关卡。

 

拆—分解问题的能力

 

要写一个“贪吃蛇”游戏,哇,这是一个很大的问题,该怎么入手?如刚才所讲,得想办法让电脑把这件事情搞明白,有哪些步骤,每一步该干什么,哪步在先哪步在后…所以我们首先得把这个大问题给拆了。

 

拆解:

在这个程序里,电脑主要处理两件大事:

1)处理输入 – 收集用户操作信息

2)输出响应 – 根据不同的输入,做出不同的响应

 

再拆解:

1)输入 - 用户的操作可以有按上、下、左、右键四种

2)输出 - 相应地,贪吃蛇也要做往上、下、左、右走的动作

 

我们把第2点再拆解:

贪吃蛇每走一步,可能有这几种情况:

1)吃到苹果

2)撞到墙

3)撞到自己

4)什么都没发生

 

我们把第一点“吃到苹果”抽出来,再再拆解

 

在这步里,电脑可能要这些事情:

1)蛇张开嘴巴

2)苹果被咬掉

3)播发吃苹果的声音

4)蛇闭上嘴巴

5)身体长长一截

 

看起来很简单的程序,拆解后步骤可真多呀,而且这还只是其中的一条分支。孩子学习编程的过程就是不断地训练他把复杂、庞大的问题拆解、理顺的过程。

 

这种思维在学习、工作、生活中处处都用得着。在解决复杂问题时,问题的分解必不可少,因为只有分解成每一个可以操作、可处理的小问题时,才算是把“大问题”落了地,一个一个小问题搞定了,大问题也就解决了。

 

具备这种能力的人做事情是耐心的、有条不紊的。比如同样面对一道有挑战的数学题,分解能力好的孩子会列出清晰的解题步骤,搞定一步是一步,即使最后不一定能完全解答出来,也能清清楚楚地知道自己的进展;而有些孩子则不是,没有分解的耐心和能力,遇到难题时脑子一团乱麻。

 

整—发现并且整合“重复规律”的能力

 

比如“贪吃蛇吃苹果”所发生的一系列动作,是程序中多次会发生的,无论苹果在左上方还是右上方,无论蛇是从上面吃还是从下面吃,都是同样的一组动作,那么我们就可以把这组动作打包,给它取一个名字叫“吃苹果”。

 

每次蛇遇到苹果时,就可以直接把“吃苹果”拿出来用,而不用重新把它所包含的一系列动作再想一遍,搞不好的话还会有错漏。

 

在编程的过程中,孩子得一直在做这样的训练,发现一些可以重复的单元,把它整合起来,让计算机去重复它。

 

这种能力可以大大提高我们做事的效率。举个数学上最简单的例子,比如计算32×(37+4)+47×(37+4)+21×(37+4),它就相当于(32+47+21)×(37+4),其中的(37+4)就是一个重复的单元,可以整合。

 

观察那些做事麻利,效率特别高的人,就是具备了这个能力。很多孩子解题快,就是他善于发现和总结“重复规律”,脑袋里自备了一个装有很多类似于“吃苹果”那样的方法库,遇到时直接调用,不用再从头到尾想一遍,也不会错漏。


 


有段时间美国沃尔玛超市发现尿不湿和啤酒这两样商品经常会被一起销售,背后的原因是妈妈得在家里照看孩子,买尿不湿的通常是下班后的爸爸,这时爸爸很喜欢顺便再买几瓶啤酒犒劳自己。

 

发现这个规律后沃尔玛就把这两样东西放在一起,结果不仅提高了尿不湿和啤酒的销量,还大大提高了整个超市的客流量,因为爸爸们发现逛沃尔玛比其他超市更方便。

 

创新不一定指做出个前所未有的新产品,对现有的运行方式进行优化改进,就是一种创新。而发现并整合“重复规律”的能力,让我们更容易找到创新的机会。

 

析—逻辑思维能力

 

这大概是程序员最引以为豪的一种能力。前面说到,编程就是和理性严谨的电脑对话,所以编程者也必须较真起来。

 

逻辑思维中有个非常重要的原则叫做MECE(Mutually Exclusive and Collectively Exhaustive),意思就是“相互排斥且整体完备”,也就是“不重复,不遗漏”。

 

比如下面右图是遵循了MECE原则的,左图就没有↓↓↓



在编程过程中,处处要考虑和遵循MECE原则。比如在贪吃蛇的程序里,蛇每往前走一步,可能会出现4种情况:

1) 吃到了苹果

2)撞到墙

3) 撞到自己

4)什么都没发生

 

这4种情况是互斥的,比方说吃到苹果的时候就不可能撞到墙,那么程序中就不能让苹果出现在墙上;而且,这4种情况覆盖了所有可能性,在写程序时如果只考虑了其中的2种或3种,就不“完备”了。

 

此外,编程过程中还会涉及到很多处理“与”、“或”、“非”等布尔逻辑操作。比方说“蛇没有吃到苹果”与“蛇没有撞到墙”(!a && !b ),就等价于,“蛇撞到自己”或“什么都没发生”(c || d)。

 

这些思考对孩子的来说都是非常好的逻辑训练。


改—调试纠错能力

 

当我把编程能带给孩子几项能力一一列出来的时候,发现这点是最重要,也是孩子最需要的。

 

任何事情都很难一次就完成得尽善尽美,程序运行起来发现不对有问题,这时就需要孩子去寻找出错的地方,并将它一点一点去改正。

 

程序的世界很单纯,只有0和1,对和错,没有模糊值。这跟写文章、画画什么的不一样,当读者、观众感觉一般时,可能是见仁见智,并不一定证明你的作品不好或者哪里有错,你也根本不知道该怎么改进。

 

但程序不一样,只要运行结果和期望不符合,就证明中间肯定有哪儿出错了,不过同时也意味着只要足够努力,就肯定能把这个错揪出来。就像你告诉一只猫,小黑屋里肯定有老鼠,它负责把老鼠抓出来,比它不知道小黑屋里究竟有没老鼠,听起来要容易和有信心得多。

 

然而,实际上程序中很多bug都不是一下就能找到的,常常需要从头到尾把程序的运行顺序一步一步地跟走一遍,观察每一步的运行结果(专业术语叫“单步调试”)。这需要很多的耐心、观察力和专注力,对孩子的抗挫折能力也是一种磨练。

 

当调试经验丰富之后,孩子在写程序时还会懂得给那些“有可能会出错”的地方先做个记号,方便回头来检查纠错。他更关注于提高自己纠错的技能,而不是害怕、回避或者掩盖错误。孩子会越来越懂得,有错很正常,只要能把它揪出来,改正就好。

 

有些人总是在进步,因为他随时懂得回溯、调试、纠错,进而提升自己。

 

以上这些能力,其实并不是编程特有的但它们却是在编程这件事情上集体出现的。所以要是你问我,孩子有没必要学编程,我会很肯定地回答,有必要,因为它的确培养孩子的综合能力。



在线留言

  • *姓名:
  • *电话:
  • 邮箱:
  • 留言:
  • 验证码: 看不清,请单击

免费咨询热线

专业客服为您解疑答惑