生活中的程序-编程锻炼什么样的思维,以及编程是怎么锻炼思维的
家长们提到编程,常常说编程能锻炼孩子思维,那编程到底锻炼了孩子哪方面的思维?具体又是怎么锻炼思维的呢?
今天陶老师就结合学习生活中的具体例子,给大家再讲讲编程思维,以及编程是怎么锻炼思维的。
编程锻炼什么样的思维
编程思维是计算机科学家周以真提出来的一个概念,它包含这四个部分——分解问题、模式识别、抽象思维、算法设计:
分解问题教孩子如何把复杂繁琐的问题逐步拆分,再按序解决;
模式识别教孩子分析问题的共性和规律,学会套用过去经验解决现有问题;
抽象思维教孩子抓取问题核心,分清主次;
算法设计培养孩子的逻辑思维,制定方案、完善方案、优化方案。
这些概念比较学术,这里就不具体描述了,我们拿例子来说明会更容易理解。
今天就拿分解来举例,编程怎么培养孩子拆分问题的分解思维。
我们先看下,什么是分解思维。
分解思维,也就是对需要解决的问题进行拆解:这个问题包含哪些小问题生活中的程序,需要分哪几步来解决,这些步骤的完成顺序是怎样的。
其实我们在日常沟通中就可以培养孩子的分解思维。
比如在超市采购时,和孩子一起讨论应该怎么保证采购的质量,可以先买日用品,再买新鲜的食材,最后拿冷冻冷藏食品。
搭积木时多和孩子沟通思路,比如是要搭一个什么样的房子?有几层?每一层的布局是怎样的?先搭哪一部分?怎么拼接等等。
在日常沟通中加入分解思维的锻炼确实有用,但对宝爸宝妈们的要求比较高,也很难保证训练量。
那么,编程是怎么锻炼分解思维的呢?
当拿到一个编程的任务,孩子需要经过起码两次分解。我们以设计时间规划表为例来详细说明。
第一次分解,是对这个任务的分解:
这个任务的目标是什么,可以拆分成哪些小目标,小目标之间的关系是怎样的。
现在我们对时间规划表进行分解:
【任务目标】
在特定的时间节点,提醒我们完成需要做的事情。
【拆分目标】
1.时间节点和事件是什么?——11:00提醒订外卖、14:00提醒多喝水、17:00提醒休息一下
2.提醒方式是怎样的?——播放音乐,告诉我们现在的时间和需要完成的事情
【目标之间的关系】
1.当时钟指向特定时间,就进行对应的提醒,否则不提醒
2.提醒方式是先播放音乐,在音乐播放2秒后先告诉现在的时间,再告诉需要完成的事情,最后音乐停止
第二次分解,是对目标用编程语言分解:
怎么完成这个功能?需要用哪些代码块?代码块的拼装顺序是怎样的?
以完成时间规划表中“11:00提醒订外卖”为例:
【怎么完成11:00提醒订外卖】
1.怎么知道到11:00了——钟表的时针指向11,分针指向12
2.怎么提醒订外卖——按照提醒的次序:播放音乐,2秒后播放“现在是11:00”,接着播放“快去订外卖”,关闭音乐
【需要用到的代码块(主要用的)】
1.针对指针指向:
2.针对提醒次序:
【拼装顺序】
1.先完成较简单的提醒订外卖部分——按照播放顺序拼装
2.再完成对指针指向的判断——设置旋转功能,侦测到时针面向11且分针面向12时,触发提醒订外卖功能
按照这种方式,依次去完成各个功能的拆解和编写,最后再进行整合优化,时间规划表就完成了。
火花编程课锻炼的编程思维
这四个编程思维听起来相对比较枯燥晦涩。
火花思维编程课以编程思维为基础,将课程主要锻炼的思维扩展细分成了“条理性思维、抽象化思维、创造性思维、算法思维、结构化思维、模块化思维”这6种,方便大家理解:
条理性思维:拆分问题,理清解决问题的思路
模块化思维:寻找共性规律,化繁为简
抽象化思维:提炼信息,抓住关键
算法思维:寻得最优解,提高效率
结构化思维:统筹规划,全面思考
创造性思维:主动思考创新,愿意动手尝试
对数理思维有一些了解的家长可以看出来,编程思维和数理思维其实有一些重合,但又不是相同的。数理思维偏抽象,编程思维偏应用。
编程思维在学习生活中的体现
编程思维在数学学习中应用广泛。
编程少年袁翊闳12岁参加AI开发者大会,在谈学编程对课内学习的益处时说“尤其是数学,比如做证明题的时候要导入一些信息,那么在编程里面就是import(导入)一些库,然后再调用处理,在数学里面因为所以也是这个样子,逻辑关系是一样的,而且编程本来就是建立在数学模型上的。”
再比如背诵记忆。背诵也是要讲方法的,常见的记忆法有编故事记忆法、口诀记忆法、归纳记忆法等等。
相信家长们也明白,方法不是核心生活中的程序,核心是找到一个能够贯穿所有内容的线索或规律,用适合自己的形式去记忆。
在这个过程中,懂得分解思维、能运用模式识别思想找到共性,模块化思维、抽象化思维比较好的孩子更容易快速掌握诀窍,完成记忆。
我们再举一个生活中的例子。
一些家长总说孩子早上起床之后做事很磨蹭,没有时间观念。但有可能孩子不是故意拖沓,而是做事没有条理性。
孩子在做事情A的时候突然想起刚刚的事情B还有落下的,又回去补做,容易丢三落四,浪费了太多时间。从大人们眼光看,孩子做事就磨磨蹭蹭。
这些孩子就需要锻炼编程思维,找到影响出门时间的关键事件(抽象化思维),再综合设计完成步骤(结构化思维),按规划逐步整理(条理性思维),这样就能节省很多时间。
在此之后,孩子还可以优化流程(寻找最优解的算法思维),比如有没有事情可以同时完成,有没有更简便的完成步骤等等,进一步缩短收拾整理的时间。
总而言之,培养编程思维是在培养孩子分析问题处理问题的能力。无论做什么事情,有较强编程思维的孩子总能更快找到突破口,有逻辑地去解决。
现在的孩子升学压力大,在很多家长心里编程像是个兴趣班,可学可不学,可能在兴趣培养里的优先级也不高。
编程是一门培养思维的学科,而儿童时期培养思维事半功倍。
如果家长比较看重思维培养,可以先让适龄的孩子接触一下编程,如果孩子感兴趣,就作为一个潜在兴趣先培养起来,孩子的思维也能从小就得到更多锻炼。