变量教学:类比与方法

伯乐在线注:本文由@anthonyxoxo 翻译自在线教育网站可汗学院CS团队的一篇博文。

在我们检查修改「入门浅谈」的过程中,我们一直在讨论关于变量教学的方法,讨论哪种类比更适合新人理解。

我们认为新手应该理解变量有以下几个方面:

  • 变量既有「名字」也有「值」。
  • 「值」可以改变(至少在JS中)。
  • 在代码中一个变量可以使用很多次。

还有一些方面,新手一开始可能不理解,但是能明白更好:

  • 变量可以保存不同大小的数据。
  • 变量有不同的类型。
  • 多个变量可以指向同样的值(尤其是有对象的情况)。

我们自己已经讨论了几种类比方式,我问过周围人他们都用哪种方式。这里总结了一下,并画简图大概说明一种类比的直观描述。其实用画图的方式来让类比更具视觉性并非必要的,但是对新手可能有些帮助。

「水桶」

现在我们在第一篇浅谈中就用的这种类比。我不喜欢,因为——我们生活中不会在水桶上贴标签,所以这种类比无助于加强理解变量被加标签并存有值的重要思想。

image02

「抽屉」、「盒子」

我们很喜欢这个类比,因为抽屉通常都会标记它装有什么内容,这个想法很好地描述了电脑屏幕后边,带有寄存器的实际情况,Kevin Henney指出「标签盒」的类比也很好的介绍了「队列(一行或一列盒子)与对象(一堆盒子)」的概念。Ikai Lan提到「盒子的尺寸可以在后面的课程中用来类比变量的类型」。

imagwqede05

「信封」

和抽屉差不多,信封通常在外面有内容(名字或者是地址),里面也有值(信纸)。一个信封可以有不同的尺寸,这样也可以很好的讲存储的数据类型。但是,地址不能很好的表述变量名,所以我更喜欢用信封来类比类似HTTP请求或者消息发送系统的概念。

imagsafwefe00

「触手」

Marjin Haverbeke在他的书《Eloquent JavaScript》的第一章中把变量描述成触手,他强调把变量看作箭头,这是个很不错的类比:「你应当把变量想像成触手,而不是盒子。变量不会包含值,而是抓着值——两个变量可以指向同一个值」。

imawqege04

「名字卡」、「名字」

这个类比侧重强调变量被命名的这一方面。你想给一个东西取个名字?那就给它贴张名字卡吧!

「像Pythonista那样编程」广泛地用图表使用这一类比,演示当你给变量重新赋值或者把两个变量赋同一个值的时候的具体细节。他们特别强调,在Python中,变量『绝对不在带标签的盒子里』。

imagesdefe01

「伪装的值」

用一种很有趣的方式描述代数变量:

『在代数表达式中,字母表示变量。这些字母其实是数字的伪装。在这个表达式中,变量是x和y。我们把这些字母称作「变量」,因为他们表示的数字是会变化的——也就是说,我们可以用很多数字替代表达式中的字母。』

伪装的概念很有趣而且看起来很好玩,他们很好地把实际的词「变量」与其含义联系起来。我们通常在编程中忘记我们的术语有多奇怪,他们的概念可以帮助初学者把词与本意连接起来。

imagwdqe03

我们该用哪个呢?

以上这些,我们希望在未来的课程中使用「带标签的盒子」这一类比,因为这一类比很常见,也涵盖了变量的很多方面。

我们会继续尝试别的方法,看看学生们的反应。与此同时,我们很愿意听取你讲授和学习变量的经验。哪种好用?哪种让你豁然开朗?哪种不好呢?

收藏 评论

关于作者:TonyRideBike

东北银在广州,新浪微博:@T0ny_Lyu 个人主页 · 我的文章 · 3

相关文章

可能感兴趣的话题



直接登录
跳到底部
返回顶部