构建模型 学习计算思维

2020-06-11 03:44陈染
中国科技教育 2020年4期
关键词:观察者瓦片海龟

陈染

计算思维是2006年卡内基梅隆大学周以真教授提出的概念。计算思维指的是一种运用计算机科学基本概念求解问题、设计系统和理解人类行为的方式,它涵盖了计算机科学领域广度的一系列思维工具。学习计算思维不仅有助于我们理解计算机科学的概念和思想,更可以将它广泛应用于工作、学习、生活中,为我们提供不一样的组织和分析问题的视角。

在小学和中学阶段,信息技术课程的学习是培养计算思维的一个重要途径,以至于有些学生和教师会把计算思维误解为编程的思维方法。其实,自2006年周以真教授提出计算思维的理念时,她就已经明确指出了计算思维是人的思维,不是计算机的思维,计算思维面向所有人、所有地方,而不仅仅是编程中使用的思维方式。举一个小例子,想一想日常生活中我们做一顿饭的程序是怎么样的:先把米放进电饭锅,让电饭锅开始煮饭,趁着电饭锅煮饭的时间再处理其他食材。为什么我们不先做好菜再开始煮饭呢?这是因为我们采用这种程序的时候刚好能在菜做完之后,饭也刚好熟了,这就是计算思维中的流程优化。只要多观察,我们会发现计算思维在生活中无处不在。

除了计算机课程外,我们可以将计算思维融入学科学习、创客教育、社会实践活动等方面。计算思维的培养方式很多,构建模型就是其中一种方式。运用计算思维构建模型的4个主要步骤是分解、模式识别、抽象和算法。面对一个大的问题,我们将问题分解为若干方便我们解决的小部分,识别出每个部分的模式,化繁为简,将现实的事物抽象为计算机能够理解、能够识别的东西,再通过构建算法,通过算法建立起我们所需的模型。

实用的模型学习软件NetLogo

2020年3月, “科技学堂”组织了4期STEM云教研活动,和数百位教师在线探讨如何通过构建模型的方法将计算思维运用于科技教育课堂中。在这几期STEM云教研中,我们选择了多主体建模软件NetLogo作为构建模型的工具,以帮助学生运用计算思维探究学科和项目式学习中遇到的问题。从功能层面上看,NetLogo并不是一个强大的编程工具,不适合开发复杂的计算机程序。但NetLogo的优势在于它的语法足够简单,学习成本很低,并且还配备了完善的模型库可供使用。即使学生没有经过NetLogo的编程语法的学习,我们也可以直接运用模型探究现实问题,我们还可以通过修改代码,对模型进行进一步拓展,以满足我们实际研究需求。NetLogo的特点意味着它很适合开发简易的模型,也很适合成为培养学生计算思维的工具。

NetLogo是美国西北大学连接学习与计算机建模中心教授尤里·韦伦斯基(UriWilensky)于1999年开发的一款开源编程语言。从名字可以看出,NetLogo基于Logo语言设计而成。Logo语言是第一门专门面向于教育的编程语言,它的出现对编程教育和计算机语言产生了深远的影响,目前流行的编程教育工具Scratch便直接从Logo语言发展而来,而目前最流行的编程语言Python也深受Logo语言的影响,Python的编程教育工具Turtle类库更是向Logo语言致敬(图1)。经过了50多年的发展,Logo语言枝繁叶茂,而NetLogo便是这棵大树低调而美丽的花朵。

NetLogo适用于计算思维教学的一个优势在于它自带的模型库,模型库中拥有数百个模型,所涉及的学科包括艺术、生物、物理、化学、计算机科学、地球科学、数学、网络、哲学、心理学、社会科学等。这些模型的源代码都是开源的,我们可以在NetLogo的代码页面修改相应的代码,以拓展模型的应用空间。大部分模型还配备了教学建议,在模型的“信息”页面我们可以看到这个模型是什么,它是怎样运行的,我们怎样运用模型,使用的注意事项,如何引导学生探索,怎样拓展模型,以及有哪些了解更多的阅读材料。

NetLogo是一种建立多主体系统(multiagent system)的工具,所谓多主体,即通过计算机生成一个个主体,每个主体遵循一定的规则活动。通过主体的行为和相互作用观察对世界的宏观影响。NetLogo的世界中包括4种类型的主体:海龟、瓦片、链和观察者。

·海龟(turtle):海龟指的是可以在模型中自由移动的主体,大多数模型都会出现海龟角色。海龟的默认形状是箭头,我们也可以把它修改成其他形状。海龟的概念继承自Logo语言,Python Turtle等类库也运用了海龟的概念。

·瓦片(patch):瓦片指的是在模型中靜止的主体,我们也可以称之为网格。NetLogo模型的场景中每一个坐标格就是一个瓦片。瓦片可以和海龟交互,也可以与其他瓦片交互。大多数模型会用到瓦片的角色。

·链(link):链指的是连接在海龟与海龟之间的线,相连的每一个海龟称之为节点(node)。链在研究社群网络关系中有着重要的作用。

·观察者(observer):观察者指的是不参与到模型运行中的角色,它包括控制模型运行的按钮、调整模型参数的滑杆、控制运营模式的开关、观察模型数据的图表和监视器等。这些角色虽然不直接参与模型的运行,但它对于我们观察模型的变化,得出模型的结论至关重要。因此,几乎所有的模型都会出现观察者的主体。

我们可以通过NetLogo自带的模型库认识各种主体的作用。以“狼 羊捕猎”模型(WolfSheep Predation)为例,这个模型模拟的是一个由狼、羊和草组成的简易生态系统。这个模型有3条简单的运行规则:

。狼会吃羊,羊会吃草;

。每隔一段时间,空地会长出新的草;

。羊和狼通过捕食会增加能量,能量会随着时间逐渐消失,当能量到达一定数值就会生出新的狼和羊,当能量消失为0的时候狼或者羊就会死去。

通过这3条简单的规则,我们就能够探索在这个生态系统中狼、羊和草的变化规律。运行模型时,我们会看到这样的画面(图2)。

在画面左侧,我们看到有很多滑杆、按钮、开关、图表、数字窗口等。它们都属于“观察者”,这些主体不直接参与模型的运行,但它们的作用也是非常重要的。我们可以通过画面左上角的滑杆调整模型参数,如狼和羊的初始数量、草的生长数量,狼和羊的繁殖所需的能量等,从而了解不同因素对狼 羊 草生态系统的影响。画面左下角的表格和监视窗可以让我们直观地了解到当前狼、羊、草的数量和它们的变化情况。

画面右侧为场景区,我们可以看到场景区上有白色的羊、黑色的狼、绿色的草和褐色的空土地。在这个区域,羊和狼可以在画面中随机行走,因此,都属于“海龟”主体,尽管它们并不是海龟的形状;地面的草是不可以移动的,因此,属于“瓦片”主体,当羊从绿色的瓦片经过的时候,瓦片就从绿色转为褐色,表示草被羊吃掉了,这意味着“海龟”主体能够和“瓦片”主体进行交互。

这个模型并没有用到“链”,我们换个模型认识一下。图3是“病毒传播网络” (Viruson Network)模型,我们可以用它研究病毒在人群中传播的规律。

这个模型左侧同样是属于“观察者”的按钮、滑杆和图表;在右侧我们可以看到一个个圆形的点,点和点之间连接着一根根线。这些线就是所谓“链”,而链上的圆点我们称之为节点。节点属于一种比较特殊的“海龟”。红色的节点表示感染者,蓝色的节点表示易感者,灰色的节点表示免疫者,而连接着节点与节点的链表示人与人的社会关系。当一个节点感染了病毒之后,它会有一定概率经过链将病毒传播到与之相邻的易感者上,使之成为新的感染者。而感染者也有可能在一段时间后成为免疫者,免疫者不会传播病毒。通过这个模型我们就能研究病毒在社群中传播的路径,并作出相应的预防措施。这个模型很适合与当下的疫情情况结合起来,通过计算思维的方法让学生认识采用什么方法能够防范病毒在社会中扩散。

@NetLogo的使用和学习

NetLogo是一款免费的建模软件,在NetLogo的官方网站(http://ccl.northwestem. edu/netlogo/index. shtml) 即可以选择合适的版本下载。如果教师只是想在学科课程中偶尔展现模型,或想简单体验模型,NetLogo官方网站也提供了在线版本,在这个版本中你可以体验到NetLogo自带的所有模型,但在线版本不能制作和保存新的模型,功能也不如桌面版的完善。

NetLogo安装包包括NetLogo、NetLogo3D、HubNet Chent和Behaviors Earth,我们主要使用的软件是NetLogo。点击NetLogo的“文件”

“模型库”,即可获得数百个完善的模型。打开模型后,页面上方出现“界面”“信息”和“代码”3个标签页,在信息頁面中我们可以了解模型的具体信息和操作指南,在代码页面中我们可以阅读模型是如何建构的,我们可以修改代码以拓展模型。

如果保愿意更加深入地学习NetLogo,制作自己的模型。你可以在NetLogo的官方网页获取中文版用户手册,它可以帮助我们初步掌握NetLogo的程序编写。如果在编写程序中遇到困难,我们还可以在帮助页面查阅NetLogo词典。这些都很方便我们构建自己的程序。

参考文献

[1] Google面向教育者的计算思维课程.https://edu.google. com/resources/programs/exploringcomputationalthinking/

[2] NetLog0 4.0.2用户手册(中文版)http://ccl.northwestern. edu/netlogo/4.0. 4/docs/NetLogo_manualchinese.pdf

猜你喜欢
观察者瓦片海龟
打水漂
用追击相遇的模型解释多普勒效应
乡村瓦语
惯性
可怕:一块塑料便可“杀死”一只海龟
海龟泡饭汤
幼儿游戏中教师角色的定位
基于Android的智慧竞赛APP设计与开发
海龟
海龟