现在,还是有很多家长一听编程,就联想到天书一样的代码,觉得是理科的东西,适合男孩子学。甚至会有家长表示:“我家孩子是女孩,数学都学不好,怎么能学好编程呢?”
数学学不好的孩子,真的编程也学不好吗?
其实恰恰相反,编程和数学之间有很多奇妙的联系。甚至有一些教育专家认为,数学学不好的孩子,通过接触编程学习,更有利于数学的进步。
为什么这么说呢?在聊这个之前,我们先聊聊孩子数学成绩为什么会不好?
01
数学“掉队”问题为什么会出现
关于小学数学,有一个不得不提的现象,那就是:“掉队”问题。有一部分家长会发现:
明明一二年级的时候,自己孩子可以轻松拿到98、99甚至100分满分的好成绩;
但是到了三四年级,数学成绩却突然下降。
从学有余力莫名变成了力不从心,有时甚至经过多方努力,依旧成效不大...
这是为什么呢?是因为孩子学习不用功吗?或者真的是孩子在这方面没有天赋,以前成绩好只是因为功课简单?
都不是的!
那是因为随着学习的深入,需要的各种思维能力就越多。当思维能力跟不上所学的知识,自然而然就出现了距离。
小学三年级以前,数学只需要记忆力就可以了,记住一些计算规则,拿到90分的成绩相对容易。
到了小学四年级,学习数学开始需要逻辑能力时,孩子就会因为思维逻辑水平的不同,在成绩上得以最终体现。
更不用说像初中数学的学习所需要的空间想象力;高中数学学习所需要的抽象、归纳、演绎等能力。
这就是为什么不少孩子上了中学后,明明很努力的学习成绩依旧原地踏步的原因。究其根本:“地基没打牢”,这个时候系统地提高逻辑思维、推理能力就显得尤为重要啦!
ps:不光数学,包括物理、化学、甚至学习写作和英语的过程都需要到逻辑思维,这样才能够建立适合自己的学习方法。
02
编程思维的运用
那为什么说学习编程有利于数学的进步呢?
在讨论数学和编程关系之前,首先我们看看以下这道小学很常见的数学题目。
请你算出
从1+2+3+4......+100=?
很多学生可能会一开始只想到费劲地一个个去加,但仔细观察我们其实可以发现一个更加快速的方法:首尾两两配对!
1+100=101
2+99=101
......
一共有50对,那么就是101X50=5050
看到这里,其实,学过编程的孩子就知道,这就是编程思维中的拆分和模式识别。
拆分(decomposition):把一个复杂的大问题,拆解成容易理解的小步骤。拆分问题有一个需要注意的,那就是要注重小步骤要可执行。
模式识别(pattern recognition):找出相似模式,更高效地解决所有问题。
更通俗地讲:如果让你画出100只猫咪,为了更高效率高质量地完成,你肯定是先找出猫咪的“模式”,它的头,躯干,四肢等基本元素,再改变不同的局部特征即可,这就是编程思维的体现。
03
编程与数学的关系
当然啦,编程的思维方式不止上述两个,编程是为解决实际问题而生的,它的步骤可以简单地理解为:理解问题再解决问题。
数学也是解决问题,所以实质上,程序语言和数学语言是相通的,程序和数学都有内在逻辑推导的过程,学习编程非常有助于训练逻辑的推导能力,有利于更好地理解抽象的数学问题。
因为编程可以将很难的问题化为可视的,会动的画面。这就弥补了数学概念的抽象化。很多数学的概念,原理,公式,函数都可以用编程在电脑上体现出来!
python案例:蒙特卡洛求π
例如我们在做奥数题的时候,完全可以用程序的框架来表现出来,在讲奥数的时候,用思维导图,就是数学语言的程序化。
所以说,编程可以提高孩子的数学思维能力,数学也可以用程序化的语言把它体现出来。
04
怎么提升数学成绩
因此,不要再说数学不好的孩子不能学习编程了。
相反,当孩子在学习数学时遇到困难时,何不尝试着让孩子接触编程,学会将抽象的问题运用可理解可执行的编程思维,去解决。
比如:《少年派》中,“钱三一”是一位名副其实的学霸,不仅学习好,知识面也很广。
特别是在数学课堂上,老师一留题目,无论是速度还是准确度,无一例外钱三一都是第一个答出来的,且准确率很高。在同学和老师们的好奇追问下,才得知,原来他一直有接触并学习编程。
剧中,钱一三在数学课堂的表现和编程密不可分,因为编程所需要的很多能力和数学是相通的,比如说逻辑思维、模式识别等。
孩子们用编写程序解决问题的过程中,计算机是可以直观、具象化演绎数学问题的应用过程的,孩子在这个过程中会从原理和本质上把数学概念吃透,这种情况下的孩子对数学概念的理解完全不同。
编程不是理科专属,而是已经慢慢变成和读写、数学、科学并列的学生核心能力。因为,学编程的核心,不是学计算机语言,而是学一种解决问题的思维方式!