Paracraft,编程教育的3.0

关键词:

Paracraft,编程教育,青少年编程教育,Logo小海龟编程语言,Scratch,终身幼儿园,Alan Kay,皮亚杰,建构主义教育,克里斯多夫亚历山大,生命中心,探索式学习,抽象建模,复杂系统,空间感知,空间思维,理解,创造,艺术与科技的交融,生命教育,生命发现,生命表达,走向未来的人工智能

简介

本文介绍编程教育的历史发展脉络,计算机软件先驱们对编程和编程教育的本质的思考,介绍Paracraft帕拉卡作为编程教育3.0的平台给编程教育带来的革命性改变,以及编程教育对教育的普遍意义,中国编程教育的现状和我们希望做出的改变。


注:本文行文高度浓缩,信息量很大,其中很多地方,一段话其实就是一篇文章。阅读时建议放慢速度,仔细体会前后句之间的逻辑。

编程教育

LOGO(小海龟)编程语言是编程教育的1.0,Seymour Papert发明的LOGO语言,承载了计算机先驱们关于编程教育的理念和期望。

图:Seymour Papert与LOGO语言

Scratch是编程教育的2.0,作为Seymour Papert的学生和思想的继承者,Mitch Resnick创造的Scratch以图形化编程的方式让编程对儿童更形象有趣,其提出的终身幼儿园让计算机先驱们关于编程教育的理念更容易为大众所理解。


图:Scratch创始人Mitch Resnick

Paracraft则是编程教育的3.0。Paracraft的3D动画编程通过空间的搭建和丰富好玩的作品的创造,让青少年们真正接触到编程的核心思维,真正做到了丰富的玩,丰富的学,学会高效的思考,高效的学习。

编程教育的意义:学会编程,学会学习!

从1.0到3.0,其一以贯之的核心思想都是“学会编程,学会学习!”。这里包含了两个层面的理解:
1. 软件编程是思想的工具,是通过编程去操作个人对世界的感知。
1. 编程与学习有高度一致性。

软件的先驱,Small Talk的作者Alan Kay认为编程是去操作个人对世界的感知。注意,这里Alan用了感知这个词,而不是思想。用感知这个词是非常准确的,说明Alan是把编程看作是根本的思考,而不是一般的思考。在编程里,基于对世界的感知而形成的抽象模型是思考的基础。


图:Small Talk作者,软件先驱Alan Kay

小海龟(LOGO)编程语言的作者Seymour Papert,与Alan Kay有很多的合作,也有着非常类似的理解。他认为计算机或者软件编程的核心力量来自于两个方面,其一是表达(representational capacity)世界的能力(在Paracraft教育里,我们把这个能力理解为建模的能力),其二是即时改变这种表达的能力(responsiveness )(在Paracraft教育里,我们理解为验证模型,获得反馈,并改变模型的能力,也就是debug的过程)。

由此,我们看到编程的的两个特征,一是编程一定是基于理解的,再就是编程一定是导向创造的

基于理解,是因为编程首先的就是要对某个领域进行抽象建模。抽象模型代表了我们对那个领域的理解。并且编程提供了做实验来验证这个理解或者说抽象模型的方式,可以快速获得反馈,形成更好的理解,进行改进。

另外,软件总是在创造的。软件创造的本质是对每一个新的领域进行数字化。数字化以后,就能够突破自然的物理局限,比如时空的局限,造成连接。所以新的软件总是带来根本的突破性的创新,让整个行业突然发生巨变。这就是为什么技术能够改变世界推动历史进步的背后的原因。比如我们看到的软件对商业的改变,对新闻的改变等等。这就是数字化进程。所以,我们看到今天软件无处不在,并且以更快的速度渗透到我们生活的方方面面,其实这背后在进行的就是数字化过程,其核心,这里再重复一遍,就是对更多的领域进行数字化建模,变成数字化的软件,人们可以通过软件去操作这些数字化模型,从而实现了人与人之间基于这些模型的连接与交互。

比如现在我们大家都熟悉的电商网站,各种商品被数字化,并且按照不同的类别展示在网站上,每个商品都有可以详细查看的细节,包括图片。还有其他客户的点评也被数字化并展示在相关商品下面。商家也被数字化,可以查看商家的其他商品,向商家咨询。自己购买下单的过程,被数字化成了订单,商家与买家通过订单进行各种交互,如退换货退款等等。买家下单后库存数减少。商家可以进货增加更多的商品。买家还可以查看自己所有的历史订单。这些是大家现在都已经很熟悉的电商网站。我们看到电商软件需要对商品买卖做数字化,这个数字化就是要对商品买卖有好的理解并且用模型表达出来,比如商家模型,买家模型,商品模型(如sku,名字,描述,库存等),订单模型等等。通过这些模型连接到各方的人,通过这些模型进行交互。

不光这些我们平常生活中比较熟悉的具体的实体可以被抽象建模,就是抽象的事物也可以被建模。比如电商订单里商家与买家间的交互,其中的退换货退款的申请和处理是相当复杂的过程。单看这些行为的结果,不过是改变订单的状态,也就是说改变订单这个抽象模型里的相关数值。一般来说对模型的值的改变,程序员都是直接封装成指令,但是因为这些交互非常复杂,并且这些交互的方式可能因为业务的更改而经常更改,由程序员直接写在代码里是很容易出错的,也不方便更新。面对这样的复杂性,虽然是抽象的对订单的交互行为,也可以进行抽象建模,用模型来规范和简化操作。

所以可以看到对于简单的系统,我们可以直接的用一些指令的顺序执行去完成,不太需要额外的抽象模型。但是对于复杂的系统,我们往往需要设计更多的抽象模型,这些抽象模型就成为新的生命中心,之前看似很复杂甚至杂乱无章的交互可以围绕这些生命中心来进行。因为这些生命中心的出现,如果用信息系统里熵的概念,可以说复杂的无序的系统变得更有序,实现了熵减,但我们更倾向于使用生命这个词,因为这并不是简单的一般人认为的“顺序”的有序。

在这里我们也可以看到面向复杂的系统,抽象模型是很好的处理复杂系统的方式。其实我们面对很多貌似复杂的问题时,空间思维,或者更核心的,空间感知,才是主要的我们解决问题的方法。所谓的逻辑思维只是空间感知后附带的部分,就好像编程里抽象模型建好后的各个指令(函数)内部的顺序逻辑一样。

软件编程里的KISS(Keep It Simple, Stupid!)原则,可以在这个基础上去理解。即当系统比较简单的时候,没有必要去额外的设计什么抽象模型,那会让软件没有必要的复杂。因为系统很简单,即使没有抽象模型作为交互的中心,人脑也可以直接快速的理解整个系统。或者有更好的简单的模型的时候,不要使用复杂的模型。

所以,可以看到,编程正是一种面向复杂系统非常高效的思维方式,这个思维方式是以抽象建模为核心的,也就是以空间感知能力为核心的。而人类对周边世界的“理解”,其实也就是抽象建模的过程。大脑以这些抽象模型为中心,得以进行高效的并行运算,做到现在最强大的计算机都无法做到的面对复杂系统的处理能力。所以,可以说,编程,和大脑的根本性思维一样,是和空间的交互。

这种以空间感知和抽象建模为核心的思维方式,是我们处理复杂系统的一切思维方式的基础,比如我们常说的复杂系统的诊断能力(debug,医生诊断疾病等),解决问题能力,独立思考能力,拆解与综合能力等等。

而通过这些抽象建模进行数字化,比如电商,突破了时空的物理局限,对购物这个领域带来了根本性的变革。而数字化的进程,就是不断的对人类社会的各个领域重复这个过程。这正是今天软件变得愈发的无处不在影响到我们生活的方方面面背后的原因。所以,也可以说,软件编程是在帮助我们更深入本质的理解这些不同的领域。

编程的这两个特征,理解与创造,正是学习的两大特征

学习正是要去理解周边的世界,其实也是一个抽象建模的过程,一个创造知识的过程,形成的抽象模型正是我们一般说的知识。而这个抽象模型是否正确,又需要不断的通过实践来检验和修正。所以高效的学习,正是大胆的提出对某个领域的理解的抽象模型,然后快速的去获得反馈快速的迭代改进。这个正是软件编程的过程!学习,也是与空间的交互。

这些软件先驱们对软件编程的本质理解的非常清楚,所以对编程教育具有的巨大的教育意义抱有极大的期望,他们认识到学习编程,是学习一种很核心的非常高效的思维方式,同时也是在学习如何高效的学习。这就是这些软件先驱们还有以皮亚杰为代表的的建构主义教育家们理解的编程教育的意义。


图:建构主义教育家皮亚杰

孩子们天生就非常擅长这样的通过实验去探索了解世界的过程。 皮亚杰在观察儿童们的学习几十年后,得出这样的结论。小海龟(LOGO)编程语言的作者Seymour Papert也认为孩子是天然的拥有这样的严肃的通过实验进行科学研究的能力的,就像那些顶尖的科学家一样,这个能力在大人看来是“玩耍”的过程。我相信你如果去仔细观察孩子们怎么学习的,或者是能回忆起自己年纪非常小的时候是怎么学习的,能有同样的结论。玩,从本质上看,往往是基于对空间的兴趣,是对空间的探索。在空间的探索中,孩子们构建对于周边世界的认识,并不断的通过“玩耍”这种实验的方式去验证和改进自己的认识。

确实在我们观察儿童们学习Paracraft的过程中,我们发现年纪越小的孩子越会做实验,去尝试某种方块的各种用法,搞清楚其所有属性。而大一些的孩子则习惯了问老师。更大一些的孩子不光是习惯了问老师,而且期待老师给直接的答案。当老师引导他们去自己寻找答案时,这些孩子还会有一些不高兴。年纪更大的成人则连问题都没有,他们只是期待老师上课,或者等着老师上完课后布置作业。

所以Mitch Resnick提出的终身幼儿园的理念,认为学校应该像幼儿园一样,孩子们都在搭建东西,创造东西,都在玩。我们则认为玩地比幼儿园更好玩。Paracraft是要建立玩地而不是幼儿园,让孩子真正的充分的玩起来。

编程教育1.0的诞生:LOGO小海龟编程

这些软件编程的先驱和教育家们对软件编程的理解,促成了Seymour Papert发明LOGO编程语言。所以我们可以认为LOGO是编程教育的1.0.

这是基于这些思想的对编程教育的第一次尝试,在那个时代,是巨大的进步,影响了很多的今天的优秀的程序员。

我在美国读书研究生院里做互联网教育研究时的一位同事,一家7个程序员,包括他们的父母和他们5兄弟。他听说我小时候学过LOGO编程,立即很兴奋,问我有什么体验。可惜我说不出来很多。只有第一印象,觉得这个学编程挺有意思的,有一点神奇,也能够感受到LOGO编程传递出来的那种数学的“力量”。但是,给我们上课的老师,按照上课的方式来教我们,而不是Papert所设想的让小孩自己去探索去玩的学习,所以并没有更多的深入,有更多的体验。只是感觉到新鲜有趣以后就戛然而止了。记得那个老师后面就跟我们讲些计算机科学的概念,什么变量,什么不同数据类型之类的,感觉就变得枯燥起来。那个老师也没有讲多少,简单的让我们能编几个计算类的小程序就完了,让我感觉自己的逻辑思维还不错,搞这个东西没什么难度,如此而已。是不是和今天的很多编程教育很像?

如果这位老师知道我们这些小孩是如何学打乒乓球,滑旱冰,游泳的,估计他就不会那样教了。我们就是一大群小孩好长时间大家就玩那个东西,乒乓球或者滑旱冰,都能深入进去,都能有相当丰富的体验。

所以虽然有LOGO这样的饱含了软件先驱和教育家们的理念创造的编程语言, 也能够引起孩子们刚上手时那种兴奋的感觉,但在这样的教学方式下,并没有起到软件先驱和教育家们所设想的教育的效果。这是不是很像今天的很多编程教育?那些拿着国外的Scratch,脱离Scratch的作者的教育理念,用上课,作业,考试来教编程的,能够写一点简单的代码就仿佛学好了编程一样,其实都脱离了Scratch背后的教育理念和相应的学习方式。我知道的不少小孩上这样的课学习编程后反而对编程产生了极度的排斥心理。

所以我们觉得仅仅是工具不够,还必须有配套的教育方式或者说学习方式

升级,2.0, Scratch

随着软件的愈发普及,师承自Seymour Papert的Mitch Resnick创造了Scratch。Scratch的主要贡献其一是让对儿童可能有一定难度的写代码的过程变成了更直观的指令搭建的过程,其二是青少年们可以通过编程去控制2D的动画世界,可以去创作很多孩子们喜欢的故事或者游戏。其三是Scratch的官方网站让青少年们可以在上面发布他们的作品,成为青少年分享交流作品的平台。Scratch倡导的终身幼儿园的理念也是对Seymour Papert, Alan Kay和皮亚杰的思想的一次较好的表达。

但是Scratch还远远没有达到软件先驱们对编程教育的构想和期望。

横空出世的Paracraft,编程教育的3.0

真正完美体现软件先驱和建构主义教育家的理念,能够承载他们对编程教育的巨大期望,让青少年通过学习编程,学会高效思考高效学习的,是Paracraft。我们认为这是编程教育的3.0时代。

首先,虽然软件的先驱们能够认识到编程是一种非常高效的思维方式和学习方式,但是他们还没能做到系统的理解与表述。本文前面大家看到的关于编程本质的表述,是Paracraft才做到的清晰的系统的表述。限于篇幅,我们在本文里也只能介绍性的讲一下。我们还有其他的更多的文章,可以让你做更全面系统深入的理解。

其次,Paracraft的3D世界和其中的作品创作,才是承载这些理念的最好的载体。相信Seymour Papert和Mitch Resnick看到Paracraft,也会大拍脑门:”这就是我想要的!” 下面我们分条详述为什么。

真正的让孩子们玩起来

对比于LOGO和Scratch,Paracraft真正的让孩子们玩起来了。孩子们面对Paracraft时的兴奋度,是LOGO和Scratch都远远无法比拟的。3岁以上的孩子就会对Paracraft非常兴奋,因为Paracraft让孩子们通过简单的方块的搭建,就可以创造出相当复杂的世界。这对于孩子有着无穷的魅力。熟悉儿童心理学的都知道,儿童面对大人的世界是感觉自己很渺小的,感觉自己的力量很小,世界太大。但是Paracraft给了他们搭建的力量,可以搭建出宏伟复杂的世界。我们都知道儿童是非常喜欢搭建,喜欢创作故事的。 Paracraft正是给了他们这样一个工具和舞台。虽然Scratch倡导终身幼儿园,但Paracraft才真正给了孩子们好玩的东西。


图:一个9岁孩子搭建的跑酷游戏

正是因为Paracraft给了孩子们真正好玩的东西,让孩子们可以丰富的玩,丰富的创造,学习在Paracraft里才回归到其最自然的状态,诸位软件先驱们和建构主义教育家们关于孩子们的玩其实是严肃的科学研究的理念才得到了充分的展现。


图:让孩子玩起来

只有让孩子们充分的玩起来了,孩子们与生俱来的那种核心的学习能力才能不断得到增强。并且编程,如前所述,其作为高效思考和高效学习方式的本质,在自然的玩的过程中,孩子们是能够有最充分的体验的,因为这些都是与空间的交互。

而传统的线性的上课学习的方式,其实是有悖于人类学习的特点的,也是与玩冲突的,和软件编程的基于空间的交互方式也是冲突的。所以儿童们学习编程最好的方式,应该就是玩。让他们玩起来!


图:让孩子玩起来

真实的工具,而不仅仅是玩具


图:工匠精神,最好的工具

软件先驱Alan Kay认为,孩子们用以学习的媒介,可以是真实的工具,而不仅仅是玩具。LOGO和Scratch基本上停留在玩具的阶段,完全无法用作现实世界的工具。Paracraft,不仅仅是比LOGO和Scratch更好玩,同时也是工业级别的创作工具,可以创造相当复杂和有挑战性的作品。Scratch作品,无法做到Paracraft的作品那样触动人心的程度。


图:可以创作真实作品的工具

所以,可以认为Paracraft是一个真实的环境,儿童们在里面创作真实的作品。真实,安全,好玩,易学,Paracraft是很理想的儿童教育的平台。


图:可以创作真实作品的工具

真正的作品,而不只是项目

用Scratch完成的只能是项目,很难说是作品。Paracraft创作的才是作品。

作品是教育环境里的一个关键因素。

首先,作品是个体的生命表达。个人把自己感受到的好玩的,能打动他人的东西通过自己的融合与创造表达出来,这是个体生命表达的过程。Scratch项目很难达到作品的程度,如前所述,其主要是玩具。


图:真正的作品

其次,我们通过他人的作品,来感知美的元素,感受他人的精神力量,汲取他人的精神养料。这些都可以认为是从他人的作品里汲取生命力量。


图:真正的作品

这些正是在背后驱使着儿童们去创作Paracraft作品的力量。所以说,在Paracraft里面,儿童才能真正的玩起来。

抓住编程的核心,围绕抽象建模,充分的空间思维能力培养

我们的编程学习,是非常清晰的系统的基于抽象模型的学习。并且Paracraft的场景搭建(包括模型搭建),动画电影,和游戏编程,都是在培养抽象建模的能力,是完整的编程学习。核心是空间的感知和思维能力。


图:学生使用Paracraft方块搭建的坦克Bmax模型

我们对编程是抽象建模有更清晰的认识,通过抽象建模和生命空间,我们把所有计算机科学的主题都很好的融合起来成为一个整体。而这些,与Paracraft的空间搭建正是一体的。


图:Paracraft里的建模

比如Alan Kay说,计算机或者软件的表达(representation)不光是存储在计算机里的各种抽象层面的表达,也包括了2D的表达。Alan Kay认为对一个程序员来说,会画画很重要,需要有2D表达的能力。

我们对此,基于抽象建模,有相似的认识,但会更系统和深入。我们认为抽象建模的表达,除了存储在计算机里的各种抽象层面的表达,和2D的表达外,还包括3D的表达,和文字的表达(我们可以把文字的表达看作1D的表达)。我们认为2D,3D的表达能力都是作为一个优秀的程序员需要的能力。因为一般的人是通过图形这种具体的形象来与模型进行交互的,然后这种交互导致存储在计算机里的抽象层面的模型表达的改变。就像我们前面讲的电商的例子一样,普通人是通过网页上的2D的各种菜单和按钮与模型进行交互的。而对抽象模型的文字表达能力,在软件设计中是很重要的能力。我们在Paracraft的编程教育里,其中重要的一个部分就是抽象建模的文字表达,并特意培养这个表达能力,比如我们对一个编程项目的思考和设计过程,就是依照抽象建模的方法进行的。而动画电影制作里的剧本写作,我们也是作为一个相关能力培养的。


图:使用Paracraft制作的动物Bmax模型

所以,你可以看到,因为我们对软件编程有着基于抽象建模的深入的理解,我们对编程所需要的各种能力都能在同一个框架里有机的融合起来,乃至于UI,交互设计,产品设计等方面在我们这里都是与编程思维是一体的。搭建,动画与编程就是对这些能力进行启蒙和全方面培养最好的方式。

对空间的感知能力,是抽象建模的基础,也是我们在搭建,动画与编程的各个方面都非常强调的能力。

Paracraft给了孩子们直观的建模能力的培养。 在3D世界的建造中,有大量的建模的机会。物品,角色,场景,都可以被建模并重复使用。比如,如果孩子们要搭建大型的中国古代宫殿,他们需要对斗拱,瓦当,瓦片,飞檐走兽以及古代的桌椅等大量重复使用的组件进行建模。如果他们做的比较好,做出一整套的中国古建筑的各种组件出来,其他人可以拿去很方便的搭建各种中国古建筑,我们就可以说这些孩子进行了非常好的抽象建模。

通过这些建模,孩子们能够形成对中国古建筑的很好的理解。这就是学习的过程。在让他们的组件更好玩,别人更方便拿去搭建各种中国古建筑的过程,是他们不断改进他们的Paracraft模型的过程,也是他们不断改进他们大脑中关于中国古建筑模型的过程。 比如他们也许会发现亭台楼阁和桥梁会有些不一样。如果他们的组件也可以用来搭建亭台楼阁和桥梁的话,他们可能需要有进一步的分层,比如把中国古建筑里最基本的元素找出来作为最底层,在最上层对各种特殊类型的建筑又有独立的类比。如何去分层,让繁多的组件都能很好的组织起来,其他人可以很方便的使用,很快速的搭建,这些都是空间建模的能力,也代表了他们对中国古建筑的理解的进一步深入。


图:使用Paracraft搭建的中国特色建筑

而编程里指令的封装,也是一种模块化。其中有些指令是更底层的,被上层的指令反复调用。这就需要学生具有很强的抽象提取能力。而学生也可以去创造新的指令,可以是更底层的可以被很普遍的调用的通用指令,也可以是上层的更方便的做某些事情的指令。这些不正是搭建吗?这与孩子们的建筑搭建里需要的建模是一样的。

而这些底层的指令则代表了对那个层次的理解,或者说那个层次的抽象模型。就好像斗拱屋瓦等代表了对中国建筑的理解一样,或者说是中国建筑的抽象模型。

这里重复一遍前文说过的很重要的一句话,对空间的感知能力就是最基础的思维能力,其他的能力,如抽象模型的表达能力,拆解能力,综合能力组合能力,复杂系统的诊断能力,解决问题能力,辩证思维能力等等,都是建立在这个基础之上的。

通过3D的搭建,建模和动画,孩子获得这些空间能力的丰富的系统的启蒙与培养,再进入到编程领域的学习来获得对这些空间能力的抽象的本质的认识。

提出生命中心的克里斯多夫亚历山大对计算机科学和软件编程有着深远的影响。上世纪6,70年代发展出来的对象化编程,设计模式,极限编程,以及2000年后开始流行并已经成为软件行业的主流的敏捷开发,都是计算机科学家和程序员们非常主动的要把克里斯多夫亚历山大的理论用于计算机科学或软件编程的结果。克里斯多夫亚历山大是个建筑师。他提出空间是包含生命的,是一切思维的基础。 Paracraft里的3D搭建,正是完美的系统的通过空间搭建的方式,去培养儿童们核心的编程思维能力,并把计算机科学和软件编程的所有知识都完美的用生命空间统一融合起来,并成为一个丰富的教育的平台,让不同兴趣不同背景的儿童都可以在其中可以进行丰富的生命发现,生命表达,拥有丰富的玩和学习的生命体验。


图:建筑学家克里斯多夫亚历山大

我们站在诸位软件先驱的肩膀上,系统清晰深入的提出了编程教育应有的丰富内涵和内容,应有的广度和深度,通过Paracraft这个3D创作工具完美的表达了出来。学会编程,学会学习!

升级的完整的计算机科学和软件编程教育

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

  1. 不会制作2D或者3D UI(用户交互界面),缺少审美能力。UI创作和设计能力是程序员的一个基本技能。普通的学校和机构学习一般不涉及图形或者3D设计,Paracraft里的编程学习,大家可以看到,2D或者3D UI的设计能力,审美能力,是作为核心的能力来培养的。并且这个能力与编程本身的能力是一致的,通过抽象建模完美的统一起来。
  2. 缺少产品设计能力,甚至不关心产品设计。但是在Paracraft的动画电影或者游戏设计中,学生都需要有很强的产品设计能力。Paracraft的搭建+动画+编程的整体,也是在培养相关的产品思维能力,这些能力,也是与编程的核心能力一致的。
  3. 缺少写出漂亮代码的能力,这里包括写相当复杂的软件时的那种讲故事的能力,复杂系统的搭建能力。
  4. 软件项目的迭代管理能力。这本质上也是一个对空间感知和交互的能力。

以上是行业里普遍存在的现象,也说明现在计算机/软件编程教育的严重不足。

而Paracraft编程教育,正是通过3D搭建,动画和编程,让孩子们从小培养完整的编程能力。

Paracraft的编程,不仅是提供了丰富完整的编程启蒙教育,真正有潜质对编程有强烈兴趣的孩子也可以在Paracraft里持续成长成为专业的程序员。这也是现在一般的编程教育都无法做到的。Paracraft能做到这点,简单的说,主要基于以下两点:

  1. Paracraft软件包含了3D动画和游戏的所有知识模型,是工业级别的软件。只是它以方块的形式呈现,儿童们上手很容易,很轻松就可以拥有搭建复杂世界的能力。
  2. Paracraft本身在架构设计上的开放透明性。
  3. Paracraft本身是开源项目,源代码开放,任何有能力的开发者都可以在网上参与贡献代码。
  4. Paracraft里的项目或者世界都是开放透明的,只要你知道项目的id,就可以进入该世界,并且可以进行编辑,查看其中的代码或者电影方块,探索是如何制作的。Paracraft至今已经积累了很多的优秀作品,包括很多专业级别的作品供大家学习。

我们相信Paracraft能真正改变我们现在的编程教育,解决其给行业带来的各种巨大问题,并为未来社会培养大量的优秀的程序员和相关软件人才。


图:Paracraft里包含了3D动画和游戏的所有知识模型

艺术与科技的交融

Alan Kay认为程序员应该会画画。硅谷创业之父Paul Graham在其著作《黑客与画家》里阐述了程序员的工匠属性。在Paracraft教育里,艺术与科技是无缝的对接。

正是因为Paracraft编程教育是基于空间思维的,我们把场景搭建(包括模型搭建),动画电影,和游戏编程融为一个统一的整体,所以可以说Paracraft是艺术与科技的完美融合。


图:Paracraft作品象形之美

这一切的核心,在于对空间的感知。空间的感知能力,正是艺术与科技之间的桥梁。 所有的所谓逻辑问题,其实本质上都是以空间感知为主的,顺序性的逻辑只是局部的辅助而已。所以,对我们来说,逻辑思维不是独立于艺术感知能力的思维,相反,基于空间的感知能力是一切智能的基础。

生命的教育

Paracraft是艺术与科技的完美融合,也是非常丰富的玩地,不同的孩子都可以在其中找到自己喜欢做的事情。在Paracraft里,就像我们对编程的理解一样,各种能力之间是交叉的互通的,儿童们可以从任何他们感兴趣的地方进入,我们可以帮助他们逐步扩大他们的兴趣,做更大更挑战性的作品,扩张他们的兴趣和能力,逐步掌握完整的思维能力和相关技能。这是一个生命发现的过程。我们认为教育的核心功能之一,就是生命发现。儿童们可以利用丰富的Paracraft来发现自我,我们的导师也会利用他们丰富的经验去帮助孩子们发现他们自己的生命。软件是很大的,所以软件编程是可以完成这样的教育期待的。这也是诸多软件先驱们和教育先驱们对软件编程的教育抱以极大期望的原因。

除了生命发现,Paracraft中的作品创作,如前所述,是一种生命表达。生命表达是教育的另一核心功能。 创作出来的作品,又成为其他孩子们生命发现的土壤。

不仅如此,Paracraft里所有的学习,都围绕着生命空间的感知和基于这个感知能力基础之上的各种能力进行。同时,Paracraft教育,是融玩,学习和创造为一体的教育。我们说人的一生/每天只有三件事可做:玩,学习和创造。这三者就是生命的本质。我们理解的编程,就是这样的一个富含生命的过程。编程的本质,就是要让做出来的东西好玩,要学习各个不同的领域,要不断的创造。限于篇幅,我们这里不展开。你可以阅读我们的文章“编程,生命,教育”

Paracraft的并行世界,丰富的教育空间

Alan Kay曾这样动情的描述过他想象的通过仿真,孩子们可以拥有的丰富的教育世界:

What if you could say to the library: “I wonder what it would be like to live in the Baghdad of the Caliphate?” or “I wonder how it feels to be a whale?” and expect the library to show you? Do you like Van Gogh? How about a simulation of the fields outside his house? Would you care to sit in with Louis Armstrong or Wolfgang Mozart? What would it do to the world if we could all see how everybody else lived and share in their cultures?

Simulation is the power to see what you imagine, to create worlds that obey your command. The computer can build instant sensory representations. The user/programmer explores a universe that reacts, in which the degree of the user’s power depends upon and grows with one’s understanding of the way the worlds work.

这就是Alan Kay的幻想放大器。他幻想通过软件仿真,可以让孩子们去体会生活在哈里发时代的巴格达是怎么样的体验?或者成为一只鲸鱼是怎样的体验?如果你喜欢梵高,我们可以仿真一下他房子外面的田野。或者你可以跟路易斯·阿姆斯特朗或莫扎特坐在一起聊聊?

Alan Kay说仿真就把你想象的世界造出来,让其遵守你的指令。计算机可以创造即时的感官体验,让用户探索一个可以互动的世界,通过这样互动探索的方式,用户获得对一个世界是如何运作的理解,这样的理解会带给用户巨大的力量

Paracraft里我们有一个平行世界(ParaWorld) 的愿景,即通过大量的3D世界的创作,把各种丰富的世界带到你的面前和指尖,让你可以与之互动。Paracraft对世界的仿真,可以突破时空的局限,制作丰富的教育内容。比如,模拟整个宇宙,让孩子们真实的感受星体的运行,互相间的比例关系,探索黑洞或者虫洞的神秘;模拟生物的细胞和组织,探索生物组织抗击病毒的免疫机制;或者走入分子原子电子的微观世界,以前很难想象的电子的流动电压的产生都变得直观,分子间的化学反应,有机大分子如何组成生物组织和构建生命,都成了可以观察可以互动和试验的3D世界;走入历史的时空,去体验一下李白苏轼创作某首诗词时的意境,春秋战国时期的纵横捭阖金戈铁马,遥想一下自己生活在那个时代会如何如何,体会历史演化背后的各种力量,包括人类历史发展与地理环境间的关系。学生与所有领域的老师们都可以参与到各领域知识内容的创作中去,创作丰富的3D世界和教育内容,让各领域的学习,更直观,更生动,更丰富,更有趣!

小孩子从出生开始就处在对丰富的世界进行探索式学习的过程中。比如积极的探索物理的世界,这是要持续很多年的过程,是孩童阶段很重要的一部分学习。比如跳上高处或者从高处跳下,或者往水壶里倒水的时候学习听水的声音就知道什么时候水快满了。这么丰富的学习,是无法用上课的方式学习的,孩童们都是通过在丰富世界的玩耍和探索式学习来完成的,儿童们都有探索和总结的能力。我们在谈学习能力的时候必须清楚的知道,这才是学习能力。这种学习,很多时候还是通过游戏来进行的,比如捉迷藏可以让我们了解自己的反应能力,对视觉可以有丰富的体验。每个孩子都可以在玩中获得丰富的体验并从丰富体验里去自我总结知识或者说创造知识。所以我们如果真的关注教育关注孩童的成长,就不应该把他们放到课堂里去上课学习,而是应该做好这个丰富的玩地,可以有很多的游戏,让他们可以持续的一直进行丰富的探索式学习,让他们持续的成长。Paracraft的平行世界就是这样的丰富的玩地,也是我们玩地建设的一个重要部分。

Alan Kay甚至说:“游戏能力和幻想能力,是一个人面对世界的能力!(game playing and fantasizing are metaphors for the kind of skill people need to get around in the world)”

我们通过我们想象的各种模型来理解我们的世界。通过这些模型我们又可以洞察当前世界里不完善的地方,我们可以通过进一步的想象,想象出更好的模型,并通过实现这些更好的模型去改变我们的世界。这些都是想象和游戏的能力,是关于我们对世界和人生的认知的根本的思维,也是软件改变世界的方式。

比如,我们尝试去理解我们现在的教育制度或者环境,我们通过抽象建模的方式去理解它们是怎么一回事,获得对当前教育制度或环境的本质的系统的理解,我们再根据我们自己的学习体验,去构建学习应有的抽象模型,我们去寻找这些模型之间是否融洽,发现其中可能的大的根本性的问题,是否能有更好的教育模型可以与学习的模型更好的匹配,甚至是更好的和社会资源匹配和我们的经济需求匹配。我们努力的去通过抽象模型来对我们周边的世界形成根本的本质的理解,再通过我们的想象的更理想的抽象模型去指导我们如何去改进我们的世界。这就是软件编程改变世界的本质!

Paracraft的3D并行世界的创作,就给了孩子们锻炼这种理解世界改变世界的能力的丰富的土壤。

走向未来的人工智能研究,让人更成为人

LOGO的原型来自另一个计算机语言LISP,Papert修改了LISP的语法使得他更易于阅读。(引自维基百科)

LISP可以说是最早的人工智能语言。Papert本人也参与了大量的早期的人工智能研究。

同样的,Paracraft的开发语言是NPL语言,也是人工智能语言,NPL(Neural Parallel Language)模拟人类大脑神经元的工作原理。Paracraft 3D引擎的高效,正是来自于NPL语言对大脑神经元工作方式的模拟。人类的大脑神经元的并行运算有着现今最强大的计算机都无法比拟的计算能力。

Paracraft为青少年的编程教育平台的同时,也可以用作人工智能的仿真实验室,Paracraft 3D世界里的人与物都可以看作是对现实世界的仿真。Paracraft本身,也是对人类大脑的工作方式的模拟。Paracraft的3D动画编程,正是基于人脑的编程,是最高效直接的编程,因为编程无外乎人脑对人或物的操作,这些在Paracraft里都通过仿真和基于仿真的编程来实现。

上面讲到的Paracraft的平行世界(ParaWorld)也是人工智能仿真研究的一个部分。Alan Kay认为,普通人认为没有目的的玩耍,其实正是学习,是一种探索式的不断想象不断试错的学习。而计算机可以虚拟化一切的特点正是可以实现这样的学习。这是Kay设想的人工智能的基础。从本文你可以看到,这也是我们的方向。

以我们对人工智能的理解,我们的编程教育和人工智能研究都是建立在生命感知生命发现生命表达与空间思维基础上的。我们希望实现真正的人工智能,让人更成为人,更健康全面的人,而不是让人更机器化。

Paracraft的人工智能研究,是走在世界前列的科学研究。学生们对Paracraft的使用与学习,包括3D世界的创作,是丰富的人工智能启蒙和教育的土壤,他们在其中能获得的对人工智能的理解,远远超过其他的肤浅的人工智能教育。

小结

我们阅读这些软件先驱们对编程教育的思考,发现他们同我们一样,在思考很多相同的问题,除了本文已经提到的很多内容,还有专业人士与教育者之间应该是什么样的关系,科学发现是怎么样的过程,如何让更多的人参与到科学发现中去,教育的意义(比如每个组织都应该承担教育的责任,成为教育资源)等等。将近半个世纪而以后,我相信我们可以更好的去回答这些软件先驱们当年提出的那些问题。

这些计算机先驱和教育家们,基于这些认识,对编程教育抱有极大的期望。同今天的很多人认为编程教育就是单纯的学编程不同,他们认为,编程教育,实际承载的是教育本身,即学会这样的探索式思维方式和学会如何学习,当然同时也掌握进行这些思维和学习的数字化工具即编程本身。具体的讲,即要让儿童们通过编程去丰富他们对模型的感知能力和各种表达能力,通过实验去验证和修改模型的能力,大型项目中的表达沟通与合作能力,丰富的空间感知和思维能力,复杂系统的处理能力等等。

Paracraft,正是实现这些理念最佳的平台!学会编程,学会学习!

中国编程教育的现状

LOGO编程语言在8,90年代引进过中国。Scratch如今是中国青少年编程教育里使用的较为普遍的工具。

但是与国外Scratch的使用不同的是,国内对Scratch的使用背离了Scratch的编程教育理念,即本文阐述的自软件的先驱们开始的一脉相承的编程教育理念。首先是把编程当作是单纯的编程学习而没有对编程本质的理解,意识不到编程学习具有的广泛教育意义。再就是编程的学习方式并不是Scratch秉承的基于玩和创造的学习,而仍然是应试化的教学。教学的方式和内容与当前大学编程教育的弊端是一样的,甚至可能造成更坏的结果,让本来有潜力在编程领域发展的孩子们在很小的年纪就开始惧怕和厌烦编程。

在我们的教育实践里就遇到过不少这样的曾经在学校或者校外机构上过基于Scratch的编程课,但是非常厌倦编程的学生。但是通过我们在Paracraft里的引导,这些学生逐渐发展出对编程真正的兴趣与爱好。像我之前分享的我小时候学习LOGO的经历一样,脱离了LOGO背后的理念用应试化的教学方法来学习编程是适得其反的。

现在中国的青少年编程教育市场涌入的大量的是不懂编程不关心教育的商人,造成市场非常混乱的现象,广大的家长被商家的宣传口径误导的状况非常普遍和严重。我们急需真正懂编程懂教育对编程教育抱有极大热情的人士来打破现有的乱象,理清编程教育的框架,让整个市场和行业走上健康发展的道路。

Paracraft编程教育成果和作品展示

https://paracraft.cn/videos


参考文献:

此条目发表在Software Education分类目录。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。 必填项已用*标注


7 + = 九