搭建+动画+编程,完整的编程教育!

2020-08-12 17:24:25

次阅读


在帕拉卡(Paracraft)的3D世界里,孩子们可以做非常丰富的,他们感兴趣的事情。大的来说,主要是三类:3D场景搭建,3D动画电影,3D游戏编程。



当孩子有了很强的学习兴趣,一切学习都变得非常容易。


这是一个粗略的划分,实际上3D动画电影或者3D游戏编程里也需要场景搭建。


只是对于年龄很小的孩子,我们建议从场景搭建开始。


使用paracraft搭建的学校场景


场景搭建和动画电影看似与编程无关,实际上,以我们对编程的理解,它们和游戏编程一起构成了完整的编程教育。



普通人对编程的理解似乎就是逻辑思维,那种线性的或者说顺序的逻辑思维。其实并不是,编程的核心思维是交互的。



比如大量的指令如何搭建出一个相当复杂的可执行可交互的软件,其中的思维能力与场景搭建所需要运用的思维能力是完全一致的。



比如在生命空间里探索,感知,建模(空间建构),想象,拆解,汇总和表达的能力。




所以场景搭建,看似简单,正是对这些核心编程能力的启蒙和培养。




搭建,除了场景搭建,还有模型建模的搭建。这些都需要抓住场景或者模型的特征,去用3D的方式表达出来。





小学生使用Paracraft搭建的坦克模型




在3D表达之前,可能需要一个文字的表达,尤其是在团队协作的时候。




有了场景和角色模型,那就可以制作漂亮的动画电影。




动画电影是时间轴上的图像的帧组成的。




使用动画电影编辑器,可以简单的添加这些帧,包括位置,动作等等。




这些背后其实都是各种指令,只是它们以一定的时间顺序发生,并且没有与外界的交互或者角色间互相的交互。




但动画电影是简单的方式,可以让人物角色动起来。




在动画电影的制作中,故事的设计能力,剧本的写作表达,角色设计,交互设计等等,都是编程里进一步的在空间思维上的训练。




拥有以上的场景搭建,动画制作能力,再加上编程能力,就可以制作相当复杂有挑战性的游戏作品了。




在软件行业里,我们发现我们的程序员普遍缺乏几个方面的素质:




1、不会制作2D或者3D UI(用户交互界面),缺少审美能力。UI创作和设计能力是程序员的一个基本技能。普通的学校和机构学习一般不涉及图形或者3D设计。




Paracraft里的编程学习,大家可以看到,2D或者3D UI的设计能力,审美能力,是作为核心的能力来培养的。并且这个能力与编程本身的能力是一致的。




2、缺少产品设计能力,甚至不关心产品设计。但是在Paracraft的动画电影或者游戏设计中,学生都需要有很强的产品设计能力。




Paracraft的搭建 动画 编程的整体,也是在培养相关的产品思维能力,这些能力,也是与编程的核心能力一致的。




3、缺少写出漂亮代码的能力。




这里包括写相当复杂的软件时的那种讲故事的能力,复杂系统的搭建能力。



4、软件项目的迭代管理能力。




这本质上也是一个对空间感知和交互的能力。以上是行业里普遍存在的现象,也说明现在计算机/软件编程教育的严重不足。





小学生使用Paracraft创作的3D动画作品欣赏




Paul Graham在其著作《黑客与画家》里阐述了程序员的工匠属性,程序员就是要去创作完整的作品的。




Paracraft的编程教育,不管是哪个年龄的孩子,从一开始我们就要求能够创作完整的作品。




如果能力还不足以创作大的复杂的作品,在Paracraft里,也有很多小的作品可以去创作。




在创作作品中,需要的就是完整的编程能力,包括UI的设计能力和产品设计能力。Paracraft 3D世界里的创作,正好全方位的锻炼学生们与空间的交互能力和相关思维能力。




作为模仿人类世界的人工智能仿真项目,Paracraft给了人们创造无数平行世界的可能。




也正是在这样的虚拟世界的创造中,编程能力作为大脑的核心思维能力的本质被淋漓尽致的表现了出来。




让我们看到所有思维能力无不是空间思维能力,而编程或者说计算机科学是对这些空间以及空间交互的本质认识。




这正是Paracraft能够成为完整的编程教育的基础。




Bill Joy,软件编程界几乎公认的排名前列的高手,人称互联网之父,他在描述他第一次编程的体验的时候,他说正是软件编程那种“give ideas a concrete form”(给思想一个具体的形式)的美妙把他深深吸引了。




我在大一第一次认真的编程的时候(之前也接触过编程,但大学里正当思考自己人生方向在文理科之间挣扎的时候,编程似乎给了我答案),也是那种一见钟情的感觉,才发现这才是我一辈子想从事的工作。




看着头脑里的想法可以转换成代码并且能够在机器上跑,能有结果出来,不光是思想的表达,还有行动的力量,同时必须满足科学的严谨,实在是一种非常美妙的感觉。




这其实就是软件编程的核心本质,也是让无数的天才程序员们尽折腰的原因,让他们看到仅仅凭思想的力量,靠思想的构建,他们就可以改变世界。




编程给了他们不断提出新思想,实验新思想的能力。当我们要挖掘编程真正的涵义时,我们必须提到这点。




致力于编程教育并因而创造了小海龟(LOGO)编程语言的Seymour Papert(Scratch作者Mitch Resnick自述其在编程教育方面的思想师承Papert。)认为计算机或者软件编程的核心力量来自于两个方面。




其一是表达(representational capacity)世界的能力,我们也可以理解为建模的能力;




其二是即时改变这种表达的能力(responsiveness ),我们可以理解为改变模型并立即试错不断改正错误(debug),最终得到正确模型的能力。




Papert认为这是严肃的科学研究探索的过程,而儿童是天然拥有这种严肃研究的能力的,并且他们把这个过程当做玩的过程,就像那些顶尖的科学家一样。




Papert认为这就是编程的核心本质,而他认为学习的过程,也正是如此。




大家可以好好想一想,看看是不是这样?学习,是不是不断的提出可能的理解(抽象模型)再不断的获得反馈去改正或重建这个模型?




所以同今天的很多人认为编程教育就是单纯的学编程不同,Papert认为编程教育,实际承载的是教育本身,即学会这样的探索式思维方式和学会如何学习,当然同时也掌握进行这些思维和学习的数字化工具即编程本身。




具体的讲,即要让儿童们通过编程去丰富他们对模型的感知能力和各种表达能力,通过实验去验证和修改模型的能力,大型项目中的表达沟通与合作能力等等。




我们可以看到Alan Kay还有其他很多早期的计算机科学家或者编程高手们也都提出了类似的理解。




Paracraft正是这样的从启蒙到精深的培养青少年编程能力,探索思维能力和学习能力的完整的平台。




也正是我们常说的,学会编程,学会学习!




编程作为对空间的本质认识,是带有一定的抽象性的。这对于年龄比较小的孩子,是会比较困难的。




但是年龄比较小的孩子对方块的搭建非常感兴趣,他们可以从搭建开始培养丰富的对空间的感觉。





使用Paracraft创作的编程作品《勤劳的稻草人》



其实低年龄的孩子都很喜欢编故事,对颜色很敏感,这些都是人自然的在发展空间能力的过程。




这样到了大一些的年龄才慢慢开始发展抽象的对空间的认识。所以Paracraft的场景搭建或者模型搭建,是与这些较低年龄的孩子的年龄特征符合的。




包括这些孩子欣赏或者创造那些打动人的动画作品,都是对生命空间的感知能力的培养。




如果这一阶段没有去丰富的培养与空间的感知能力,以后要去发展对空间的抽象的认识,是会很困难的。这也是我们在软件行业经常碰到的困难。





使用Paracraft创作的3D动画作品《我们都是奇迹》欣赏




所以Paracraft的场景搭建和动画电影制作实际上是给这些孩子很好的空间感知或思维能力的启蒙和培养,并且Paracraft里丰富的创作过程以及作品,是非常肥沃的培养空间思维能力的土壤。




如何去表达,去建模,做对比,不断的改进和提高,不停的迭代,如何获得反馈,它们培养的是非常完整的空间思维能力。




从这里进入到抽象的编程层面,就能够自然的理解编程里的各种建模的方法,debug的方法,如何做实验,如何去迭代,如何做产品的设计等等。




正如Alan Kay所说,计算机或者软件的表达(representation)不光是在存储在计算机里的各种抽象层面的表达,也包括了2D的表达。




当然也包括了文字的表达和3D的表达(我们可以把文字的表达看作一维的表达)。




Alan Kay认为对一个程序员来说,会画画很重要,需要有2D表达的能力,因为一般的人是通过图形这种具体的形象来与模型进行交互的,然后这种交互导致存储在计算机里的抽象层面的模型表达的改变。




所以,我们认为2D,3D的表达能力都是作为一个优秀的程序员需要的能力。而模型的文字表达能力,在软件设计中是很重要的能力。




我们在Paracraft的编程教育里,其中重要的一个部分就是抽象建模的文字表达,而动画电影制作里的剧本写作,我们也是作为一个相关能力培养的。




在Paracraft里,就像我们对编程的理解一样,各种能力之间是交叉的互通的。




学生可以从任何他们感兴趣的地方进入,我们可以帮助他们逐步扩大他们的兴趣,做更大更挑战性的作品,扩张他们的兴趣和能力,逐步掌握完整的思维能力和相关技能。




软件是很大的,所以软件编程是可以完成这样的教育期待的。这也是诸多软件先驱们和教育先驱们对软件编程的教育抱以极大期望的原因。




而我们自信的认为,Paracraft是能很好的承载这个期望的平台。




Paracraft的编程,不仅是提供了丰富完整的编程启蒙教育,真正有潜质对编程有强烈兴趣的孩子也可以在Paracraft里持续成长成为专业的程序员。




这也是现在一般的编程教育都无法做到的。Paracraft能做到这点,简单的说,主要基于以下两点:




1、Paracraft软件包含了3D动画和游戏的所有知识模型,是工业级别的软件。只是它以方块的形式呈现,儿童们上手很容易,很轻松就可以拥有搭建复杂世界的能力。


2、Paracraft本身在架构设计上的开放透明性。


Paracraft本身是开源项目,源代码开放,任何有能力的开发者都可以在网上参与贡献代码。


Paracraft里的项目或者世界都是开放透明的,只要你知道项目的id,就可以进入该世界,并且可以进行编辑,查看其中的代码或者电影方块,探索是如何制作的。Paracraft至今已经积累了很多的优秀作品,包括很多专业级别的作品供大家学习。



正如乔布斯所说,每个人都应该学习编程,编程思维是一种核心思维,即使你不做程序员,你所学到的也是可以广泛运用于其他领域的思维能力。



学会编程,学会学习!




参考文献:


Tools For Thought, Chapter 11: The Birth of the Fantasy Amplifier by Alan Kay http://www.rheingold.com/texts/tft/11.html#Chap11

How by Alan Kay https://api.keepwork.com/ts-storage/siteFiles/15173/raw#Kay_How.pdf

Mindstorms: Children, computers, and powerful ideas by Seymour Papert https://www.academia.edu/1978195/Mindstorms_Children_computers_and_powerful_ideas