儿童编程语言的进化史 (2)
除了基于模块的编程方法之外,还有一种新的语言采用了不同的方法来教孩子编程。在 2015 年,Wonder Workshop 设计了一种流式的编程语言,叫做 Wonder。Wonder 让学生将注意力放在多个功能单元之间的连接,通过这种方法来创造一个状态机。这个状态机在任意时刻都只能处于一个状态,如果它正在处理某个任务,给定一个输入就可以让它改变状态去做一些其它的事情。
除了使学生们摆脱了线性的编程范式,Wonder 还让他们能以一种简单的方法来对现实世界的问题建立模型。
学生们可以更容易地把一个问题分解成小的模块,然后用这些模块来解决一个复杂的问题。这样他们在解决一个复杂的问题的时候,就能把注意力放在在一个个子问题上。这个分解问题的过程,既是计算机科学的基础知识,也是 Wonder 语言的设计初衷。
在我们日常生活里也有很多机器人和状态机的例子,并且它们正在变得越来越普遍。自动售货机会在你投入正确的金额时吐出商品。自动驾驶汽车能够根据周围的障碍物决定如何前进。状态机还能对很多其他的问题进行建模,就像句法分析、人工智能、通信协议、游戏中的角色发展,甚至包括神经系统。
不论是历史中的可编程发明,还是近代的计算机编程语言发展,我们都能从中看出,编程技术的目的是驾驭机器、驾驭计算机,让它们更高效的解决问题。所以我们要让学生逐步接触、理解、体验编程的逻辑操作、算法、数据结构、工程设计等通用的工程方法与数学知识。这些核心知识是编程语言的灵魂。学生在需要使用新的编程语言时,这些核心知识能够帮助他们更快的融汇贯通。更重要的是,学生可以脱离编程语言,更纯粹的思考如何让计算机解决问题,也就是让学生具有“计算思维”
除掌握编程的核心知识,形成计算思维外,我们也要把学生的视野拓宽。我们在家庭、学校里看到的只有PC(个人计算机)和移动设备,我们还要让学生看到“大”如太湖之光,“小”如能在人体血管里工作的M3计算机,看到汽车、航空、航天、医疗、军事、经济、人工智能等各种领域的专用计算机,并且看到这些计算机都在解决什么问题。通过计算机与编程,我们让学生能够打开一个全新的视角,来观察、分析和思考社会的发展进步,以及同时面临的问题。