当我们说少儿编程的时候应该说什么?

网友投稿 2019-08-01 14:17

        最近几年在K12领域无论是官方、民间还是资本界都比较火爆的主题是少儿编程,而且已经火了有那么三年左右的时间了。如果我们去问一个小学生的家长少儿编程是不是应该学,得到的回答多半是肯定的。但如果我们再问少儿编程应该学什么,得到的回答绝对是不置可否。又继续问少儿编程应该怎么学的时候,我想不要说家长了,我们很多业内或者学校的老师甚至大佬都未必能够把这个问题讲明白。

        目前市面上挂着少儿编程名号的机构数不胜数,其中小码王和达内集团旗下的童程童美算是目前业内规模体量最大的两家,这两家都是线下模式运营的。其它在线的就不提了,私以为少儿编程想通过在线的方式去教好,然后盈利,目前来看应该是天方夜谭,当然也希望能够遭到同行的打脸,毕竟要是能够跑通线上的模式对于少儿编程整个市场的前景来讲是无比巨大的利好。产品上基本是Scratch、Python、信奥(C/C++),还有用appinverter的。那么为什么本段开头要说是“挂着少儿编程名号”呢?因为目前的情况来看因为家长们对于少儿编程四个字的理解上还存在较大的偏差,所以市面上那些做机器人、乐高和创客的都会以少儿编程来做宣传,也算是蹭一蹭热点吧,而且机器人编程等方向的人会认为少儿编程所需要学的东西的难度在机器人编程面前是比较小儿科的感觉。但事实上却不是,这里我们要搞明白的几个问题,第一是为什么要学少儿编程?第二是少儿编程学什么?第三是少儿编程怎么学?

       首先我们来回答第一个问题,为什么要学少儿编程?大部分时候我们能够获得答案应该是:“目前国家在大力倡导中小学的学生们学习编程,因为编程是计算机的语言,而未来世界甚至当今社会已经是完全依赖于计算机的世界了。所以像浙江省早在2014年就已经把编程纳入了高考,各个中小学也在学校里面快速兴起了编程学习的热潮,在可以预见的这两年内,编程很有可能从目前的社团兴趣网红登堂入室成为一门必修课。而我国在2018年发布的《新一代人工智能发展规划》更是提出了我们要完善人工智能教育体系,在中小学中设置人工智能相关课程,快速地推广编程教育。小朋友现在不学习编程很有可能就无法适应未来世界的生活了,就好像之前国际化浪潮中我们学习英语一样,现在信息化浪潮中编程是人工智能时代的语言。”。但真的是这样么?这些内容我们看起来是心潮澎湃热血沸腾,但这段话回答不了“为什么要学少儿编程?“这个问题,或者说仅仅是回答了一部分吧。我们从两个方面来看待这个问题,第一方面是政策鼓励,可以肯定在今后的学校里面,会编程和编程能力突出的学生会越来越受到重视,在小升初、初升高和高考进入大学乃至走进社会参加工作这些环节中也会越来越受到青睐,随着学校和教育主管部门对编程的愈加重视,编程类比赛自然会受到更多的关注,那么在此类竞赛中获奖的学生所能够享受到的各种优待也会越来越多,在杭州甚至有很多民办的中小学已经将编程列入了招生的一个重要考察项,以上这些都是符合国家导向同时也是符合家长的要求的,毕竟在整个教育领域,升学都是不变的主旋律,高考是唯一的指挥棒。第二个方面是逻辑思维锻炼,逻辑思维通俗点来讲是一个人看待事物、理解事物、与事物互动、创造和改变事物的方式方法,那为什么锻炼逻辑思维要通过学习编程来实现了,其它方式不是也可以吗?是的,在少儿编程兴起之前就有很多逻辑思维训练的课程了,针对各个年龄段的都有,但编程是最合适的,没有更合适的了。因为编程是计算机的语言,而计算机从诞生伊始就是最纯粹的逻辑体,计算机的思维就是逻辑思维,计算机的语言就是逻辑语言,也就是编程。现在也有将编程所能锻炼的思维称作计算思维的,表述上就显得更加直接了,可能也是出于逻辑思维并不能够直观地体现编程所能带来的思维变化吧。思维和语言的关系我们还可以从自然语言中看到一些明显的关联,例如我们经常说“老外”和我们的思路是有很大的不同的,体现在哪里呢?例如我们看到一个穿着红衣服的女孩子走过,会说:“那个穿红衣的女孩子。”而英语国家的人会说:“Thegirl in red.”,这其实就能体现思维上的差异了,而这种差异的体现是通过不同的语言来实现了。我们也很容易理解和发现有些母语是中文的人在国外时间长了,语言习惯上会发生很大的改变,特别是我们看到那些华裔明星接受采访时说的很多话我们能听懂但老是会觉得怪怪的,那是因为他们在用英语思维说中文,所以说语言是思维的载体。那么编程语言就是计算机思维的载体,想具有计算机思维,还有比学习它的语言更有效更直接的途径吗?

       然后是第二个问题,少儿编程学什么?前面我们有提到,目前市面上的少儿编程培训机构大部分都是教Scratch、Python、信奥(C/C++)、APPinventor,还有一些是乐高的WEDO和EV3等。在Scratch阶段基本上还是遵循着“创意编程”的主路线,因为公办的比赛例如“全国中小学生电脑制作大赛”就是这么设立参赛项目的,主要的作品还是集中在游戏、故事、创意动画等方面;Python阶段会基于Python的一些库例如matplotlib和pandas等做一些项目;信奥阶段则是在基础语法之后进入到漫漫的刷题之路。咋一看我们会觉得这个课程设置好像没有问题啊,从可视化的积木式编程到综合趣味、代码和实际应用的Python编程再到高度抽象讲究算法和数据结构解题的信息学奥赛,但细想之下总有一种缺了点什么的意思。到底缺了什么呢?我的理解是缺乏了连贯性和一致性,或者说学什么这个问题应该为什么学的延续,但目前市面上的课程设置是不具备这种延续的,更多地,我愿意将其归类为工具使用的学习。我们学会了Scratch这个工具,掌握的Python语言,刷遍了NOI的题库,但是我们的初衷是什么?我们经常说勿忘初心,我们的初心在这个过程中有没有被“忘记”?事实上是被忘记了。学习编程我们是为了更好的理解和掌握编程思维,而编程思维体现在哪里呢?藏在哪里吗?是的,编程思维藏在我们经常说的计算机的算法和数据结构中,算法和数据结构是计算机思维解决所有问题的精髓所在。例如一个简单的二分查找法,不管是用什么语言来实现,它的本质还是二分查找,而甚至在日常的生活或者工作中我们都可以有所应用,例如查找一段管道漏水的位置。编程语言是编程语言的载体,是学习编程思维的工具,就好像我们小时候用勺子吃饭,长大了用筷子吃饭,勺子和筷子就好像是Scratch和Python,不管是用谁,目的都是吃饭。而Scratch的诞生就好像小孩子辅助筷的发明一样,是希望在小朋友还没有足够的抽象能力去理解代码,和足够的计算机操作能力去输入代码的时候,能够帮助小孩子更好地理解程序,更方便的编写程序。我们所说的顺序结构、分支结构和循环结构都是可以渗透到Scratch课程的方方面面,我们信奥普及组里面简单的算法和数据结构都能够在Scratch里面来呈现给我们的学生,例如一个经典的冒泡排序法,我们用Scratch来教学的时候学生肯定是能够更好地理解和掌握的。所以,编程学什么这个问题关键在于思维、算法和数据结构,而不在于用什么工具或者语言来实现,甚至是伪代码或者流程图的形式都是非常好的。另外,当下诸多机构都有非常严重的超前意识,在二年级就迫不及待地让学生开始学习Python,窃以为是有点操之过急和揠苗助长了。

        接着是要回答的第三个问题,少儿编程怎么学?这其实是一个蛮难回答的问题,因为编程是一个短期效果并不明显的培训课程,不像学科类的或者艺术类的,中短期内是可以看到明显的学习效果的,编程的效果如果是体现在项目的实现上,那么很多时候老师带着学生走就没有太大的问题,但依然无法体现真实的效果;若是体现在思维习惯上,那更是难上加难。所以编程应该怎么学,或者换个方式说成是编程应该怎么教,真的是特别难回答,市面上并没有成熟的行之有效的学习方法可供参考,大部分机构甚至都没有效果评价体系,因为根本就不知道应该从什么角度以什么标准去评价,更多的机构只能是依靠竞赛和升学来做一面旗帜,大机构用获奖数量,小机构用获奖概率,似乎是真的没有更好的办法了。那么这个问题到底要怎么回答呢?我们从问题的本身来剖析一下,编程是一门操作加思维的课程,所以实践和思考相结合的学习模式肯定是没问题的,记得我们大学里有一本书叫《边干边学Linux内核指导》,边干边学四个字应该就是实践加思考的意思了,著名教育学家杜威也说要“做中学,学中做”,强调手脑结合的重要性和必要性。另外,少儿编程所面向的学生群体还有很强的特殊性,我们以小学一年级到小学六年级为例,大部分时候我们可以两年一个阶段来分为三个阶段,但更多的时候特别是三年级之前,我们甚至应该以半年为一个阶段,因为根据著名心理学家和儿童教育学家皮亚杰的认知发展观理论,小朋友的心智在这个阶段是出于高频的发育成熟阶段的,仅仅相差半年的小朋友之间的行动能力和思维能力就会有非常大的差异。我在现实授课中发现很多较低年龄段小朋友对于很多编程上的知识的理解和掌握更多是建立在“强记”的基础上,离真正的理解还是有很长的一段路要走的。综上,我们应该可以要求少儿编程大概应该怎么学了,也就是要注重具象化、差异性、趣味性、可操作性和简易的应用性。具象化主要是体现在尽可能地将所需要传授的知识以小朋友能够接受的形式展现出来,例如一个分支结构,我们可以带着小朋友举一些家里和学校里的例子,如果下雨就带伞,诸如此类的。也可以将小朋友代入到整个程序之后,用角色扮演的形式来加深印象和理解。同时还可以过渡性地加入半抽象流程图来做为辅助。差异性主要是为了考虑到不同学生之间的思考习惯、行动能力和学识水平还有性格上的差异,例如去年我们给学生布置练习项目的时候可以考虑到这些因素以及家庭环境等,来增加学生完成的动力和可能性。趣味性就比较好理解一点吧,但这对教师的控场和应变能力还是有较大的考验的,尽可能提前准备一些。可操作性和应用性主要还是体现在生活化和情境化上,更多是教学要素中“人、环境、课程“中较为重要的环境上,尽可能地将编程思维转化成生活化的情景帮助小朋友记忆和理解。我曾经总结过面对小朋友的培训所需要走的三步,第一步是让小朋友后能够听你的,也就是说小朋友的注意力要在我们的课堂和老师身上,通常小学生特别是低龄段的小学生45分钟的一堂课注意力能够集中的不会超过20分钟;第二步是让小朋友能够听懂你的话,即我们要用小朋友的语言跟他们交流,而不是使用大人的语言或者艰涩的专业术语;第三步才是我们要讲的内容,让小朋友能够听懂我们的课程内容。我们不需要让小朋友记住冒泡排序或者二分查找,我们需要的是给小朋友营造那么一个场景,尽可能是生活中出现的场景,将碰到的问题趣味化,再将整个解决问题的思路和过程具象化,最后以游戏和程序的形式展现出来,最后能够留下那么这么一个片段在小朋友脑海中,教育学家们称之为播下一颗思维的种子,那或许算作是成功的教学了。

        这些是我根据自己在少儿编程领域从业至今所发现的一些现象、碰到的一些问题和想到的一些想法,也特别希望少儿编程这个专业又细分的领域能够在政策强大助力、市场热度高涨和人才资金不断涌入的情况下尽快步入平稳向前的轨道。因为编程真的是一个非常非常好的逻辑思维教学工具,还是一个非常有意思又非常强大的思维展现平台,在锻炼小朋友逻辑思维的同时还能够给思维插上翅膀尽情飞翔,这么好的东西,怎能不爱?怎能不去好好地发展发展推广?!

--end--

声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com