陈凯
所谓黑箱法,指的是这样一种方法:当对某个系统的内部结构和工作原理不了解(包括无法了解、难以了解或无必要了解等情况)的时候,可以通过对这个系统从外部输入数据,然后观察系统输出的数据,比对输入和输出的联结对应关系,判定系统的功能和特性,或者也可借此揣测系统内部的结构。在信息技术教学中,有许多地方可以使用到黑箱法,用以提高概念教学和思维培养的效率,下面试举几例。
● 用黑箱法简化生活情境,挖掘思维深度——以信息的含义为例
“信息”这个概念在不同的语境中有不同的含义,在生活语境中,“信息”与数据的意义密切相关,而在信息论的语境中,“信息”与确定性(或不确定性)的量度有关。对于前者,通过对数据的采集、記录、计算和展现等步骤来实现信息的处理,是“数据与计算”教学模块的主要线索之一,至于后者,关于如何通过计算机系统消除不确定性的需求始终蕴藏在信息技术的各个教学模块中,直到在“人工智能初步”模块中更鲜明地显现出来。
日常生活是丰富而复杂的,人们的语言更是灵活多变的,这就使得学生对如何从数据的角度对“信息”一词进行理解产生迷惑,甚至说,一些教师自己也是存在迷惑的,这时可以考虑创设一个对于现实世界有着映射关系的较为简单纯粹的情境,来凸显语言符号的所指。在教学中,笔者编写了这么一个小故事:
因为不明病毒的入侵,兔子大森林爆发了传染病,熟悉生物学的凯凯兔志愿前往第一线支援疫苗开发的研究工作。凯凯兔向自己妈妈告别时,妈妈问:“你什么时候才能回来啊?”凯凯兔回答:“等我负责的技术难题被突破了,就可以回来啦。”
妈妈很想念孩子,她等了很久很久,终于有一天,快递送来了一个小礼盒,小礼盒的面板上有个按钮,一按,里面弹出一只小玩具兔子,一边晃着脑袋,一边连着喊了7声妈妈。
第二天,按了按钮后弹出的兔子玩具喊了6声妈妈,到第三天只喊了5声,这到底是什么意思?兔妈妈弄不明白,直到第八天,玩具安静地一声也不叫了。就在这时,门外响起了凯凯兔的喊叫声:“妈妈,妈妈,我回来啦!”
在上面的例子中,到了第八天,兔妈妈就可以知道,原来这个礼盒是孩子回家日期的倒计时装置,数据和意义联系之后,相关信息就呈现出来了。
刚才的结论听上去很合理,但也存在值得深入讨论的问题。毕竟,兔妈妈可能在收到礼物三四天后,就已经意识到数据中可能存在某种意义了,或者说,这时她或多或少已经获取了某些信息,她或许猜对了这些数据的意义,或许猜错了,那么,这个时候,她到底有没有接收到孩子即将回家的信息呢?要解释这个问题,可以将玩具看成是一个黑箱,它的输入是天数,输出是玩具兔子叫声的次数。假设在平行世界A,这个黑箱的输入和输出是有规律的,但在另一个平行世界B,黑箱的输入和输出完全没有规律,输出的次数完全是随机的,那么,兔妈妈是无法从平行世界B中的黑箱里获取到信息的,而在平行世界A,却能获得一个对于未来状况的预期,这个预期是否能被验证,其实是和概率有关系的,这说明,信息的概念和概率是存在关联的。接下来可以继续思考,既然兔妈妈能获得这样的预期,一个人造的智能机器兔妈妈装置也一样能通过对数据的分析获得预期,并且,这个人造机器兔妈妈根本不需要知道第八天中数据0在生活实境中的具体意义。
在教学中,这个小礼盒可以用简单的程序来模拟实现,也可以真的借助单片机和语音播放芯片来制作成一个电子小装置,这些都可以和后续的如程序算法、信息处理系统、开源硬件、人工智能等教学内容遥相呼应。
在上述例子中,通过设置黑箱,避免了日常生活情境中纷繁芜杂的细节对思考造成干扰,使得问题的思考有了更明确的指向性,也更有深度。下面再对兔子的故事做一点改写,大家有没有兴趣试着回答故事中提出的问题呢?这个问题并没有标准答案。
……一按,里面弹出一只小玩具兔子,一边晃着脑袋,一边连着喊了7声妈妈。
第二天,按了按钮后弹出的兔子玩具喊了6声妈妈,到第三天只喊了5声,这到底是什么意思,兔妈妈心里很清楚,因为事先就已经约定好了,一连串依次递减的数字,其实是自家孩子即将回家的信号啊。
第八天,凯凯兔如期回到自己的家,桌子上摆满了自己喜爱的菜,啊,温暖的家。
第九天的时候,兔妈妈随意按下按钮,玩具兔子又开始叫起妈妈来,这是怎么一回事呢?凯凯兔惊讶地发现,原来自己错拿了玩具,这个玩具本来就是随机喊叫的,只是前几天,它都十分凑巧地对应上了次数递减的规律。这么说来,兔妈妈究竟有没有收到正确的信息呢?
必须承认,“信息”是一个很难解释的概念,与其强行去解释,不如用它作为激发思维碰撞的撞针。
● 用黑箱法约束操作过程,强化思维方式——以最深色选取为例
大家常常会讨论如何拓展学生的思维,但也有很多时候,为了将特定的思维方式彰显出来,用黑箱对思维进行框定。下面是一个颜色选取的例子:存在一系列不同深浅的颜色,这些颜色像颜料一样存储在框中,从上至下排列着,要求将其中最深的颜色找出来,但不能移动框。这里之所以用颜色而不是数字,是为了便于在画图软件中对数据进行机械性的操作。之所以不能移动框,是因为要对应程序算法中数组的结构。原始图样如图1所示。
图1 放在框中的深浅不同的颜色
人眼一望便知,第二个框中颜色最深,但对一个机器或程序来说,它往往缺少全局的视野,尽管存储器中所存储的数据可能很多,但在某个特定时间段里,内部数据只有一小部分是对计算装置显现的。在这五个框旁设定了一个待比较框,默认是最浅的白色,为后续操作方便,将待比较框在竖向方向上拉长。然后,就可以通过取色工具和填充工具,手动模拟出在一系列颜色中选取最深颜色的操作。在操作时,可以将画图软件的尺寸拉小,这样就模拟出只有部分数据对外显现的效果,如下页图2所示。
操作时,学生只能同时看到两个框,如果待比较框中颜色浅,则从颜色框中取色,填充至待比较框,否则就不做填充。每做完一次比较、填充(或不填充)操作后,则往下翻页,显现出新的颜色并重复刚才同样的操作。于是,在思维中就存在一个黑箱,它有两个输入和两个输出,两者关系如下页图3所示。
接下来,就是将黑箱的输出的结果,再次反馈到黑箱的输入端,这样一来,颜色选取的任务就成为一种迭代操作,具有了非常鲜明的自动化的特点。虽然人的操作动作被约束了,但却更容易显现出计算思维的特征。
● 用黑箱法回避操作细节,建构思维模型
笔者一直在思考一个问题,学生对于像从1累加到10这样的简单循环结构程序,究竟是真正理解了其工作原理,还是仅仅简单地将循环结构三要素和常用语句套用到问题的解决中?为了解答这个问题,笔者设计了两个小游戏,一个叫货车搬砖,一个叫黑箱变宝。先来看货车搬砖,这是一个棋盘游戏,棋盘布局如下表所示。
假设货车上砖块无限多,货车按箭头方向行进,当货车经过X区仓库下方时,就会在X区卸货,新添加的砖块数量与A区砖块数量相同,当货车经过A区下方时,就会在A区添加一块砖,然后货车重复刚才的行为,问:当货车第n次回到出发点时,X区和A区砖块的数量?能比较容易看出,货车和仓库的协同运作,相当于实现了数字的累加。
第二个游戏叫黑箱变宝,是一个简单的图形界面游戏。游戏中有两个加法机、两个传送机,它们是四个黑箱,每个黑箱的输入在左侧、输出在右侧,在3号传送机的左侧已存放了一颗钻石,用“@”符號表示,游戏界面如下页图4所示。
点击3号传送机的黑箱按钮,钻石会被传送到右侧输出端。当钻石出现在黑箱右侧时,可以选择继续在右侧保留钻石,或点击按钮实现清空钻石,或将钻石传送到某指定编号的黑箱的左侧输入端的功能。
加法机的工作方式基本和传送机相同,唯一不同的,是钻石输入黑箱后,会多加一颗钻石到右侧输出端。下页图5是加法机效果的演示。
对于黑箱的操作实际上对应了程序代码中的赋值、计数、累加操作,但游戏过程中,玩家并不需要事先掌握任何程序代码知识和语法细节。
游戏的要求是,用黑箱操作这些钻石,来计算1加2加3……数字累加的结果,并要求在操作过程中,点击按钮的顺序,必须遵照一定的模式。例如,假设游戏界面里的按钮的名称分别是A、B、C、D……,那么,A、B、C、D、A、B、C、D、A、B、C、D……类似这样具有相同模式的点击次序是被允许的,而A、B、C、D、A、B、D、A、C、D……类似这样的点击次序是不被允许的。
设想一下,如果任务是1加上1,再加上1,再加上1……那么就很容易实现任务,只要不停地重复把加法机右侧的钻石移动至加法机左侧,然后输入黑箱再输出的动作即可。但若要实现累加,就必须综合使用不同的黑箱,实际上,这个任务的完成,也并不需要用到所有的黑箱,如何用最精简的方式完成任务,也是值得玩家探索的。
第二个黑箱变宝的游戏的难度明显高于第一个货车搬砖的游戏,货车搬砖的游戏让学生经历了累加操作的过程,但黑箱变宝却要求学生自己利用黑箱构建出一个可实现累加操作的系统。如果学生的构建是成功的,那么就可以进而将构建这个系统的思维方法用到循环结构算法的程序编写中。所以,用于黑箱协调使用的方法,成为沟通具体的现实生活和抽象的程序代码之间的思维联结点。
这一组游戏可以用来验证在学生学习和掌握了循环语句结构后,其解决具体问题的计算思维能力,尤其是借助数据的变化建立结构化模型的能力。小范围的实验结果是,对于货车搬砖游戏,大部分学生在理解上没有太大困难,对于实现累加的程序的流程图或代码,大部分学生也能完成,但那个黑箱变宝的游戏却难倒了很多学生。这从一定程度上说明,学生在编写程序完成累加任务的时候,主要依靠的是记忆、模仿以及对数据变化的跟踪,而缺少系统模型构建的能力。并且,这还给出了另一个可供参考的研究思路:那些尚未有循环结构程序设计学习经验的学生,能否通过这些游戏交互,并结合基本的循环结构代码语法的资料,自主地设计出用循环结构实现数字累加的程序代码?这是为了更清楚地获取到明晰的数据,用以评价按基于建构主义理念的方法开展程序算法教学的价值和效率。