目前,很多发达国家都在大力推行编程教育,培养人才,储备竞争力。
在倡导孩子学编程时,他们让孩子学什么?学知识吗?为了将来做程序员吗?都不是,编程思维的培养,才是大家共同的目标!
乔布斯曾说过:“我认为这个国家的每一个人都应该学习编程,因为它会教给你如何思考。”
编程不仅可以培养一个人的逻辑思维能力、抽象思维能力、更重要的是能够培养分解问题的能力。
什么是编程思维
“编程思维”并不是编写程序的技巧,而是一种高效解决问题的思维方式。“编程思维”就是“理解问题——找出路径”的思维过程,它由“分解—识别模式—抽象—算法”四个步骤组成:
1.分解:把一个复杂的大问题,拆解成更可执行、更好理解的小步骤。
复杂问题很难一下子破解,但如果把它细分成很多个小问题,逐步解决,就容易多了。
比如,破案。
找出犯罪分子可不是件容易的事。但通常警察都会通过搞懂一系列相关的小问题破案,包括:发生了什么犯罪,什么时间,什么地点,有什么证据,有没有目击者,最近、附近是否有相似案件发生等等。
通过拆解问题,可以深入了解犯罪的过程、细节,获得大量信息。而理解是解决的第一步。
2.模式识别:找出相似模式,高效解决细分问题。
这点至关重要。识别模式,意味着新问题变成了老问题,我们在经验库里搜索以往的类似问题及解决方法,套用解决。识别的模式越多,解题的速度就越快。
举个例子:假如你需要画100只猫,你会怎么办?找100只猫来挨个临摹?还是找出猫的“模式”?
如果是后者,你可能要知道猫长毛,有眼睛、尾巴、四条腿。然后,按照这个“模式”,你就可以“批量”画猫了——你不用每次画一个新动物,只需要变换局部特征:黄白条的猫还是黑猫,长尾巴的猫还是短尾猫。
3.抽象:聚焦最重要的信息,忽视无用细节。
这是一个过滤的过程,通过认知问题的核心本质,帮助我们形成解决问题的构想。
接着举刚才画猫的例子,我们了解了猫的特征,就可以根据这些抽象的特点,形成关于猫的整体设想,做出一个模型。
4.算法:设计一步一步的解决路径,解决整个问题。
通过这4个步骤,一个棘手的复杂问题先被拆解成一系列好解决的小问题;每一个小问题被单独检视、思考,搜索解决方案;然后,聚焦几个重要节点,忽视小细节,形成解决思路;最后,设计步骤,执行——问题解决。
所以,所谓“编程思维”并不是编写程序的技巧,而是一种高效解决问题的思维方式,不当程序员也用得上。
编程思维,从学到玩都能用上
编程思维可以用于处理任何事。
比如——组织一次生日聚会:
你可能需要拆分问题:你们能去哪、做什么,每个人喜欢什么、想干什么,之前你们一起玩的成功经验和失败教训,预算和每项活动的成本,时间长短,天气……
显然,用编程思维组织的朋友聚会,选择起来会更容易,也更有可能让大家玩得开心。
再比如——参加夏令营:
让小孩子自己列举参加夏令营需要的物品清单,就需要知道:时间长度,活动内容,天气情况,营地地点,参加的要求等,才能准备相关物品。
用编程思维一步步拆解问题,然后根据小问题给出解决方案,遇到问题才不至于手忙脚乱、不知所措。
处理正经事,更离不开“编程思维”。
比如——写作:
想把作文写得又快又好,得先解题,拆分出可能的层次内容;然后调用大脑存储的相关信息——例子、格言,甚至曾经写过、看过的文章;列出提纲,理清思路;最后,写。
又如——带孩子逛博物馆:
要真正了解博物馆,很显然瞎逛或者随便看看都不会有所收获,先了解博物馆的分布格局,馆藏结构,通过对博物馆的分类认识,才能不虚一行。
可见,编程思维不但能大大提高解决具体问题的效率,当拥有编程思维的人面对复杂的问题,都能分解成一个个小问题,找到问题的关键和问题之间存在的关联,从而想办法将问题逐一解决,在这个过程中思维就显得尤为重要,这就是编程教给孩子最重要的能力。
所以,学习编程不一定非要做程序员,但却能使孩子拥有全新的视角、深入的思维方式和效率优化的思维,这都将成为陪伴孩子一生的软实力。
海码爸爸∣网易计算机博士发起的父联组织