来自一个计算机专家的分享,看完我觉得收获太大了,借此跟大家分享。
要点摘录:
1、少儿编程教会孩子从逻辑的角度看待这个世界;
2、少儿编程练习理性思维的重要一环:在限制条件下达成特定目标;
3、少儿编程不仅让孩子享受创造的同时,更享受在遵守规则的条件下创造的乐趣;
4、少儿编程通过模块化思维提升孩子解决问题的能力
原文如下:
"我觉得少儿编程本身就跟学艺术一样,重点在于启发小朋友对世界的另一面观察。比如学美术和音乐可能是让我们体会美,而学习编程和数理知识就是让我们学会从逻辑的角度看待这个世界。而无论是学习艺术还是科学,都是为了让我们能更好的思考这个世界,并学会创造。
我以前分享过我是怎么进入计算机行业的故事。追溯源头很有可能是小时候我爸从北京给我带回来一套那个年代还很稀缺的“电子积木”,大概就是按照说明书可以把各种电器元件组装成小风扇、门铃啥的。后来想到这其实我最早入门编程的接口,给定输入和期待的输出,如何把里面的内容接起来。
那会最大的困扰就是板子的面积有限且连接线的数量和长度有限,能够创造的空间就被压缩在了这一亩三分地上。除了电子积木所引发的创造思考以外,它还让只是孩子的我琢磨如何在这些限制下拼出想要的模型。其实这跟数学约束优化(constrained optimization)有点相似,即在限制条件下达成特定目标,也算是理性思维的一环。
于我而言,从小就接触编程的最大意义就是体会“理性创造的乐趣”。
我算是在村里长大的孩子,我们那个时候最大的乐趣就是磨砖粉来“配毒药”,或者是种豆角(然后忍不住隔两天挖出来看看种子有没有发芽),这些都算是快乐的创造,但其中的过程是不可控的,一切都是天马行空的去做。
而编程算是少数的有严格定式的活动,比如我们要编写一个计算器,那么输入的就必须是数字和合法的运算符,而得到的相对应的结果也必须是严格的、且符合数学逻辑的。在这个过程中,孩子不仅仅是享受创造的乐趣,且还能体会遵守规则创造的乐趣,我觉得是值得在小的时候就去尝试的。
除此之外,在适当的年纪接触编程应该可以培养孩子解决问题的能力。
编程中的一个重要概念就是面向对象编程(object-oriented programming, OOP),当然不是字面上的面相对象,而是指可以把问题抽象成一个个小的模块。
假设我们想造火箭,那么我们可以把这个过程拆分成5个部分,在推进部分只要我们提供燃料,火箭就可以获得动力,中间的过程我们不需要时时刻刻的操心。这就是一个简单的OOP思想,也就是说把具体功能和模块封装起来,再组装起来,降低整体系统的复杂度,让各个部分各司其职。
小朋友的思想是发散式的、天马行空的,适度的掌握这种模块化的思维提供了新的思维模式,遇到复杂的情况时候可以更好的拆解问题,各个击破。
除此之外,我觉得少儿编程还可以帮助孩子准备好对于人工智能时代的到来。
抛开编程能力和数理思维,一个很重要的概念就是“向量化”和“矩阵化”。举个简单的例子,1+1+1可能需要进行两次加法,而1*3只要进行一次乘法。虽然可能在计算机硬件层面其实都是一样的,但这两种运算其实是两种不同的思路。
在人工智能时代我们面临巨量的数据,我们可以把他们想象成一个个数字矩阵(甚至是高维的张量),那么如何高效的处理这样的矩阵/张量,不仅仅是运算的问题,更多的是思维上的改变。
刚入行的新人可能会选择一个个数字的去遍历,而在这行小有经验的人都会用向量化和矩阵/张量化的方式去处理。
在更早的阶段能够给孩子一个这样的准备,也有助于当他们接触到人工智能知识时可以更加游刃有余。”