少儿编程是不是智商税
大家好,今天我们要讨论的话题是“少儿编程是不是智商税”。这个话题的热度源于人们对编程教育价值的认可,尤其是在当今社会,随着机器替代人工的趋势日益明显,越来越多的人相信,如果孩子们能够真正学会编程,这将是非常有益的。然而,目前对于如何让大多数中小学生真正学会编程,并没有成熟的理论和有效的方法。一些人认为学习编程的主要目的是提高孩子的逻辑思维能力。另一方面,也有很多人表示,并非所有的孩子都适合学习编程,特别是针对C++这类复杂的编程语言。他们认为,编程的本质其实是数学,如果孩子的数学基础不够扎实,那么就没有必要去学习编程了。这些不同的观点和看法使得家长们在选择是否让孩子学习编程时感到困惑和迷茫。
其实,我们认为关于“少儿编程是否是智商税”的问题本身并无太大争议。真正的争议在于以下五个方面:第一,对于少儿编程的学习目标和期望成果缺乏明确的指导;第二,学习过程中的成本和资源投入难以预估;第三,对于进阶的路径缺乏清晰的规划;第四,对于学习效果的验证、评价和反馈机制不完善;第五,对于是否适合大部分人学习存在疑义。这些问题导致大部分人在学习了少儿编程之后,无法准确评估孩子的学习成果和价值,从而引发了关于“少儿编程是否是智商税”的激烈讨论。
另外,还有一部分人将少儿编程作为升学的工具,希望通过参加竞赛等方式直接升入顶尖大学,这无疑增加了少儿编程教育的功利性和竞争压力。这种观念使得少儿编程教育成为了少数人的特权,而对于大多数人来说,这似乎更像是一种“智商税”。
由于计算机的普及时间相对较短,即便是大学生在学习编程时,也往往不是完全依赖老师的教导,而是需要通过自身不断的学习和实践才能掌握。因此,目前对于编程学习的目标、成本、进阶路径等方面尚未形成统一且成熟的理论体系,这是完全可以理解的。我们计划通过一系列的视频内容,深入探讨以下几个关键问题:少儿编程学习的目标是什么?学习过程中需要投入哪些成本?如何规划进阶路径?如何有效地验证学习成果?以及如何判断少儿编程是否适合大多数人学习?我们希望通过这些内容的分享,终结“少儿编程是否是智商税”的讨论。 真理越辩越明。我们诚挚邀请大家积极参与讨论,共同推动少儿编程教育的健康发展。
1.学习的目标是能学以致用,能自我持续学习并解决问题
计算机科学与传统学科的最大区别在于其实践性。在许多传统学科中,孩子需要花费大量的时间进行学习,才能真正将所学知识运用到实践中。甚至在某些学科,如哲学,即使在达到大师级别后,仍然存在许多争议和分歧的观点。在这种情况下,需要引入一些模糊的概念来指导学习方向,例如逻辑思维、抽象思维等。或者通过考试和与他人比较,以此来证明对知识的掌握程度和领先他人。
但是,计算机作为一种工具,可以通过编程将知识、创意、对世界的理解、对未来趋势的判断、个人情感等转化为具体的、可视化的结果。因此,学习编程的目标就是将孩子的想法和思考具象化,并通过实现这些想法来获得自我认同。如果这些具象化的结果能够解决实际问题,并具有巨大的实用价值,那么即使其他人最初并不认同,最终也会改变态度。例如,像ChatGPT、Pika这样的项目,就是通过编程将复杂的思想和概念转化为具体的、实用的产品。就像我们在谈论学以致用的目标时,不仅提出了观点,还通过编程实现了具体的案例,使大家能够直观地理解观点。
当然,有些朋友可能会质疑,要输出类似于ChatGPT、Pika这样的项目太难了,中小学生怎么可能呢?但是我们有没有想过学以致用是可以分大学大用、小学小用呢?实际上,编程学习可以分为三个层次:语法知识、概念知识和运用能力。语法知识是指如何将代码组织成计算机能够理解的形式;概念知识则是理解编程能解决什么问题、何时使用循环、何时使用条件判断、多线程能解决什么问题等;运用能力则是在具体的应用场景下,将概念知识组织起来解决具体的问题,比如,当我讲解编程的相关话题时,这就是一种运用能力的体现;而您能够理解并产生自己的想法,这也是一种运用能力的表现。或者,如果您认为编程能够解决某个具体问题并带来效益,那么您可以找专业的程序员来帮助实现。当然,您也可以将概念知识通过具体的语法知识转化为代码,让计算机自动执行,这些都是运用能力的体现。从以上的分析可以看出,概念知识和运用能力是可以跨语言迁移的,而具体的语法知识则可以通过查阅帮助文档或者按照具体的概念知识关键词搜索到具体的代码进行组合。
举个例子,我们每天都会开关灯,如果我们反复快速地开关灯,就会产生闪烁的效果。计算机最擅长做的事情之一就是重复执行相同的任务。如果想要模拟这种闪烁的效果,只需要在代码中加入一个循环,并在每次循环之间加入一个短暂的等待时间,这样就可以模拟出手动开关灯的效果。同样的,如果有一台机器狗,每个命令都可以让它执行一个特定的动作,然后把这些动作串联起来,让计算机不断地循环执行这些命令,机器狗就会开始连续地表演。这样的例子在生活中比比皆是,只要善于观察和思考,就会发现很多可以用编程来解决的问题。这就是所谓的学以致用,无论年龄大小,都可以根据孩子的实际情况找到适合自己的应用场景。
现在,让我们一起来讨论一个问题:学习编程的目标应该是学以致用,能自我持续学习并解决问题吗?
2.学习的成本
我们通过实践发现,如果从小学三年级开始学习编程,并且在春季和秋季学期每周上一次课,以及在寒暑假期间参加项目化的学习,那么在四年的图形化编程学习和两年的Python编程学习之后,孩子们基本上能够达到学以致用的水平,并且具备了自我持续学习和解决问题的能力。当然,这只是一个基本的起点,后续的学习和发展还需要个人的努力和探索。编程的基本概念总共就100来个,为什么需要用四年时间来学习呢?主要原因有以下三点:
a.编程是一门注重实践和结果的学科,需要大量的实际操作经验。最关键的一步是通过项目化的综合实操,填补概念知识之间的间隙,从而达到熟练运用的境界。如果不能熟练运用,继续学习Python、C++等高级编程语言可能也难以掌握,反而会陷入语法知识的重复学习中,而无法提升到概念知识和运用能力的层面。
b.要将编程知识和背景知识区分开来。在少儿编程教育中,应当优先考虑培养孩子的编程运用能力,因为编程就像胶水一样,能将各个学科的知识融合在一起,并使其具象化。然而,正是因为编程的这种特性,许多家长为孩子报名参加了各种各样的编程课程,但这些课程往往更注重背景知识,而忽略了学习编程是核心。最典型的例子就是有人说数学不好的人不应该学习编程,因为编程到最后就是在学习数学。我不明白为什么不说天文学不好的人不应该学习编程,因为只有天文学好的人才能通过编程发现引力波。因此,将背景知识和编程知识区分开来,有助于正确评估学习编程的成本,并通过加强对概念知识的理解和运用能力的培养,真正掌握编程学以致用的能力。编程知识是有限的,但背景知识是无限的。掌握了编程的能力和丰富的背景知识,就如同拥有了驱动山川河流、穿越星河的力量。因为编程就是将孩子所掌握的知识告诉计算机,使其自动运行,实现自动化和智能化,简单来说,就是心之所向,行所必达。当然,在学习编程的过程中,适当地引入背景知识是必要的,因为如果没有背景知识,编程就会变得空洞,缺乏具体的呈现形式。同时,孩子也需要通过组合背景知识来实现有趣的案例,以激发孩子的学习兴趣。但是,我们必须明确主次,所有背景知识只是服务于更快地学会编程。一旦学会了编程,编程就变成了工具,服务于具体的背景知识,使其自动化、智能化。在实际应用中,还可能涉及到多个学科的背景知识。
c.很多家长认为自己的孩子是天才,学习编程的能力比其他人强,希望通过参加比赛获胜进入清华或北大。不可否认,确实有一些真正的天才,他们可能在学习数学的过程中自然而然地掌握了编程。但是,无论多么天才,都需要从基础做起。既然认为编程是必要的,为什么不先培养一下概念知识和运用能力呢?毕竟,计算机是非常容易验证学习效果的,中国有句古话叫“是骡子是马拉出来溜溜”。同样,Linux之父也曾说过:“Talk is cheap,show me the code!”
请记住,学习计算机编程并不需要与他人进行比较,而是要关注孩子是否越来越有信心,以及是否能够越来越熟练地运用编程。为了说明这一点,我将展示一个多线程编程的教学案例,作为概念知识和运用能力学习成本的支撑。
总的来说,把编程知识和背景知识区分开来,根据孩子想达到的水平,成本是可以估算出来的。
3.进阶的路径
有很多种,但是从大的来说可以分为以下两种路径:
- A.书山有路勤为径,学海无涯苦作舟 --- 知道编程很有用,但是学了不知道具体怎么用出来,所以一直在坚持学习。 期待未来有一天能融会贯通,学以致用。
- B.会当凌绝顶,一览众山小 --- 快速掌握编程的基本结构用法,在实践中理解编程能做什么。在此基础上,通过完成各种奇思妙想的任务,建立起以编程为主干、功能(背景)知识为枝杈的分析模式。当遇到新的功能知识时,可以通过资料搜索、师友询问等方法找到解决方案。
简单来说,A路径是传统的教学方法。优先培养孩子的概念知识和运用能力,通过快速的实践让孩子理解如何指挥计算机工作的,以及计算机能做哪些工作是B路径,更加注重实践,让孩子在实践中学习和理解编程。但是,无论是哪种路径,最重要的是要激发孩子的学习兴趣,否则很容易导致学习的中断。其实编程学不会除了前面讲的目标错误、过多无效背景知识、路径错误之外最主要的原因有三个:
- i、学编程是为了学编程而学编程,比如关注语法、背单词等,缺乏将所学知识加以运用和理解。
- ii、缺乏实际运用的场景、环境、案例和想法等。
- iii、缺乏实践的兴趣。
因此基于B路径还需要提供合适的背景知识和平台让孩子能有兴趣学习、有足够的场景和案例进行实践,有足够的空间实施孩子的想法。
编程的主要知识点大约有100个,但是要达到运用自如的程度,需要足够的时间进行实践。缺乏实践是导致无法灵活运用编程的主要原因。这就好比常用的汉字只有3500个左右,难道学了这些汉字就能准确表达我们的意思, 写出优美的文章,完成实验报告了吗?
这就是我前面提到的,为什么图形化编程需要学习4年的原因。接下来,我将展示一些软硬件结合的教学案例和孩子自主拓展实践的案例。
4.如何验证学习成果
正如前面所说,计算机是一门注重实践和结果的学科,因此我们可以通过非常简单直观的方式来验证概念知识和运用能力的掌握程度。例如,可以通过循环来控制一个小灯的闪烁,或者使用条件判断来控制舵机的方向,当识别到西瓜时舵机向左偏转,识别到苹果时舵机向右偏转。是不是非常直观,且容易验证?很多编程知识点其实都非常简单,但是有以下几点原因需要更多的时间进行实践:
- a.学习可以分为不同的层次,包括了解、参考、填充框架和独立编写。因此,在验证学习成果时也应该遵循这样的步骤。对于一些非核心的编程知识点,孩子可能只需要具备参考和复制的能力(抄能力);但对于核心的编程知识点,孩子需要达到能够独立编写的水平。
- b.对于单个知识点的验证相对简单,但是对于综合运用能力的验证就相对复杂一些。一方面,需要有核心的标准项目化练习案例;另一方面,还需要孩子有各种不同想法的非标准化的项目化实践。非标准化的项目化实践非常重要,因为知识就像石头,石头放在一起总会有缝隙。有些孩子悟性较高,能够通过思考来完成项目;而大部分孩子则需要通过非标准化的项目化实践来找出缝隙,然后通过指导或者额外的自主学习来完成项目。经过这个过程,孩子们就能够逐渐融会贯通。
- c.还有一点很关键,那就是由于历史原因,即使在大学里,一些高阶的编程实践教学也比较难以开展。很多时候,只是阅读教材,并没有实际的编程实践。这可能是因为老师自己也不熟悉这些实践,或者即使老师熟悉,也难以教授给学生。例如,多线程编程、调试程序、定位问题的能力等。如果我们用C++来教授多线程编程,我估计老师都会感到崩溃。面对一群没有多线程基础的孩子,这个课程可能要上好几天才能教会,而且根本没有那么多实践的时间。但是想通过编程完成自己的创意的时候,多线程、调试程序、定位问题的能力确实是非常关键的,特别在软硬件结合的项目的时候非常明显。我已经观察了无数的老师想完成一个小作品,整体图形化代码可能在50到100行,但是就是这么少的代码量怎么也完成不了和现实世界一样的功能效果。当然不用多线程也可以实现,但是对编程技巧的要求会高很多很多,用上多线程之后,瞬间就很简单,50到100行代码实现了完美小作品。浙江有位信息科技市级教研员曾在市级活动中公开讲,未来所有的信息科技老师要有能力独自完成创客作品,没有这样的能力可能不配站在讲台上。还是上面的话,是骡子是马拉出来溜溜,计算机是注重实践和结果的学科,说不定孩子的瞬间的创意,实践的结果,能风靡全世界呢。
总结一下,使用的传感器等设备其实也是背景知识的一部分,包括它们的连接方式和使用说明。通过加入硬件设备,编程有了更大的实践空间,可以发挥更多的创意,从而激发孩子的实践兴趣,验证他们的学习成果。最关键的是,传感器的种类是有限的,而且都是基础的类别,一旦掌握了使用方法,其他类型的传感器只需要能看懂连接方式和使用说明就可以使用了。因此,制作创客作品是验证编程学习成果的一个非常好的选择。
5.是否适合大多数人学
看了上面的介绍,我相信大家都有了答案,是不是适合大多数孩子学习编程,答案肯定是适合的。唯一的问题是多大开始学,我的建议是对于特别聪明、认字多的孩子从小学二年级下开始学,大部分孩子可以从小学三年级开始学,少部分可以从四年级开始学。 大家看,图形化编程,只要能认全所有的字,基本就没有问题了。最关键的是,实践需要大量的时间,即使给了最好的学习方法,编程还是需要大量的实践。如果把背景知识剥离掉,编程其实就是一项普通的技能。家长都知道它非常有用,只不过给它披上了一层神秘的外衣,所以有人会误认为大部分孩子不适合学习编程。 最后申明下,少儿编程真不是智商税,是人人都可以掌握和运用的,抛开图形化编程,拿现在大火的Python来说,其实在掌握编程的概念知识和运用能力后,会以下几步就可以了:
- a. 需要时能从Python中文官网查询需要的Python语法。
- b. 学会搜索,学会参考,能从网上找到常用案例.
- c. 从创意中分离出关键字,通过关键字能找到合适的Python库
简单的说,会用概念和关键字找到合适的库,会安装,会调用函数就可以了,和图形化其实没太大差别。
编程是与计算机交流的钥匙,是将各学科知识融合在一起的胶水,是一种基本的工具。当孩子掌握了编程能力后,所有的背景知识都可以为其所用,解决实际问题。当孩子有自己的想法想要实践时,会知道自己缺少哪方面的知识,当孩子解决某个难题时发现只差一点点的背景知识时,会自发地、如饥似渴地学习,希望通过编程来实现自己的想法。当孩子动动手指,就能让万物听从他的指挥时,孩子会觉得自己的小脑袋好聪明哦,充满了成就感。
编程是一门实践性很强的学科,是验证创新想法的有利工具,千万不要把学编程变成刷编程。
最后想问一句,你被收智商税了么?