昨天上午,经朋友介绍,认识了在中国香港工作的 Mo 先生,在简短地早餐会之后,Mo x先生便开始介绍他们编程学习的平台、项目和课程。原本计划一个小时的会谈,被我们聊得拖延了两个半小时。
回到宾馆,回想我们国内的儿童编程教育,还真是蛮有意思的事情。
1984年2月16日,邓小平同志参观上海展览馆的十年科技成果展时,亲昵地用手摸了摸计算机小操作手李劲的头,说了这么一句话。“计算机普及要从娃娃抓起。”从那之后,计算机教育开始在中国的学校里慢慢地开始受到重视。
不过,在那个时候,计算机教育基本上就等于编程教育了。那个时候人们学计算机,就是学习编程语言,甚至大多数人没有机会摸到计算机,就已经开始学习计算机编程语言了。从 BASIC,到FORTRAIN, C,C++,这一路走来......
慢慢地,随着计算机图形界面的普及,尤其是可视化编程语言的兴起和流行,人们开始从枯燥地编写代码,转化成了可视化的、模块化的编程学习。程序教学开始逐渐地由纯粹代码的编程(Text-Based Programming)向可视化的模块化拖拽式编程(Drag and Drop Programming)转变。
由此,涌现出了一大批的可视化编程的工具,从当年的LOGO语言,到现在异常流行的Scratch,再到 Tinker,BYOB/Snap!、Pocket Code、Blockly、Hopscotch、GameSalad、Code.org、Touch Develop、MIT App Inventor、Alice、BeetleBlocks、Starlogo-TNG我们几乎可以列举出数百个可视化编程的应用。
于是,一个新的问题出现了。
当我们摆脱了纯粹代码编写的码农式编程学习,开始更多地依赖可视化的、模块化的、甚至傻瓜化的编程的时候,
一方面使得编程成了四岁以上的每一个孩子都可以学习的技能,在机器人、创客教育、STEAM的热潮下,使得编程教育再度流行起来了;
另一方面,这种发展态势在提升了编程学习的趣味性和低门槛的同时,是不是也使得我们的编程教育走向了一种更加表层、肤浅的道路?
这实在值得我们深思。
我的问题来了:
【1】、你最喜欢哪款可视化编程的工具?
【2】、国内著名的可视化编程平台有哪些?
【3】、可视化编程是编程的未来吗?为什么?
【4】、可视化对儿童程序教育非常有帮助,这毫无疑问,但是,会有哪些风险和可能的弊端?
期待您的参与、评论、和分享!
以下为本文正文。
焦教授在文章中提出了四个问题,我们有必要对此深究,在这里粗浅地谈谈自己的看法,请诸君批评指正。
1
领域内可视化编程工具确实非常多,计算机编程语言(程序设计语言)的发展经历了四个阶段,分别是机器语言、汇编语言、高级语言和非过程化语言。非过程语言也被称为第四代编程语言,即编码时只需说明“做什么”,而不需描述算法细节。可视化编程工具就是在非过程化语言的发展阶段产生的,简单来说指的是编程的过程中随时可以查看到代码的运行结果。可视化编程的这种“所见即所得”的特性,是程序设计语言发展的方向。具体到儿童编程领域,我们接触到的几乎所有的编程工具或系统都是可视化的,按照和机器交互方式的不同,可以分为图形化编程和命令式编程。图形化编程较为容易,只需拖动和组合相应功能的代码块(图形块)即能实现学生的创意,以Scratch、App Inventor、编程猫为代表;而命令式编程则需要输入编程代码,更为接近真实的编程学习,但借助良好的游戏化设计和辅助支持(如3D游戏闯关),使得小学生也可以学习,Swift Playgrounds和CodeCombat是其中典型的代表。这些工具的应用大大降低了编程学习的难度,让儿童对编程学习产生了浓厚兴趣,同时培养和训练了他们的逻辑和计算思维能力,使得在基础教育阶段开展编程教育成为可能。如果说最喜欢哪一款,我挺喜欢编程猫的,原因不表。喜欢是没有原因的(皮一下)。
2
根据我浅薄的阅历来看,国内应用较为广泛的儿童编程工具或系统有Scratch、Scratch Jr、App Inventor、micro: bit、编程猫、Arduino(mixly、S4A)、网易咔哒、Codecombat(极客战记)、Koov、Swift Playgrounds等等(未做任何排名)。
3
针对第三个问题,在我看来,初学者是希望利用可视化编程工具来学习编程的,这样的确会降低编程学习的难度,技术的发展就是为了提高效率,不是吗。当随着学习的深入,你的水平完全不需要可视化工具的辅助,那你就可以选择纯代码的编程了。我觉得这是多了一种选择,是好事。对儿童来说,对编程的学习从来都不是为了掌握编程本身,更多的是锻炼思维,所以可视化这么好的工具无疑是发展的方向。
4
第四个问题我确实没有很好的想法。儿童在采用可视化编程工具编程时,随着代码行的增多,代码的运行效果就会变得复杂,可视化编程工具出现之前,要验证这些代码的运行效果,必须经过繁杂的步骤才能看到结果,程序员会尽可能在编程过程中锻炼自己“用脑运行尽可能多的代码“的能力;但是当可视化编程工具出现后,我们可以随时查看代码的运行效果,会不会让我们变得“懒惰”和“不愿意思考及想象代码运行的结果”,对思维的训练反倒不是有益的影响,这确实是一个值得研究的话题啊。
不知道诸君对焦教授“关于儿童可视化编程四问”有什么看法,欢迎跟帖讨论。
领取专属 10元无门槛券
私享最新 技术干货