从幼儿园到小学毕业:孩子学编程的四阶段
孩子从什么时候开始可以学编程?幼儿园即可,在家玩中学。
孩子小学时应该学那种编程语言?Scratch,最合适的语言没有之一。
学会 Scratch 后就该学 Python 或 JavaScript 了吧?不,Scratch足够丰富强大,甚至连初中生都能从中受益良多。
可是 Scratch 看起来只是玩具,用四五年时间写写小游戏、做做动画,太浪费时间了?不,那只是因为人们不会教。
教孩子学编程,远不只是教他们学会用计算机的语言和机器交流。未来的世界不需要码农,需要的是具备良好信息素养、懂得计算思维、会通过自己的创造力和解决问题能力让计算机发挥更大作用的人。我接下来说的四个阶段,就是如何培养孩子这些能力的路径。
第一阶段:通过游戏感知程序逻辑,练就勇敢尝试的心态
孩子从幼儿园开始就能学编程。孩子幼儿园时应该在家学编程。
不知道有多少非理工科家长会对这两句话头疼:我自己都不懂,你要我在家教孩子编程?
但是,我可没让你教啊,你只要让孩子玩就行了。玩什么?lightbot 游戏:
看似简单,但基础的编程概念都包含在内了:顺序执行、循环、条件判断、函数调用甚至递归和重载……很多编程教育的商业机构宣称的“编程思维”,也不过就是这些。
通过运行程序,孩子们能随时查看结果与自己的预期是否一致,及时的反馈能极大的提升学习效果。测试-失败-调整-测试-失败-调整……我们把这样的过程称作调试(debug)。不断重复这样的过程,孩子自然就不怕犯错乐于尝试。
教得太多反而剥夺了孩子们试错的机会
有时第二阶段:照着Scratch自带教程玩,培养探索的习惯
https://resources.scratch.mit.edu/www/cards/zh-cn/ScratchCardsAll.pdf
比如星星闪烁三下好让玩家留意到的程序和效果是这样的:
往往在孩子的一个“咦,这是什么,我来试试看”的疑问背后,可以引发出一长串的问题:为什么会这样呢?和你的预期一致吗?如果换成那个又会是什么样的效果呢?这个功能可以用来做什么?Scratch是一个再安全不过的环境,最坏情况无非就是把程序重启重新开始,美妙的是每拼接一块积木都可以点击运行马上看到效果,这反馈-修正的过程是非常迅速的,所以孩子能很顺畅的自行探索。
但千万要注意:很多商业机构为了能快速扩张,会把课程设置成标准化的。这类像填空、选择题一样的标准练习可以教会孩子知识,但教不了探索的习惯。
举个例子:国内某做得非常不错的线上编程课的作业:让角色从A走到B,说一句“哎呀”,然后倒下。请完成这一段动画。
作为对比,大家可以看一下哈佛大学的Scratch创意计算教材第一单元的作业:给定10种积木块,请以任意方式使用它们,并把你的成果展示给大家看。
我们可以到 https://scratch.mit.edu/studios/475480/ 欣赏下孩子们的作品,五花八门什么都有,孩子们真的把这些代码块用活了:
探索的习惯,是这个阶段的孩子从 Scratch 中能收获到的最宝贵的东西。
第四阶段:用计算思维实现自己的创意
计算思维是一种解决问题的方式,它有四个重要组成部分:首先是定义和拆解问题,其次是识别出各子问题的模式,然后是抽象化,最后是用算法来实现。
因为对大多数孩子来说,敲打键盘输入一串串字母的过程,实在是太缓慢也太枯燥了,而且多数语言还没有像 Scratch 那么恰到好处的有舞台和角色的概念,可以方便的做出有良好视觉和交互效果的程序。
活生生的扼杀了 97 个孩子学编程的兴趣啊!我宁可这些孩子别去学,这样至少还为他们今后带着兴趣愉悦学编程保留着可能。
这就像学会英语的 Hello 后马上去学拉丁语的 Salve,看似高级,其实只是低水平重复。真正有价值的是用英语说出完整的句子、进而写出漂亮的文章,孩子们真正应该学的是如何用语言表达出自己的思想。
在我看来,第三阶段:读码探秘,通过阅读和模仿积累自己的模式库
中间的第三阶段,最适合孩子们做的,就是去阅读、理解他人的代码。先学一些小小的技巧,再理解作者的思路、代码的组织,最后掌握代码中的套路……就这样把别处的精华一点点积累到自己的脑海中,形成模式库,看得多了熟悉了,以后再需要的时候也就能很容易的用起来。
我会选择一些 Scratch 官网上的精彩作品,改写或重写,让代码易于理解;再写点解析文章,带大家理解代码中的小技巧和大套路。
欢迎关注读码探秘专栏。期待你的鼓励和交流。