第1章 如何学习编程
1.1 少儿编程到底学什么
很多家长朋友让孩子学习编程,是为了培养逻辑思维能力,担心人工智能时代下逻辑思维能力差的孩子会被淘汰。
毫无疑问,编程是一门非常适合用来锻炼逻辑思维的学科。因为编写程序的过程就是不断思考和运用逻辑的过程,所以说编程对逻辑思维的培养非常有效和重要。
但是,这些也恰巧是计算机最擅长的,未来在大数据和人工智能面前也是最容易被替代的。
那么,什么是不容易被替代的呢?
人类的品质,探索的精神,创新的意识,文明的艺术,更高的思维方式。
我认为少儿编程的重点不在于学习编程软件的使用和编程语言,而在于训练思维。让孩子在愉悦的学习环境中尽情地表达内心想法,通过项目制的学习方法掌握分析问题、解决问题的能力。
以下将从3个方面阐述我认为的少儿编程。
1.学习什么2.培养什么3.训练什么
1.学习什么
1)学习软件的使用方法
未来,我们将会越来越多地使用各种软件来更高效地完成工作和解决问题,例如Word、Excel、PPT,以及图像处理工具、视频剪辑软件、ChatGPT等。而它们的一些操作在很多地方是相通的。
Scratch的软件界面与PhotoShop的软件界面就有几分相似。
2)学习编程知识
编程知识的学习只是少儿编程学习中的一小部分。学习流程图,可以掌握描绘编程应用逻辑的能力;学习编程语言语法,可以掌握代码编写的能力。学习顺序结构、循环结构、选择结构、变量、数组、函数等一系列的编程知识和编程技巧,通过运用这些编程知识和编程技巧,可以设计简单的程序,帮助我们解决一些重复性或流程化的工作。
3)学习跨学科应用
将数学、物理、化学等学科知识运用到一个个实实在在的项目上,融合相关知识来模拟现实场景、解决问题或者进行发明创造。这可以赋予知识更蓬勃的生命力,而不仅仅是停留在纸上作业或考试中。
2.培养什么
1)培养自律性
孩子大部分时间是生活在他律的状态,被管着上课不能交头接耳,被要求作业按时完成,被规定玩游戏不能超时,等等。编程可以很好地将他律变成自律,因为在程序的世界里不需要外人评说,程序本身会直接告诉你对与错,运行的结果也会给出实际反馈。
培养一个孩子的自律性,需要制定适合他年龄的规则,培养他遵守规则的意识,以及适当地延迟满足他的需求。
每一门编程语言都有自己的规则,我们无法讨价还价,程序的运行也会完全按照规则来执行。编程通过严谨的逻辑判断和程序规则帮助孩子不断地提升自律性。
通过编程制作项目、设计游戏都不是一蹴而就的,它需要一个过程。例如,想玩一款自己脑海中设计的游戏,需要先进行策划-分析-编程-测试-调错-优化这一过程,然后才能玩游戏。这个过程可以给予孩子很好的延迟满足感。所以说编程学习可以锻炼孩子的自律性。
自律性对孩子的成长和成绩的提高都非常重要,至少在小学和初中阶段,一个自律的孩子通常其学习成绩都很优秀。
2)培养高效的自主学习能力
我们获取知识的路径越来越便捷,无论是大人还是孩子都可以快速地通过网络或者书籍获取各种知识,这个时候的竞争力就体现在自主学习的能力上。
自主学习能力表现在两个方面:一是主动地学习,二是高效地学习。
在高中阶段高效地学习非常重要,这也是成绩从自律性拉开的关键。一个自律的人可以很好地做到主动学习,尤其学业压力非常重的时候,如果没有好的学习方法,将会学习得非常辛苦且不见成效。到了大学阶段,主动学习将是核心,孩子将会有大把的自由支配时间,如果可以做到主动而高效地学习,那将会是人生的一笔宝贵财富。
孩子在幼儿园、小学、初中、高中一直都有家长的督促、老师的管理,虽然学习压力和负担逐渐上升,但是在这些阶段,孩子无须直面社会的挑战。然而,在大学这个最邻近社会挑战的学习阶段中,没有了家长时刻的督促,也没有了老师严格的管理,毫无自主学习能力的孩子虽然可以轻松愉快地度过四年大学时光,但接下来迎接他们的是比高考还要严峻的就业挑战,要面临的是比高中学业还要辛苦的工作。因此,这就需要我们的孩子提前具备自主而高效的学习能力,如此才能在这样的成长路径下成为佼佼者。
3)培养想象力和创造力
孩子的想象力是无穷的,哪怕是梦境也是一部有趣的动画片。编程可以将孩子的想法结合音乐、绘画通过游戏、动画、模拟等一系列的方式生动地表达出来。
创新创造的意识会在孩子不断表达和实现内心想法的过程中得到充分的锻炼和提高。具备了自律性和高效学习能力的孩子,再融合上想象力和创造力,将会是未来极具竞争力的人才。
4)培养表达力
通过项目进行中的团队协作,可以锻炼孩子的沟通协调能力。将自己的项目进行讲解和展示,可以提升孩子的表达能力。
自己创造的趣味游戏或者炫酷项目更容易激发孩子的分享欲,通过追逐兴趣和内在的成就感,让孩子不断地感受到分享带来的乐趣,在潜移默化中锻炼表达能力。
5)培养耐心和细心
编程项目不是一蹴而就的,会遇到各种各样的问题,需要反复调整,程序的优化和错误的寻找是一个极需要耐心和细心的活。
不断思考优化和排错的过程可以逐步培养孩子的耐心和细心。
3.训练什么
1)计算思维
计算思维是一种具有逻辑性和抽象化的利用计算手段科学地解决问题的能力,主要包括4个方面:分层思维、模式识别、流程建设和抽象化。
· 分层思维
分层思维帮助我们将大项目拆分成若干个小项目,将复杂的大问题拆解成一个一个的小问题,让复杂的大部分变成容易理解和解决的小部分。通过完成小项目、解决小问题来完成大项目、解决复杂的大问题,使整体变得更加易懂和简单。
如同制作汉堡,乍一看是一个多层级的复杂项目,但是当我们运用分层思维将它拆解后,就会变得更加简单。
首先,将汉堡分层划分出它的组成部分。
然后,完成每一个组成部分,再将各部分组合起来,一个汉堡就做好了。
· 模式识别
任何事物都有相似性,模式识别正是教会我们找到事物之间的共性规律。通过总结以往经验并进行类比推理,利用这些相同的规律去解决问题。当我们将大项目、复杂的大问题分解为小项目、小问题后,通常可以在这些小项目、小问题中找到模式和规律。
一个典型的例子就是多个数字的加法。我们都会运算两个数字的小加法,那么把这些小加法组合起来,就可以用相同的加法逻辑来解决更大范围的加法问题。
9+10+8+6+7=?
第一步:先分解为4个式子。
9+10=?
?+8=?
?+6=?
?+7=?
第二步:运用我们掌握的加法逻辑逐个进行计算。
9+10=19
19+8=27
27+6=33
33+7=40
或许上面的每一个加法式子我们之前都没有计算过,但是加法法则的模式和规则是相同的,所以我们可以快速地计算出每个小式子的答案,通过一层一层的计算,得到最终的答案。
· 流程建设
流程建设是一步一步解决问题的过程,按照一定的顺序完成一个又一个的任务。设计程序的每一个步骤,编写程序的每一行代码,都是流程建设的过程。
我们已经在日常生活中运用到了流程建设。
比如:上学的一天
比如:今天该去哪儿?
· 抽象化
抽象化是关注关键信息,将重要的内容提炼出来,忽略不必要的细节。掌握了抽象化的能力,我们就可以将一个解决方案应用于其他事物中,制定出解决方案的总体思路。
例如,或许我们并不认识所有贝类,也叫不出它们的名字,但是关注到它们都有坚硬的贝壳、柔软的肉质,并生活在水域,因此可以进行抽象化,把它们统一叫作贝类。当我们知道如何烹饪花甲的时候,对于其他贝类,通过它们都是贝类这个关键信息,就可以忽略它们的外形和名字,得出它们能用与花甲相同的方式进行烹饪。
2)各种思维的培养
学习编程还能培养描述性思维、批判性思维、类比思维、程序思维、逆向思维、发散思维、组合思维、求异求同思维、因果思维、建模思维等。
既然少儿编程的教育理念是这样的,那么整个学习过程就应该围绕这个教育理念来开展,这样才不会让少儿编程教育变成知识灌输式的学科。少儿编程的关键在于教学的形式和过程。