STEM是科学(Science),技术(Technology),工程(Engineering),数学(Mathematics)四门学科英文首字母的缩写,STEM教育简单来说就是在通过在解决真实的工程问题中学习和掌握相关能力。在高度信息化的AI时代,编程语言更是成了STEM教育中最为核心的一环,那么目前最好的STEM编程语言有哪些呢?
作为一个有着20多年编程经验的老码农,也因为要给家里小朋友编程启蒙开始关注这个话题。我觉得好的STEM编程语言需要满足几个基本条件:首先是简单有趣让小朋友可以快速上手玩起来;其次是在语言启蒙后可以用于解决复杂问题;第三是要有本土友好的社区和支持。当然如果觉得自己有能力解决其中问题的家长可以根据自己的理解选择。我们先看看有哪些面相小朋友的语言。
1. 谷歌:Blockly积木编程
Blockly是谷歌赞助研究的基于可视化积木的编程基础组件,正是它打开了近10多年儿童编程单热潮。目前市面上全部分的积木编程启蒙语言都是基于谷歌的Blockly构建,比如大家熟知的Scratch就是拿Blocky再来组装为产品售卖。
https://developers.google.cn/blockly
Blockly的研究确实是开启了可视化编程领域的新探索。但作为STEM编程语言也有其限制,可视化编程在描述复杂问题时面临调整,或者说拿Blockly语言来解决复杂的问题理论上可行但实际操作太难。最终的结果就是启蒙后就要抛弃Blockly的知识了。
2. 微软:MakeCode
Microsoft MakeCode 是一个免费开源平台,旨在打造有吸引力的计算机科学学习体验,为实际编程奠定基础。作为平台,MakeCode提供了将编程语言和真实的电子积木结合的能力。比如通过程序控制虚拟开发板的LED灯:
作为平台MakeCode提供了Blockly、静态TypeScript、静态Python等多种编程语言(https://makecode.com/language)。但有时候选择太多并非是好事情,特别是这些语言可能让家长更难选择。
3. 苹果:Swift Playground
苹果公司从2012年发布了自己的Swift编程语言,目前iPhone和iPad上新的App大部分是Swift开发,因此这其实是一个绝对的工业级语言。后来苹果公司针对iPad出品了Swift playground应用,用于辅助青少年、儿童编程启蒙,同时也可以开发真实的App。
从这里可以看出,Swift playground不仅仅是针对儿童,还包括了青少年甚至是成人。Swift playground是一个非常出色的启蒙编程应用,但是目前甚至未来它只能支持苹果的平台。作为全场景的工业语言,Swift语言有一定的复杂度,如果有一定的编程基础可以体验下。
4. 社区:Processing & JavaScript & Arduino
Processing主要是一种面相创意编程的理念,最初是以Python语言给出示例。但是最流行的其实是 JavaScript 和 Arduino 这些不语言和平台的实现。其中JavaScript的实现是p5.js,提供了在浏览器画画的编程体验。
p5js是面相设计背景的爱好者,主要是在画布上交互式画画和创作。而Arduino则是针对电子积木的版本:
通过类似的编程结构,通过程序控制LED闪烁或LCD显示字母。总体而言,Processing理念结合不同语言的思路是可以借鉴吃。特别是p5js是一个非常优秀的作品,其背后的javascript目前是前端理由最流行语言,特别适合于启蒙。
5. 社区:Processing & 凹语言
凹语言(凹读音wa第一声,主页 https://wa-lang.org/ )是国内爱好者设计的面相WebAssembly设计的通用编程语言。据说凹语言发起人也是因为自己面临STEM编程教育的问题,所以语言设计时就考虑了内置对儿童编程的支持。凹语言目前提供了p5js风格但更为静态化的友好界面。
虽然是新的编程语言,但是凹语言的表达力也很强。开发团队提供了一个FC红白机模拟器实现:
凹语言是一个非常有潜力的STEM语言。
6. 总结
STEM只是一种理念,适合的编程语言不止一个。其中背靠JavaScript的p5js、向苹果生态的Swift Playground、和国产的凹语言都是非常不错的候选。也欢迎大家提供更多的参考。