大家好,我是李老师 。深耕 “少儿编程” 教育培训领域十余年,我对 “少儿编程” 有着较为深刻的理解。我国早在秦朝就实现了语言文字及货币的统一,反观现在的欧洲,依旧是小国林立。这看似与少儿编程毫无关联,可要是我说少儿编程曾有个统一代名词叫 “Scratch”,你会相信吗?
在现实中,由于专业领域差异等诸多因素,每个人对少儿编程的理解大相径庭。有人拿职业化编程与少儿编程作比较;有的 C++ 教练认定学习 C++ 才是真正的少儿编程;线上编程教学者不推荐线下班,线下老师又不认可线上学习。明眼人一看便知,这不过是自卖自夸的广告话术。从宏观层面,这些观点缺乏普适性;从微观角度,个体学习需要因材施教,片面强调某一种方式都有失偏颇。很多人从自身经历和利益出发解读少儿编程,难免存在片面性,这才导致众说纷纭。实际上,国家十多年前就已将逐步在中小学生中普及编程写入政策,学习编程肯定是有益的,但如何以高性价比学习编程,其中大有学问。多数普通家长既不懂编程,更不知如何选择编程班,这考验的正是家长的规划与决策能力,接下来我就和大家探讨这个问题。
编程,即编写程序的简称。2007 年以前,编程主要依靠书写文本代码,这要求编程者掌握计算机打字技能。为什么总提到 2007 年?看完文章你就明白了。程序是一系列指令的集合,计算机依据这些指令解决问题,而这些指令需要人为提前编写,编写的过程就是编程。如今,有一群以编程为生的人,我们称之为程序员,不少科技界大佬都是从小学阶段开启编程之路,这里就不展开细说了,感兴趣的朋友可以自行查阅。程序员的编程属于职业化编程,而我们今天探讨的是少儿编程,二者目的不同,学习内容自然也不一样。少儿编程旨在提升孩子的综合科学素养,学习内容不局限于代码,还融合了多学科知识。进一步细分,少儿编程可分为广义和狭义:广义的少儿编程涵盖中小学生学习的各类编程,像机器人编程、创客编程、信息学奥赛编程等。其中,信息学奥赛编程(简称信奥)后期主要学习数据结构与算法,这部分内容,普通程序员可能都未曾深入研究,所以才会出现小学生能解的算法题,程序员却束手无策的情况。含金量高的白名单赛事大多与编程相关,而信息学奥赛的含金量堪称其中之最,这又是另一个值得探讨的话题,感兴趣的朋友可自行了解。
狭义的少儿编程,过去基本特指图形化编程,甚至前些年,Scratch 几乎就等同于少儿编程。Scratch 是美国麻省理工学院媒体实验室终身幼儿园教研组在 2007 年专为 8 岁及以上儿童开发的图形化计算机语言,非常契合儿童的认知特点。Scratch 中具备循环、分支判断结构,有变量、自定义功能块(函数),还能实现递归,也包含列表这种基本数据结构,基于列表,更能进一步实现栈、队列、树与图等高级数据结构,可以说它具备一门计算机语言的完备性,是中小学阶段最适宜的计算机语言,成年人学习也同样能从中找到乐趣。Scratch 编程秉持 “想像・编程・分享” 的理念,鼓励孩子发挥想象力,自由创作作品并与伙伴分享。十多年前,我常常从美国麻省理工学院官网的 Scratch 作品中汲取灵感,也深刻体会到想象力的重要性,当时那个网站上就已有上千万个作品,大多出自孩子们之手,如今作品数量估计早已上亿,只可惜现在无法访问那个网站了。
在 2007 年 Scratch 诞生前,中小学生学习编程多从 logo 或 basic 语言入手,信奥则以 pascal 计算机语言起步。像 logo 这类看似 “简单” 的语言,只需敲几行代码就能指挥小海龟绘制图形,但它没能让 “少儿编程” 形成整体概念,更未能实现普及,究其原因,还是难度较大。而 Scratch 的出现,彻底改变了中小学生学习编程的模式,它就像搭建起了全新的 “基础设施”。孩子们无需输入文本代码,通过鼠标操作、积木搭建,就能轻松学习编程。不过,想要完成一个出色的作品,就需要运用逻辑思维、发挥想象力,同时还要具备一定的知识储备,这可不是件容易的事。从 2010 年左右至今,这十多年我亲眼见证了少儿编程行业的发展历程。编程教育的普及是科技社会发展的必然趋势,因为程序是计算机、机器人的灵魂,更是人工智能的基础,如今的大模型,比如 deepseek,本质上就是通过编程实现的智能软件。试想,如果孩子能尽早掌握这项 “高端” 技术,是不是离未来的发展机遇更近一步?社会发展追求利益最大化,个人发展亦是如此,我们愿意花费 12 年时间苦学文化课,为的就是考上大学、谋求好前途,归根结底也是为了个人发展,所以竞争难以避免。但我们要尽量避免同质化竞争,也就是现在常说的 “内卷”。国家放开双休,正是希望部分学生能将更多时间投入到个人兴趣中,打破所有孩子都陷入同质化竞争的局面。如今,上大学的途径越来越多,远不止高考这一条路,我上次查询就发现有 20 多条。在人口负增长的当下,对于现在的小学生而言,未来上大学不再是难题,反而可能面临众多大学争相录取,却因自身缺乏兴趣爱好而不知如何选择的情况,其实这种现象已经初现端倪,只是部分家长还未察觉。人终究会回归到自己真正感兴趣的领域,这样才能保持长久的热情,激发创造力,未来我国也将涌现出更多优秀人才。
经过十多年的发展,中小学生学习编程的路径已逐渐清晰,总体遵循从简单到复杂的认知规律,即从图形化编程过渡到文本编程。图形化编程以 Scratch 为代表,文本编程则有 Python、C++ 等语言可供选择。只要学生跨过计算机打字这道坎,就能学习 Python 或 C++。那能不能不学图形化编程,直接学习 Python 或 C++ 呢?部分小学生可以做到,但这会带来问题。许多孩子在学习图形化编程时,已经掌握了如用试除法判断质数等算法,后续学习 Python 或 C++ 编写类似代码时就会轻松许多。也就是说,有图形化编程基础的孩子,学习后续内容会更顺利,没有基础的学生可能进度较慢,严重的甚至会因跟不上而导致学习失败。因此,这种情况下就需要分班教学,将基础薄弱的学生分在一起,放慢教学进度;基础好的学生则可以加快学习节奏。
还有一个关键问题:要不要让孩子参加信息学奥赛?是否要学习相关课程?这有点像 2008 年我国举办奥运会时,家长纠结孩子要不要参与。若想参加奥赛,那准备工作就得提前很久开始,这是显而易见的道理。目前信息学奥赛采用 C++ 作为考试语言,那么一开始就学习 C++ 是不是最佳选择呢?对于个别学生或许可行,但需要满足几个条件:一是孩子自身非常努力,基本每天坚持练习;二是能遇到优秀的教练指导;三是家庭全力支持,愿意投入大量时间和精力。然而,对于大多数普通孩子而言,一开始就学 C++ 并非良策,反而可能磨灭学习兴趣,起到反作用。
如此一来,问题的核心就变成了中小学生学习编程的目的究竟是什么。只有在学习过程中保持兴趣,拥有内在驱动力,孩子才能长久坚持,最终学有所成。学习编程的目的大致可分为两类:一类是非功利性学习,孩子学习编程压力较小,凭借兴趣探索,在学习过程中自然地吸收各种知识。优质的培训机构或老师会将数学、国学、地理、艺术等多学科知识融入教学中,了解 STEAM 教育理念(科学、技术、工程、艺术和数学的英文首字母缩写)的家长应该对此有所体会。其实在少儿编程学习中,写代码只是一小部分,其本质是朝着培养综合性科学素养的方向发展,现在已经有不少机构践行这一理念。编程本就是一门综合性学科,比如我在教学过程中,还会融入 Photoshop 等软件的教学内容,如今也会涉及人工智能素养培养,像大模型的使用,以及机器人创客编程、物联网编程启蒙甚至无人机编程等。优秀的老师会巧妙地融入更具挑战性的知识点,让孩子在不知不觉中掌握算法,而算法正是编程后期学习的重点。这就需要家长具备长远眼光,只要孩子智力正常,经过小学到初中阶段的系统学习,大多数都有能力参加信息学奥赛的 CSP-J/S 认证,这种学习方式压力较小,孩子学起来也更轻松。普通孩子坚持不懈地学习,也能取得不错的成绩。在萍乡,我所从事的教学工作,每年花费不超过 1 万元就能帮助孩子达成这个目标,不失为一个性价比高的选择。这种学习方式更注重逻辑思维锻炼,看重学习过程而非结果,通过编程学习掌握解决问题的思路和方法。到了大学,绝大多数专业都会开设编程课程,此时,从小学习编程的优势就会凸显出来。我曾在网上看到有文科生吐槽,因为小学阶段没学编程,高考选择文科专业想要避开编程,没想到在计算机广泛应用的今天,许多文科专业同样需要学习编程。比如新闻专业要学习数据分析,会计专业也要学习 C 语言和 Python 编程进行数据处理,这就如同一个从未接触过英语的中国人突然被置身英国,不得不学习英语时,也会觉得困难重重。而且,计算机专业与其他专业融合,培养复合型人才已成为大势所趋,从小将编程作为一门学科学习,打好基础,未来发展空间会更广阔。毕竟在信息学中,编程语法只是基础,算法才是核心,我们学习编程不一定局限于某种计算机语言,但如果目标是参加信息学奥赛,目前就必须学习 C++。
这就引出了中小学生学习编程的第二种目的 —— 以参加信息学奥赛为目标,这种规划功利性更强,对孩子和家长的要求也更高。信息学奥赛的学习内容是奥数的一部分,主要运用计算机解决数学等问题,其课程本质是将大学本科《数据结构与算法》的内容拆分,让中小学生逐步学习。能够学进去的孩子,都非常优秀,而且现在这类 “牛娃” 似乎越来越多。不过,今年 CCF(计算机学会)出台新规,规定只有满 12 周岁才能参加竞赛,这既是限制,也带来了新机遇。如果孩子从小学一年级开始学习,经过 6 年准备,普通孩子也有机会参加信息学奥赛。以北京爱思创培训机构为例,他们在培养信息学奥赛选手时,会将 Scratch 作为前置课程,Python 作为过渡,几乎没有让毫无基础的孩子直接学习 C++ 的情况。实践也证明,让一二年级的孩子直接学 C++ 很难成功。相较之下,更合理的安排是一二年级学 Scratch,三四年级学 Python,五六年级学 C++。当然,部分基础好、计算机打字熟练且数学成绩优异(最好提前学习相关知识)的三四年级小学生,也可以选择 Go C 作为过渡学习 C++。如果家长充分认识到信息学奥赛的价值和未来职业发展前景,孩子也愿意努力并接受高强度训练,这种学习规划可以尝试。但信息学并非校内主要课程,由于师资要求较高,学校难以给予足够重视,在萍乡,像这样认知清晰的家长少之又少,所以学习信息学奥赛的学生也不多。
最后总结一下,选择编程班时,如果目的是训练编程思维、提升综合素养,那么就不必过于看重短期结果,坚持学习,孩子最终同样能够参加考级或竞赛,甚至冲击信息学奥林匹克竞赛,有点 “但行好事,莫问前程” 的意味,放在这里就是 “坚持编程,莫问结果” 。另一种情况则适合那些从小展现出天赋,并且愿意吃苦坚持的孩子,他们可以一开始就以信息学奥赛为目标规划学习,先从图形化编程入手并练习打字,再逐步学习 C++ 编程,这就需要家长严格监督。不过这种方式压力较大,如果引导不当,可能适得其反。