2018/11/12 17:29:31
为什么会说孩子能从中获得自己的“逻辑感”,因为编程有几大关键性步骤!
拆:化繁为简
化繁为简,这四个字很容易理解,不过不容易做到。
很多时候我们看到一个难题的第一反应会是:
天啊,这么大的事情我一个人怎么完成哦。我不知道我不行我做不到。却不知道将问题分成一个个能力之内、力所能及的小事情。这一点很多人都需要跟愚公学习。
愚公移山的故事大家肯定都知道,一个想依靠人力将王屋、太行两座大山搬移开来的老头,在很多人看来愚公是十分的痴心妄想。
就像隔壁家另一个老头所说,这是非常愚蠢的做法。
甚矣,汝之不惠。以残念余力,曾不能毁山之一毛。——《愚公移山》智叟,语
但是换个角度来看,愚公其实是一个很懂得编程“化繁为简”的思路。
他并不把王屋太行当做两座难以逾越的大山,而是把他们看成一筐筐的土石,一点一点的搬移,总能清除掉的。
虽我之死,有子存焉;子又生孙,孙又生子;子又有子,子又有孙;子子孙孙无穷匮也,而山不加增,何苦而不平?——《愚公移山》愚公,语
以游戏编写为例,对于新手来说哪怕是最简单的游戏贪吃蛇,想要编写成功也是件不小的难题,可是如果将这个问题拆解开来,我们需要做的事情是,设定输入方式和反应方式。
根据游戏特性,贪吃蛇没吃到食物时继续游动,吃到食物后会变大,撞到墙会死,撞到自己没事。
然后我们在设计程序时将这四种分开,针对一种情况设定游戏,比如“贪吃蛇吃到食物”:
贪吃蛇张开嘴巴→食物被吃掉→贪吃蛇闭上嘴巴→贪吃蛇身体长大一截。
另外几种情况也依次分解,那么这个复杂的问题看起来也就没那么麻烦了,不是么?
同时,在这个过程中,孩子能亲身到“条分缕析”“有条不紊”的真正含义。
整:发现整合
任何一个程序中都不是相互分割无关的数据组成,相反,一个程序中会存在很多“重复”内容。
比如,贪吃蛇中的“吃食物”动作,一个游戏中贪吃蛇会吃到很多次食物,这也就是前面说到的“重复”。
编程过程中,孩子需要一直做这样的训练,发现程序中会一直持续的动作,然后将它打包起来,让计算机自己重复,以提高编写效率。
这一点,类似于数学中的“合并同类项”计算题。
3ab-4ab+8ab-7ab+ab=(3-4+8-7+1)ab
只不过相对于数学的单一,编程的趣味性更强。学会利用这一点,孩子就能学会整合讯息的能力。
因为整合并不是简单相加,而是对现状的优化,也是推陈出新的方式之一。
析:逻辑解读
其实编程也是 一种语言,只不过和人与人之间沟通不同的是,这种语言是人与计算机的沟通。
理性、严谨是计算机的特性,所以与它对话的语言也必须是理性的,严谨的,不能出半点偏差的。
"较真",是外界对程序员们的评价,也是每一个程序员所遵守的信念。
仍旧以贪吃蛇游戏程序为例,如果某处思考出现漏洞,游戏过程中就可能会出现“贪吃蛇撞了墙没死”或者“贪吃蛇吃到食物没有变大”等bug,那么这就是一个失败的游戏程序。
因此,学习编程,就是在对孩子的逻辑思维和逻辑判断能力进行训练。
改:查缺补漏
人的一生不可能不犯错。其实犯错也没什么,改了就好。而“改正”就是编程带给孩子的逻辑能力中最重要的一项。
上面乐哥提到,游戏中会存在一些bug,这是最初设计时的思维漏洞,需要纠正。其实不止于此,但凡程序中出现与预期不一样的运行结果,都需要进行调适、修正。
这个过程很麻烦,因为有些bug不是一下子就能找到的,常常需要从头梳理,十分考验人的耐心和细心程度。
不过也正因此,才更能磨练出孩子的品性,同时也能教会孩子反思反省意识。
其实,即便不学习,随着年龄增长,孩子也会逐渐拥有自己的逻辑思维。通过其他见识的增加,逻辑思维也能获得补充。
但是编程赋予孩子的更具理性化,也更趋严谨。
最重要的是,少儿编程能将这种逻辑思维带入孩子的成长过程中,使其更早从理性逻辑思维中获得助益!