Notifications
Article
也来说说少儿编程
Updated 3 months ago
670
1
今天我也来说说少儿编程。
上周支付宝云栖大会,来自上海龙华小学的万海妍小姑娘的出境,让大家觉得眼前一亮:
支付宝圈出的照片里,万海妍小姑娘手里拿着的是她参加的少儿编程培训企业编程猫的玩偶。
还在感慨本姑娘的童年喵喵喵呢,就在朋友圈上转的微博信息看到了如下火药味实足的批判。
陈斌大叔作为微博上活跃的少儿和女性编程倡导者、教育者,在文章表述里出现了很多常识性错误。这起口水战是不是商业纠纷导致的,我无权揣测,但作为一个本公司少儿编程产品的宣传大使和教育学院毕业专门研习过Scratch相关编程与教育理念的我,感觉有必要把一些基本概念进行梳理,也顺带给本公司产品做个小小的推广。

Scratch是国际通用的儿童编程语言吗?

就在半个月前,美国驻华大使馆的微博账号上曾经发出了这样一条有关少儿编程与游戏的消息 :
美国大使馆推荐的两个学习编程的网站中,有一个叫做code.org。
我们来看看除了美国大使馆,还有谁在支持这个网站:
https://videos.code.org/social/what-most-schools-dont-teach.mp4
那么,这个网站是怎么进行编程教学的呢?
我们选择简体中文,进入学习,我最喜欢8-12岁的高年级小学生课程啦,让我们选择课程2,难度,直接跳到10吧。
这是出现的界面:
哎?这个肯定不是Scratch,只有前进、循环、转向和注释;条件语句、变量、其他动作、函数什么都没有啊!!!
比尔盖茨大叔,扎克伯格大哥,你们是不是在忽悠全世界的小朋友们呢?
难道这又是共济会的阴谋?
不管他,我玩一下先。其实这个游戏挺难的,要求只能用到4块积木就让僵尸吃到向日葵,我也是试了好几次才完成任务的:
从Gif动画中可以看到,这个简单的编程小游戏,借用了植物大战僵尸的角色,用循环和2个动作完成了迷宫探索。最后结束的时候,还可以清晰的看到模块化程序背后真实的JavaScript语言。
对的,这个模块背后的是JavaScript,并不是C,也不是据说列入高考(其实是列入了高中素质教育课程中信息技术课程的考核)的Python。
这个使用JavaScript的平台,并不是什么无名的山寨公司开发的,而是来源于大名鼎鼎的谷歌公司的开源教育项目Blockly:
https://developers.google.cn/blockly/ (注意网址中不是.com而是.cn)
根据开发文档,所有个人和企业都可以借此开发出适用于自己产品的可视化模块编程工具。
Code.org正是这样的一个教学网站,使用Blockly技术,为每一节课专门开发出适用每个科目教学内容的编程模块(不是什么通用模块),强化教学效果。目前看,美国政府,比尔盖茨和扎克伯格都对这种教学持肯定态度。
当然,Code.org是免费的,毕竟有盖茨基金和扎克伯格的基金支持,但是使用他们的教学内容进行商业讲课,还是要收取费用的。课程转化为中文,也肯定要产生费用。如果按照中国文化和孩子们的习惯设计专门的课程,并且经常推陈出新,那么在没有世界科技巨头创始人的基金会支持下,向家长收取一定费用,绝对不能说是不合理的。
根据谷歌Blockly网站的描述,Scratch和Blockly已经开始合作开发下一代图形编程工具Scratch Blocks,并且强调了新产品是基于谷歌的技术和Scratch团队为年轻人设计交互界面的经验的结合。
如果我们点开Scratch在github上的核心仓库界面,就会发现,Scratch Block已经都是基于JavaScript的了。
那么是不是像陈老师说的一样,因为用的是JavaScript,所以连Scratch也不能学了呢?
答案当然是否定的。
谷歌的Blockly目前不仅支持JavaScript,其实也支持Python(非常好的消息!)。
这可能是目前风靡全球的少儿硬件编程工具——BBC基金会支持的Microbit同时支持Blockly和Python的主要原因。
谷歌的Blockly和Scratch都是可视化编程的表现形式。
编程,其实就是把我们人类的逻辑语言转换成计算机能读懂的形式。
从纸带上穿孔来编程到需要考虑每一步地址的汇编语言编程,再到经典的科学家工程师常用高级语言Fortran,越来越高级,编程越来越轻松。
最早的计算机纸带编程:
今天的编程语言,比如我们Unity使用的C#,高中开始教授的Python还有Blockly的基础JavaScript都已经采用了近似于英语的表达形式。
比如下面的这段Unity C#代码:
void OnCollisionEnter(otherObj: Collision) { if (otherObj.tag == "Arrow") { ApplyDamage(10); } }
我们可以看到C#条件判断语句
otherObj.tag=='Arrow', 几乎可以直接读成If Other Object 's tag is equal to Arrow!
这样的语法,对于一个英文为母语的小朋友来说,学习编程的难度大大降低。
但是,我们也在这段代码里看到了void,看到了{ }这样的计算机语言里特有的语法标识。这些其实对于我们实现让计算机执行任务来说,都不算直接相关的,却是很容易出错的地方,据说很多程序员的头发就是为了这些地方出错而随风逝去的。
(当然,这也导致IDE编程开发工具的出现。我们Unity最新版本就回归到了Visual Studio Code来辅助程序员们编程。)
完全去掉英语和这些计算机语言中特有符号在短期内不太现实,在实际编写计算机程序时,甚至可能还是低效的(人类语言中也有这种问题,比如英语如果强行将发音和拼写统一,英语实际表意的效率是会降低的)。
于是,在计算机启蒙教育甚至普及教育中,使用一种和母语无关,但是可以简单实现人类语言逻辑与计算机语言逻辑转换的工具就有非常积极意义了。
可视化编程语言Visual Programing Language就是这样的工具,Blockly和Scratch都属于可视化编程语言。
学习可视化编程语言有用吗?
当然有用!可视化编程,是帮助孩子和非职业用户专注在实现逻辑功能的任务本身,掌握编程背后的核心理念,这是具有普适意义的。
比如可以用来进行硬件编程。
刚才展示了Microbit,使用Microbit可以实现对硬件的控制,比如控制加速度计,LED,地磁感应器和按钮控制,在少儿阶段就熟悉传感器,硬件控制的逻辑。
比如可以进行3D建模。
Autodesk公司旗下的TinkerCAD(www.tinkerCAD.com)使用Blockly技术创建的Codeblocks,通过可视化编程的方式进行3D建模,建模的结果可以用3D打印机直接打出来,或者导出到我们Unity中进行下一步开发:
比如可以使用Unity少儿编程工具开发3D游戏,再生成可以在手机上, 平板电脑上以及VR头盔上使用的VR/AR应用。
Unity已经接近推出少儿编程版,我们今年暑假已经举办了2场测试教学活动,在接下来的学年里,还将在全国多个地点举办推广教学活动,欢迎家长们,合作伙伴们多多关注!
最后总结一下
Scratch不是国际通用的少儿编程语言!
您带孩子学习的不是具体的Scratch或者Blockly,而是利用可视化编程工具学习计算机编程的核心逻辑!
学习可视化编程的用处非常广阔,可以轻松的完成3D建模,可以制作自己的物联网应用,更可以通过Unity创建未来感实足的VR/AR应用!
Learning is Hard Fun. Let's Have Fun!

Tags:
Zixi
Unity China - Marketer
9
Comments
周天影
2 months ago
麻烦问下少儿编程版本的unity下载可以参加测试么?
0