近两年少儿编程被许多家长列为孩子课外学习的首选,甚至超过了英语。也有一些家长在纠结,因为他们不是很了解编程到底是干嘛的。它到底能培养孩子什么能力?编程思维究竟是一种什么样的思维?能提高数学、英语成绩?这种思维能带给孩子什么好处?
这种思维在学习、*、生活中处处都用得着。在解决复杂问题时,问题的分解必不可少,因为只有分解成每一个可以操作、可处理的小问题时,才算是把“大问题”落了地,一个一个小问题搞定了,大问题也就解决了。
具备这种能力的人做事情是耐心的、有条不紊的。比如同样面对一道有挑战的数学题,分解能力好的孩子会列出清晰的解题步骤,搞定一步是一步,即使最后不一定能完全解答出来,也能清清楚楚地知道自己的进展;而有些孩子则不是,没有分解的耐心和能力,遇到难题时脑子一团乱麻。
观察那些做事麻利,效率特别高的人,就是具备了这个能力。很多孩子解题快,就是他善于发现和总结“重复规律”,脑袋里自备了一个装有很多方法库,遇到时直接调用,不用再从头到尾想一遍,也不会错漏。
创新不一定指做出个前所未有的新产品,对现有的运行方式进行优化改进,就是一种创新。而发现并整合“重复规律”的能力,让我们更容易找到创新的机会。
逻辑思维中有个非常重要的原则叫做MECE(Mutually Exclusive and Collectively Exhaustive),意思就是“相互排斥且整体完备”,也就是“不重复,不遗漏”。
程序的世界很单纯,只有0和1,对和错,没有模糊值。这跟写文章、画画什么的不一样,当读者、观众感觉一般时,可能是见仁见智,并不一定证明你的作品不好或者哪里有错,你也根本不知道该怎么改进。
但程序不一样,只要运行结果和期望不符合,就证明中间肯定有哪儿出错了,不过同时也意味着只要足够努力,就肯定能把这个错揪出来。就像你告诉一只猫,小黑屋里肯定有老鼠,它负责把老鼠抓出来,比它不知道小黑屋里究竟有没老鼠,听起来要容易和有信心得多。
然而,实际上程序中很多bug都不是一下就能找到的,常常需要从头到尾把程序的运行顺序一步一步地跟走一遍,观察每一步的运行结果(专业术语叫“单步调试”)。这需要很多的耐心、观察力和专注力,对孩子的抗挫折能力也是一种磨练。
当调试经验丰富之后,孩子在写程序时还会懂得给那些“有可能会出错”的地方先做个记号,方便回头来检查纠错。他更关注于提高自己纠错的技能,而不是害怕、回避或者掩盖错误。孩子会越来越懂得,有错很正常,只要能把它揪出来,改正就好。
有些人总是在进步,因为他随时懂得回溯、调试、纠错,进而提升自己。
以上这些能力,其实并不是编程特有的,但它们却是在编程这件事情上集体出现的。所以要是你问我,孩子有没必要学编程,我会很肯定地回答,有必要,因为它的确培养孩子的综合能力。