大家好,又见面了,我是你们的朋友全栈君。
前言
我是一位从业十年的程序员,也是一位程序员爸爸。十年来,一直coding,从未停歇。既做过传统行业的软件,也做过移动互联网产品,甚至还曾在年少时,闯荡过幼教产品的创业大潮。作为程序员爸爸(或许应该叫工程师爸爸,换个称呼可以让孩子更崇拜),我时常在想我家的小朋友是否应该学习或者接触一下编程?那么说到编程,就必然需要先理解一下编程是什么?少儿编程又是什么?对于前者,我期望从实践者的视角作出我的解读,对于后者我希望以程序员爸爸的视角与大家分享。
编程是什么
编程,对于大众来说,最普遍的理解就是写代码,可能再深入一点,就是使用Java、C/C++、Python写代码。那代码又是什么呢?最直白的观点,无非就是一堆英文单词,偶尔还夹杂着数字、符号堆砌出来的东西。果然是这么简单,但这些都只是表象。
编程的原意,是利用计算机强大快速的计算与存储能力,将人的想法或思维过程转换成计算机能识别执行的动作,以此来帮助人类解决问题。而代码就是人类与计算机交流的语言,编程即编写代码,让计算机按照人类的意愿行事,不同的编程语言只是与计算机交流的不同方言而已。
举个例子。算盘,可以看作是一台简易机械式计算机(或许叫计算器更合适),它具有计算(加减乘除)及存储(记数)能力,人类使用算珠(编程语言)与算盘交流,同时规定梁上的一枚算珠代表5,梁下一枚算珠代表1。当人在算盘拨上或拨下算珠时,同时结合珠算法则,这个过程实际上就是在编程。与计算机程序稍微不同之处在于,算盘是编写完程序能即时得到计算结果,而计算机编写程序与运行是两个不同的过程。
再细细分析下算盘的使用过程,可以发现其中隐含的让人惊叹的思维方式。一是不同位置的算珠代表不同的数字,这其实是一个编码过程,这与现代发明的摩斯电码有异曲同工之处,而计算机则是使用二进制来表示不同的数据。这种方式将现实世界的数字概念转换为算珠表示,这就是编码过程,也是解决实际问题的思考过程。二是算珠与珠算法则的使用,相当于给算盘设计了一套使用规范(即编程语言),只有遵循算珠编码与珠算法则才能快速准确地使用算盘解决计算问题。
通过算盘的例子,我们可以知道,编程其实并不是什么高深的东西,说到底就是一个解决问题的思考与实践过程,只不过是使用机器还是人自己去解决而已。实际上我们平常在生活工作中就经常做这些事情,只是我们没有意识到。比如使用不同颜色的笔作标记,这其实是一个编码过程,不同的颜色代表不同的含义;再比如烧菜煮饭,电饭煲在煮饭的同时,我们通常会洗菜、切菜、炒菜,所有这一切都是预先设定好,需要按顺序完成的,如果突然停电了,那么就必须停下手上的活,将还在半生熟状态的米饭改成蒸饭。这个例子实际处理的是顺序与条件事件的逻辑思维过程。
与算盘类似的例子很多,比如老式提花机,它可以通过预置的一批穿孔卡片来编织出指定的花纹,它在计算机的发展历史中起着非常重要的作用。
编程是一件非常有趣,同时又具有创造性,并且非常容易产生成就感的事情。作为一个从业十年的程序员,尽管默默无闻,但始终乐在其中。
少儿编程学什么
小朋友们需要学点编程知识吗?如果答案是肯定的话,应该怎么学?能学到什么呢?
我的小孩,似乎已在不知不觉中受到了我的影响。他在很小的时候就已经知道爸爸是做什么工作的,并且无数次亲眼目睹爸爸在电脑前专心编写代码的情景。我在想,他大抵是看不懂爸爸在写什么的,仅仅是好奇而已或者他只是无聊没事干。我曾经给他演示过一个无比简单的网页,只能简单地改变字体大小与颜色,他的反应在我的预料之中。“哇”,“哇”,“哇”,每一次大小或颜色的改变,他都会发出惊叹。在他的意识里,这可能仅仅是好玩,甚至他可能会想:“哦,原来我以前看过的那些网页就是这样做出来的”。当然,我不得而知,我认为前者的可能性更高。但这是一个好的起点,这是兴趣的来源。
有些小孩,可能天生脑力比较强,对诸如如果是圆就涂上红色,如果是正方形就涂上蓝色题目能快速理解并完成;有些小孩可能就差点,需要读上几遍才能理清;但我认为编程的逻辑思维并不能与语言理解能力混为一谈,编程并不是玩文字游戏,能分得清上下左右前后的小朋友都可以很好地完成编程的任务。
那么对于小朋友来说,最好的编程知识是什么呢?虽然计算机学科是一个混合学科,涉及数学、物理学、生物学、化学等等,但对于小朋友来说,不需要了解计算机的工作原理,不需要了解程序的运行原理,他们需要的是学习计算机世界的抽象思维方式,学习发现与分析问题的思维模式以及解决问题的能力。
什么叫抽象思维呢?简单地说,就是通过大量观察或实践,发现事物的共同特性,然后加以演绎变化,从中找到提升效率的方法。比如当人面对五颜六色的苹果、柑橘、香蕉、菠萝时,我们会说它们都是水果,这就是抽象思维。抽象思维也直接决定了孩子们在学习上的效率,同样的一堂课下来,为什么有些孩子学得好,有些孩子学得差呢?很大程序上是抽象思维能力在起作用。抽象思维能力强的孩子,善于总结,善于举一反三,最终能达到融会贯通的状态。而在计算机世界中,抽象思维发挥地更极致。从中断器的工作特性发明电报机;从一个个小小的逻辑门电子元件,衍生出半加器、全加器以及存储器;就这样在不停地抽象中,计算机的发明才呼之欲出。在未来的日子里,计算机的先驱者们又抽象出了集成电路、内存、磁盘、显示器、打印机、操作系统、网络通信协议、高级编程语言等等。
兴趣无疑是最好的老师,这话什么时候都不过时。小朋友对新鲜事物有着天然的好奇心,但编程往往是一件需要极度耐心的事情。小朋友天性好动,他们是不可能长时间坐在电脑面前,老老实实地编写程序。我认为必须要是吸引力足够,持续时间较短,并且最好能动手的方式。从我自身的经历来讲,可玩耍的绘本、编程游戏、智能积木、编程机器人,这几个我认为是最佳的学习方式,难度也是从易到难。在后面的文章中,我会尝试与大家分享我与我的小孩一起玩过的书籍或者游戏。
在编程的世界中,小朋友将在不知不觉中学会抽象思维、发现问题、解决问题的能力。遇到问题时,学会尝试弄清楚到底是什么问题,同时思考问题的不同解决方法,并将这些不同的解决方法付诸实践。祝愿更多的小朋友来到编程的世界中来,让我们的世界更自动、更智能。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/128911.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...