怎么带孩子在游戏中一步步学编程?来自一位程序员爸爸的“深度体验报告”!
前段时间,花友@周花卷和我们分享了作为一名程序员爸爸的“大白话”,解答了关于小孩学编程大家最关心的几个问题。实际上,他一直在带儿子学编程,比如适合小码农入门的编程 App - Swift Playgrounds,还有著名益智玩具品牌 Thinkfun 的编程桌游。
Thinkfun的三款#Code系列最新儿童编程游戏,下周一就要上“花生团”。前段时间,我们专门请这位懂编程、也懂教孩子编程的爸爸做了游戏测评,和大家说说这三款编程游戏的“玩点”在哪里,怎么玩,能给孩子带来什么样的教育价值。
今天这篇文章,就是他和儿子挑战三款编程游戏的深度体验报告。介绍很细致,如果你对下周一花生团的这三款编程游戏感兴趣,一定收藏此文,拿到玩具后就可以跟着这份“超级攻略”玩;如果你还在考虑是不是要让孩子接触编程,这篇文章会让你感受到儿童编程是怎么回事,学了有啥用!
感谢程序员爸爸@周花卷的分享!
本文由小花生网友@周花卷发布于小花生写作计划
曾推出过经典的网红玩具重力迷宫、激光迷宫的益智玩具厂商ThinkFun,今年又新推出了一套叫做//CODE的编程玩具。
这是一套什么玩具?
ThinkFun //CODE是一个系列产品,包括三款独立的玩具:
官方给它们规定了顺序,而且每一款都有自己的主题,按照上图从左到右:
On The Brink:主题是Procedures(过程)
Rover Control:主题是Control Structures(控制结构)
Robot Repair:主题是Boolean Logic(布尔逻辑)
虽然是编程游戏,但按照ThinkFun的一贯风格,这货是地地道道的桌游(board game),没有任何电子元件,当然也不用电池,对于想培养孩子编程思维,又对电子屏幕有所顾虑的家长来说,不失为一种新鲜的选择吧。
这三款玩具的适用年龄都是8岁以上,可惜我家只有一个5岁半的Vita哥哥和一个还在吃奶的Luna妹妹。这三款玩具全部经过哥哥完整试玩,特别有诚意对吧!关于玩具的实际难度,我后面会根据Vita哥哥的表现进行分析。
接下来就按顺序开玩吧!
//CODE系列之1:On The Brink
第一款玩具叫On The Brink,包装盒上是一个机器人在走独木桥,看起来是一个迷宫类的游戏。打开包装,先看见一张纸:
看起来,//CODE这套玩具是扎克伯格、比尔·盖茨等IT大佬鼎力支持的“编程一小时”项目(Hour of Code)的一部分,然后它是和一位前NASA的程序员共同设计的。
我个人很欣赏“21st Century Thinking Skills”这个说法,我曾经在一篇讲为什么要教孩子学编程的日志(戳链接查看)说提到过,在我小时候,有个十分流行的说法叫“不会使用计算机就是21世纪的文盲”,可怕的是,这个说法现在基本上已经成真了,那么不会编程会不会变成“21世纪下半叶的文盲”呢?我不是预言家,给不了这个答案,只能说我个人认为这个可能性不小吧。
这个怎么玩?
好了,言归正题,这货到底怎么玩?先看看里面有哪些东西吧:
上面有三种颜色的玩意儿叫控制面板(Control Panel)——这张照片上我好像把它摆的上下颠倒了。下面一本大的册子就是谜题了,一本小的册子是说明书,还有一刀命令卡片和一个机器人棋子。
这款玩具都有40道谜题,根据不同难度分为入门级、中级、高级和专家级,每个级别各10道题。先看看第1题长啥样吧:
第一眼看到这个我也有点蒙,这到底是个啥?于是我把说明书翻了一遍,终于搞明白了。然而,让我感到惊讶的是,Vita哥哥在并没有看说明书的情况下,就搞明白怎么玩了,这可能是因为他玩过很多编程类的App,不过从另外一个角度来看,这个游戏的规则设计大概也比较符合孩子的直觉。
简单来说,这个游戏的目标就是让机器人从起点走到终点,控制面板上有6个格子(红、蓝、橙各两个格子),我们要把命令卡片放在控制面板上,6个格子都要放满。机器人站在什么颜色的格子上,就执行什么颜色格子里的全部两个命令,走到下一个格子之后,再根据所在的格子执行相应的命令,直到最后到达终点为止。
但是需要注意的是,机器人不能走到灰色的那些格子里去,不然就从棋盘上掉下去啦。另外,我们发现棋盘上有白色的格子,但控制面上没有白色的格子,这意味着白色格子没有对应的命令,一旦机器人在一个回合结束时落在白色格子里,就卡死在里面出不去了。
还有一些具体的规定,这里不多说啦,大家还是好好看看说明书,官网上居然有电子版(http://www.thinkfun.com/wp-content/uploads/2017/07/Code01-1901-IN01.pdf),然而把答案也放出来是闹哪样啊(捂脸。
好了,我们看看有哪些命令卡片可以用吧:
命令都挺直观的,基本就是前进后退左转右转这些。上面灰色的卡片是基本卡片,入门级和中级题目用这些卡片来做;下面金色的卡片是高级卡片,包含一些比较复杂的复合命令,高级和专家级题目用这些卡片来做。最上面的X卡片表示不执行任何命令,就是个占位符,这些X卡片在任何级别都可以用,其实背面反过来是金色的,呵呵。
好了,我们看看这个第1题怎么搞。题目棋盘的左边列出了需要使用的命令卡片,先把这些卡片找出来吧。入门级题目没有黄色格子,所以里面直接放两个X;蓝色格子只前进一步就掉白格了,所以放两个前进命令吧;最后红色格子就只剩一个前进和一个X。
放好命令卡片之后,我们要“运行”程序,怎么运行呢?没电,只能人肉运行了。拿着机器人棋子,按照放好的命令一步一步走,看看最后能不能走到终点呢?嗯,完美!(其实这个机器人棋子是有个塑料底座的,应该是立起来在棋盘上走的,我拆包装的时候把底座漏掉了,于是一直是平放上在上面玩的,请大家忽略这个诡异的效果。)
孩子能学到什么?
这款游戏的主题是Procedures(过程),所谓“过程”就是一串命令的组合,通过它们来完成某个目标的意思。
要说这款游戏最大的亮点是什么呢?我觉得并不是解谜,而是手工运行程序这个步骤。
你可能会说,手工运行程序有什么难的呢?不就是按照命令一个一个走吗?其实对于孩子来说,这个过程是非常需要专注力的,因为他需要看当前格子是什么颜色,再看好需要运行什么命令,然后再实际用棋子去完成相应的移动,很多孩子会觉得这个“按部就班”的过程很枯燥——要知道,看着说明书搭积木对孩子来说也没那么容易的,对吧。
由于有向左转向右转这种命令,孩子还得学会根据机器人当前面对的方向来分清往哪边转,实际玩的过程中,大人都难免在这个地方出错,更不要说孩子了。
看Vita哥哥给你真人演示如何手工运行程序:
https://v.qq.com/txp/iframe/player.html?vid=w05348oake8&width=500&height=375&auto=0
为什么说这是这款游戏最大的亮点呢?因为在iPad或者电脑上编程的时候,运行程序是计算机的工作,人只要看结果就好了,但计算机运行得太快,孩子不太容易理解命令是怎样一条一条被执行的。
为什么需要理解程序运行的过程呢?因为当程序出现问题需要调试(debug)的时候,我们就需要一步一步排查问题到底在哪里,在这个过程中,单步模拟是一个很有用的技能。
当然了,就算孩子以后不去编程,这个过程也非常能锻炼孩子的耐心、专注力和空间方位感觉。我觉得,如果你发现解谜对于孩子来说有点难,完全可以先按照手册上的答案把命令摆好,让孩子练习自己运行一遍这些命令。
再说说解谜吧。这款游戏的解谜过程大致需要两种能力,一种是模式识别(pattern recognition),另一种是逻辑推理(logical reasoning)。模式识别简单来说就是找规律,找套路,比如说下面这个应该一眼就能看出来,橙色直走,红色右转,蓝色左转。
当然,在难度较高的题目中,模式是没有这么明显滴,要不然也太没挑战了对吧。对于模式不明显的那些题目,就得发动逻辑推理技能,找到一些限制条件比较多的格子,排除掉一些可能性,然后再进行尝试。
模式识别在实际的编程中也是一项重要的能力,因为计算机编程的一个关键方法就是尽量使用可重用的模式(reusable patterns),也就是说通过简单命令的组合和重用来完成复杂的工作。
在这款游戏中,基本命令只有三种:前进、左转、右转,而高级题目中使用的复合命令,其实都可以看成是一些函数,也就是多个基本命令的组合,比如Long Turn Left命令就等于前进→左转→前进(每张复合命令卡片下面都有基本命令的分解)。
在实际的编程中,函数就是一种可重用的模式,而程序员的工作之一就是去设计和构建这样的模式,然后像搭积木一样把它们组合起来。
玩这款游戏的时候我们还能发现,大部分情况下机器人走的都不是最短路线,而是要绕来绕去好几圈才能到达终点,这是因为我们在尝试用非常有限的模式(3组命令)去完成任务。
实际的编程中情况也差不多,因为计算机的运行速度很快,我们往往不在乎让它多走一些冤枉路,正如我刚才提到的,我们的目标是重复使用最少的模式来完成任务,孩子在玩这款游戏的时候,能够大量地接触这样的思维方式,对于真正学编程也是很有帮助的。
这个到底难不难?
难不难这个事情比较主观,我只能根据Vita哥哥的试玩情况来大致分析一下啦。需要事先说明的是,Vita哥哥接受过一定的编程训练(比如Swift Playgrounds),所以大概比同龄孩子的平均水平要稍微高一点。
最简单的第1题肯定是秒过了,后面我直接给他跳到了第10题,大概因为难度落差比较大的关系,这道题他花了大概有10分钟时间。难在哪里呢?因为这道题一眼看不出路线的,模式识别不管用,必须依靠逻辑推理,我把最终的路线画出来你们感受一下:
大家是不是觉得入门级第10题就这么难,后面该怎么玩?其实中级的第1题(也就是第11题)比第10题简单多了,图在前面大家自己翻一下,同理,高级的第1题(第21题)也比中级的最后一题(第20题)简单,所以千万别慌,这个游戏的难度并不是线性的。
不过高级的题目(第21题之后)还是颇有难度的,因为换了一套命令卡片,不但命令的数量增加了,而且使用的都是复杂的复合命令。Vita哥哥从第21题直接跳到第30题之后就卡住了,那道题确实有难度,再加上跳题的关系,难为他了。不过,当我们一起解决第30题之后,再让他翻回去做25-29题的时候,就显得很轻松了,平均10分钟完成一道。
专家级的题目(第31题之后)Vita哥哥也尝试挑战了一下。专家级的难点在于它不告诉你这一关需要用哪些命令,也就是说,所有的命令都可能被用到,可能性变多了,逻辑推理的难度也一下子大了很多,因此专家级的题目更多地还是依靠模式识别来完成。
在非常有限的帮助下,Vita哥哥可以完成31-38题,平均每道题用时15分钟,不过39和40确实就非常难了,特别是第40题,他在推理的时候出现了一个逻辑漏洞,但我被他带进去了,没能发现这个漏洞,于是两个人折腾了许久才做出来。
陪玩心得:
正确运行程序是基础,提醒孩子运行程序时一定要仔细,执行了错误颜色格子的命令,漏掉了一个命令,或者左右搞反,都是孩子会常犯的错误。
引导孩子仔细观察棋盘,寻找其中包含的模式和规律,以及寻找限制性的条件(比如长条路径、白格等)作为思考的突破口。
引导孩子进行简单的逻辑思考,比如说从一个格子到另一个格子有几种走法?如果采用某一种走法,和其他相同颜色的格子之间是否会产生矛盾?注意提醒孩子在思考时遵循MECE(不重复、不遗漏)原则。
//CODE系列之2:Rover Control
第二款玩具叫Rover Control,包装盒上是一个…看名字应该是火星车一类的东西。跟第一款一样,这款也是包含40道题目,不过打开看看就发现里面的东西跟第一款是完全不一样滴:
一脸懵逼,怎么这么多东西!左上角是谜题册,右上角是一堆可以抠下来的卡片,中间还有三支彩色笔,左下角是4张地图,右边两本分别是说明书和答案。
这个怎么玩?
这款游戏花头真心太多,具体的还得看说明书(官方电子版:http://www.thinkfun.com/wp-content/uploads/2017/07/Code2-1902-Instructions.pdf),我看看能不能用最简单的语言给解释清楚。首先,看最简单的题目1:
你的任务是,在地图上用彩色笔把路径涂上颜色,使得火星车可以按照规定好的路线(course)从起点走到终点,但是:每条路径只能涂一种颜色,且对于地图上任意一个格子,都不能连接两条颜色相同的路径。
右上角的小图是地图初始配置,上面显示了起点在7号格,终点在9号格,以及4条已经规定好颜色的路径。如果我们要使火星车从7走到9,中间经过3条路径,显然只有一种走法:7→4→1→9,把这3条路径分别涂上红、蓝(初始已涂好)、红,就算是过关啦。
这款游戏里面的彩色笔是水性白板笔,地图板上有一层光滑的覆膜,因此玩好之后可以用笔盖子上的擦子把颜色擦掉,以便继续玩下一关。
你以为这款游戏只是这么小儿科么?眼花缭乱的还在后面!到了入门级的后面几道题,又增加了一个叫检查点(checkpoint)的玩意儿:
检查点是啥呢?就是规定你必须要经过某些格子啦。比如这一关,题目左上角的检查点清单里面写着5和1,意思就是第一个检查点是5,第二个检查点是1。从起点1开始走,经过3条路径到达第一个检查点,也就是必须到达5,然后再经过3条路径到达第二个检查点,也就是必须到达1。检查点是游戏中一个非常重要的限定条件,它除了给你更多的限制,也会给你更多的解谜线索。
到了中级题目,又来幺蛾子了!多了充电站(charging stations)和数据传输站(data upload stations),果然是玩火星探索啊,入戏好深!这俩玩意儿长啥样呢?看这个:
看得真是要头晕了。充电站和数据传输站其实都是判断条件,看路线上面菱形的块就代表条件分支,判断火星车现在所在的格子是不是一个充电站(或者数据传输站),判断结果会影响程序的流向,后面的虚线则代表循环。稍微懂一点编程的人可能能看出来,通过条件分支判断是进入循环还是跳出循环,这就是一个while循环了。
你以为这样就完了吗?太天真了!高级题目又搞出了另一个幺蛾子——土壤采样(terrain samples),不得不再次感叹入戏真的太深啊…
所以这货又是几个意思?其实它就是一个计数器,要配合左上角那张卡片使用。六角形的块判断当前土壤采样的数量是否到达某个值,然后根据判断结果进行分支,选择进入循环或者跳出循环,在循环中会对土壤采样数量+1,这时就把卡片旁边的指针往上推。稍微懂点编程的人到这里又要觉得眼熟了,因为带计数器的循环就是for循环嘛!
这么多幺蛾子都说完了,感觉这个游戏够复杂了吧,别忙,还没完!到了专家级题目,又增加了一辆火星车!两辆火星车的程序是相同的,但它们各自的起点和终点都不同,因此你绘制的路径颜色必须能够同时满足两辆火星车都从起点到达终点,想想就搞脑子啊!
孩子能学到什么?
这款游戏的主题是Control Structures(控制结构),所谓“控制结构”就是通过分支、循环等方式根据条件来控制程序的走向。
通常我们学编程的时候,都是学习如何自己编写这些控制结构,但这款游戏的思路却是反的,控制结构已经给你了,而你需要根据这些控制结构来构建满足条件的路径。尽管你不需要自己编写这些控制结构,但在构建路径的过程中,你必须能够完全理解这些控制结构的工作方式,不然你不可能构建出正确的路径,这就是这款游戏设计最巧妙的地方。
另外,跟上一款游戏一样,“运行程序”其实是非常重要的一个环节。这款游戏的程序规则比上一款要复杂很多,因此对于孩子来说,就算不玩解题,如果能按照画好的路径正确说出程序的运行过程,也是非常非常不容易的一件事了。
我甚至可以毫不夸张地说,对于这款游戏,运行程序的过程比解谜的过程更像编程,连官方说明书里都说:这款游戏的意义在于“模拟真正的计算机运行程序的过程”,而“用眼睛和大脑模拟程序运行”是程序员的一项重要能力。
而且,游戏题目中给出的“路线”,实际上就是真正的编程中经常使用的“流程图”(flow chart),通过玩这款游戏,孩子就潜移默化地记住了流程图是长啥样的,是干啥用的,即便将来不去学编程,流程图在很多其他方面也都可以派上用场,比如项目管理、活动组织等等。
看Vita哥哥给你真人演示如何正确运行带分支和循环的程序(请忽略哥哥感冒吸鼻涕的声音):
https://v.qq.com/txp/iframe/player.html?vid=z053493a8po&width=500&height=375&auto=0
至于解谜,在这款游戏中,会大量运用回溯(backtracking)的方法。回溯不但是一种人类思考问题的方法,同时也是一种重要的计算机算法(algorithm)。
简单来说,这款游戏的解谜过程就是从若干种可能的路径中搜索出正确的一种,而在搜索的过程中我们会遇到分叉,也就是从某一步开始可能有几种不同的走法,需要从其中一种开始尝试,如果尝试到最后不成功,就需要回退到分叉的地方,减掉错误的分叉,然后继续尝试其他的分叉,直到最终找出正确的解。这种方法也叫深度优先搜索(depth-first search, DFS)。
在运用回溯的时候,我们需要知道当失败的时候要回退到哪个位置,在玩这款游戏的时候,我们可以教孩子在分叉的地方做记号,比如这样:
上面这张图里,10号格子(左手挡住了)的地方我们有两种走法,一种是走到7,一种是走到0,这两种走法都能满足当前的约束条件。这时我们可以在这个地方做记号(图上的蓝色圆圈),然后先尝试7,一直尝试下去之后发现到了某一步走不下去了,这时就把分叉之后的路径全部擦掉,也就是退回到分叉的位置,继续尝试另一种走法(走到0),并且把这个记号也擦掉(因为已经减到一种可能性,即消除了分叉)。最后发现第二走法是正确的:
如果前一个分叉还没消除,后面又产生了新的分叉,那么回溯的时候要先回退到新的分叉(也就是最近的一个分叉),直到把这个分叉完全消除之后,如果还是不行,再退回到上一个分叉。
这个到底难不难?
吸取了上次的教训,除了入门级之外,这次我不让Vita哥哥大幅度跳题了。
从Vita哥哥的试玩表现来看,我认为这款游戏比第一款上手要难一点,主要可能是因为规则实在太复杂了,但只要吃透了规则,题目本身的推理难度并不算很高。
Vita哥哥在入门级题目上基本没遇到什么困难,但是到了中级之后,由于一下子多了很多要素,某些题目上显得稍微有点吃力,其中的一个难点就是检查点的用法。检查点的作用是提供下一步要走到的目标,有了目标,才能规划路径,明白这个道理之后,解题就变得顺利多了。
而到了高级题目,我感觉反而比中级要顺,可能是因为到了这个阶段他已经把复杂的规则都吃透了,而且学会了回溯以及做分叉标记,于是高级题目他都能在只需要很少帮助的情况下自己完成。而专家级题目由于增加了一辆火星车,对于逻辑推理的要求要更高一些,但从Vita哥哥的表现来看,我感觉难度也还算好,虽然比高级题目需要更多一点帮助(主要是提醒他两辆火星车路线的推理难度可能不一样,要根据线索去评估一下),但基本上没遇到卡壳的情况,最后的第40题花了大约20分钟,也顺利完成了。
陪玩心得:
这款游戏需要频繁的画线和擦线,有些孩子(比如我家Vita哥哥)对这种工作表示厌倦,而且这种工作也确实会打断思路,所以画线擦线的事家长可以代劳,只要孩子说出正确的画法就好。
运行程序的过程是这款游戏的精髓,最好让孩子在运行的时候说出每一步的走法,尤其是遇到判断和计数器检查的时候。说明书上建议运行的时候由一个人说出命令,另一个人来移动火星车,我觉得这也是一个好办法。
检查点是解题的重要线索,不但能帮你判断目标,还能帮你判断什么时候该跳出循环(比如上面的第40题);回溯是解题的重要方法,做分叉标记能帮助你更好地使用回溯。
//CODE系列之3:Robot Repair
终于玩到最后一款啦,这款的名字叫Robot Repair,名字很直白,就是修理坏掉的机器人,可是修机器人怎么搞成桌游呢?还是先打开盒子看看里面有些啥:
这次的看起来还好,没有上一款那样多到抓狂的部件,左上角是谜题册,右上角是说明书和答案,左下角是解题用的电路板,右下角是一大堆小牌子,绿色的是TRUE,背面是红的的FALSE,黑色的代表电池,下面各种颜色的写着ON,背面是OFF。
这个怎么玩?
和前两款游戏一样,官方也发布了电子版的说明书(http://www.thinkfun.com/wp-content/uploads/2017/07/Code3-1903-Instructions.pdf),有兴趣可以去看看,在这里我还是尝试给大家简单解释一下哈。首先看最简单的题目1:
这款游戏的题目要和相对应的电路板放在一起用,你的任务就是在电路板上写有数字的格子安装电池,打开(ON)其中某些线路的电源开关,使得整个电路的状态同时满足题目中规定的全部条件。
什么?看不懂?我觉得我也没看懂。好吧,咱们实际操作一下。
这道题中规定的条件是打开黑色、蓝色、红色和绿色的线路,这4个条件必须同时满足,也就是说,这4条线路必须同时处于打开(ON)状态。
那么电池怎么个装法呢?只要一条线路上面存在电池,这条线路就打开了,题目规定我们只能使用2个电池,于是我们可以在3号格子放一个电池,同时打开黑色和红色线路,然后在8号格子放一个电池,同时打开蓝色和绿色线路,这道题就解完了。
看过之前两款游戏的套路之后,你肯定知道这款游戏没那么简单,后面还有很多幺蛾子对吧?没错,后面的幺蛾子就是,题目规定的条件不是简单的罗列,而是需要进行布尔逻辑运算,看这个:
吓尿了吗?你看,这才只是入门级的题目……好了我来解释一下,这里面出现了两种逻辑运算,一种是OR(或)运算,一种是NOT(非)运算,学过电路的大概都知道逻辑门,没错就是这种玩意儿了。这个该怎么算呢?NOT比较简单,就是把后面的条件反过来就行了,比如第1行第2个条件(NOT Yellow)就代表黄色线路关闭(OFF)。OR的意思是几个条件里面只要至少一个条件成立时就成立,比如第2行第1个条件(NOT Green OR Blue)就代表“绿色线路关闭”和“蓝色线路打开”这两个条件之中,至少有一个成立即可。其他包含3个条件的OR也是一样的,其中至少有一个成立就行了。
大家可能还注意到,整个条件表的左上角有一个很大的AND(与),它表示所有条件必须全部成立,也就是我们在游戏目标中说的那个“同时满足题目中规定的全部条件”。AND是整个游戏的全局逻辑条件。
所以这种题怎么解呢?基本思路是,先看确定的条件,比如上面的Purple和NOT Yellow,然后再根据这些条件推理出其他条件,遇到无法直接推理的就做假设尝试,接下来根据所有推出的条件在电路板上放上相应的ON和OFF牌子,最后根据这些牌子来摆放电池。这个过程实在太复杂了,所以还是让Vita哥哥拍了一个实战视频,虽然其实他讲得也不怎么清楚吧……
https://v.qq.com/txp/iframe/player.html?vid=u0535n17pcj&width=500&height=375&auto=0
已经感觉晕晕的?别忙,整个游戏里面包含的逻辑运算种类当然不止这些,除了AND、OR、NOT之外,这款游戏还包括IFF(当且仅当)、XOR(异或)、NAND(与非)、NOR(或非)这些逻辑运算。为了让大家感觉更加晕晕的,我来画一张表:
上面这张表在逻辑运算中叫真值表(truth table),其中T表示真,F表示假。以OR为例,两个输入值(P和Q)只要至少有一个是T,则P OR Q就是T,只有当两个都为F时,P OR Q才为F。只有把这个表搞清楚了,这个游戏才能玩下去,呵呵……
孩子能学到什么?
这款游戏的主题是Boolean Logic(布尔逻辑),所谓布尔逻辑的基本内容就是我们上面贴的这张真值表了。
布尔逻辑运算在真正的编程中是非常重要的,因为我们在编程的时候经常要根据不同的条件进行判断,然后执行不同的逻辑,而条件判断使用的就是布尔表达式。
举个例子,对于一个红绿灯,如果我们需要在红灯的时候停下,那么我们实际告诉计算机的是:如果(红灯亮)为True,就停下。括号里面的内容就是布尔表达式,我们也可以管它叫一个命题(statement)。
如果我们说,红灯或者黄灯亮都要停下,那么就是:如果(红灯亮 OR 黄灯亮)为True,就停下。而我们知道红绿灯只有三种状态,那么上面的逻辑也可以说:如果(NOT 绿灯亮)为True,就停下。
这种逻辑思维的能力,不仅对编程有用,对于分析和解决任何问题都是非常重要的。
除了条件判断之外,布尔逻辑运算更是计算机进行各种计算的基础。我们知道计算机是用二进制来进行运算的,二进制的每一位(比特)都只有0和1两种状态,如果我们将0和1对应False和True,那么布尔逻辑运算就可以等价为数值运算。事实上,计算机里的数值运算就是利用布尔逻辑运算(逻辑门)来完成的,比如说二进制的加法就是用一个AND运算和一个XOR运算来完成的。因此,掌握布尔逻辑运算也可以帮助孩子更好地理解计算机的工作原理。
这套游戏解题的过程是比较经典的逻辑推理过程,即通过已知条件和逻辑关系一步一步地推出其他条件,从而得到最终的解。
其实这个过程和我们学习数学时做证明题的过程是非常类似的。我们说数学能力绝不能等价于计算能力,其实有很多数学家都不善于计算,数学能力应该更偏重于逻辑推理能力,因为数学本身就是一个严密的逻辑体系。
很多孩子小学时数学成绩很好,到中学就渐渐不行了,主要是因为中学数学已经基本脱离了计算,逐渐进入推理和证明的阶段了。
因此,我认为这款游戏对逻辑推理能力的锻炼,也有助于培养真正的数学能力。
这个难不难?
这款游戏的难度在于逻辑这个东西太抽象了,需要孩子的抽象思维能力达到一定阶段之后才能驾驭它,不然看见那张真值表直接就蒙圈了。
大概Vita哥哥在抽象思维这方面还算强吧,当然也和他在其他编程游戏中接触过布尔逻辑有关系,我觉得这款游戏他玩起来基本上没什么难度,比前两款游戏的表现似乎都更好一些,高级难度的题目也基本上可以自己推理、做假设、解题。专家级的题目主要是多了两个新的逻辑运算(NOR和NAND),这两个逻辑运算平时很少见到,其实就是把OR和AND反过来,只要理解了之后也没什么难度,后面无非就是需要做假设的可能性数量比较多一些,只要有耐心都问题不大。
哈哈,不过对于孩子来说,既烧脑还需要耐心的东西应该还是相当有挑战的吧。
如果孩子觉得解题的过程太复杂,和前两款游戏一样,这款游戏也可以反过来玩。也就是先按照答案把电池在电路板上摆好,然后让孩子根据电池的位置先确定每条线路的开关状态,然后再根据这些状态判断题目中给出的条件的真假,并根据逻辑运算关系确定每一组条件的真假。通过这个过程,孩子也能够学会布尔逻辑运算的规则,等到吃透这些规则之后,就可以尝试自己解题了。
陪玩心得:
逻辑推理是这款游戏的精髓,而且推理的过程比结果重要,尽量引导孩子说出每一步的推理过程,一定要注意推理当中每一步逻辑的严密性,只有当没有足够的已知条件继续推理时,才能做假设。
对于没接触过逻辑运算的孩子,可以尝试通过一些具体的例子来说明NOT、AND、OR这些逻辑运算的意义,比如红绿灯就是一个不错的例子。
对于年龄稍大,有一定逻辑思维能力的孩子,可以引导他们观察和计算布尔表达式之间的等式关系,比如:P NOR Q = NOT (P OR Q) = (NOT P) AND (NOT Q),以及给他们讲一讲如何通过逻辑门的组合来计算二进制加法,帮助他们发现逻辑运算的更多奇妙之处。
总结一下这三款玩具
ThinkFun的这三款//CODE玩具,设计得非常科学和用心,可以说是诚意满满,对得起ThinkFun的招牌。下面说说我的推荐理由吧:
这三款游戏的内容和玩法完全不重复,涵盖了包括模式识别、过程构建、控制流程、逻辑运算等对于学习编程非常重要的要素,如果吃透了这三款游戏,学编程必定事半功倍。此外通过解题的过程还能够锻炼孩子的逻辑推理、专注力等关键能力。
难度配置合理,入门的题目非常简单,容易上手,而高级的题目又非常有挑战性,如果不是像我家Vita哥哥这种为了写评测突击填鸭的话,一盒玩具还是能玩上很久的。
一物多玩,对于年龄较小又没接触过编程的孩子来说,可以采用变通的玩法(详见我在每款玩具里的说明),降低门槛,作为编程和逻辑思维的启蒙。
和其他学习编程的电子产品不同,//CODE系列是不用电的桌游,不但打消了很多家长对电子屏幕的顾虑,而且相比电脑、机器人这些东西,价格便宜不知道多少倍了。
下面再说几个需要注意的问题:
玩具的适用年龄都是8岁+,但是其中简单的题目,特别是On The Brink那款,对于更小一点的孩子来说也适用,有兴趣的话不妨试试看。
虽然官方没有刻意强调这三款游戏的顺序,但我建议按照上面给出的顺序来玩,因为这三款玩具的抽象程度是按顺序递增的(虽然抽象程度不代表难度),第一款On The Brink是规则最简单最容易上手的(Vita哥哥甚至不需要看说明书就会玩),而第三款Robot Repair则是最抽象的,需要把所有规则都搞懂才能玩起来。
和其他桌游一样,由于一切都是全手动的,而且规则的设置又比较复杂,需要家长花时间陪玩,而且需要引导孩子的思路(详见对每款游戏的说明)。
这套玩具培养的是编程的思维方式,尽管思维方式是编程的基础,但除了思维方式之外,编程还需要其他一些技能,比如学习编程语言、数据结构和算法,这些内容往往无法通过单纯的玩游戏来学习。如果发现孩子对这方面感兴趣,不妨继续深入学习吧。
好了,祝大家玩得开心,Happy Coding!
感谢订阅 “小花生网”
和你分享世界上先进的教育资源和方法
周一:英文原版新书开团
周二:话说思维和方法
周三:怎么阅读,怎么学英语
周四、五:教育思考和实践
周六、日:美好生活画报、热点讨论