【独家】如何给六岁小孩解释编程

简介:

任务:给一群六岁的孩子解释你的工作内容。


难度:高(我自己的女儿在其中)。

640?wx_fmt=png&wxfrom=5&wx_lazy=1

有不少人分享过他们关于这项任务的点子——你可以在Stack Overflow上找到许多非常有趣的例子(比如说这个http://dwz.cn/5U0UvO)。很多点子的出发点都是展示计算机有多么愚蠢,例如需要很精确地告诉计算机做什么、如何做。这些点子确实很有趣,但是我怀疑课后孩子们是否能真的理解一点儿编程方面的知识。


如何做一次成功的presentation呢,我的观点是:


  • 用问题和画画吸引孩子们。我在现场使用的画纸非常大(用的挂纸板),我一边说一边画——顺便说下,这是个让小孩子保持积极性的好法子(他们玩得很高兴,笑话程序员笔下的稻草人和小猪佩奇不长这样,现场充满了笑点)。我忘了拍现场照片,但是我只要再画一遍你就能明白我的意思。


  • 在孩子们已有知识的基础上讲解(YouTube, 笔记本,平板,DVD)。现在每个孩子都在YouTube上看动画片、在平板上玩游戏、观察父母在笔记本前工作。他们知道电影是保存在CD或者DVD上,智能电话和平板电脑是类似的东西(说到游戏和电影时)。


我从一个基本的问题开始“谁知道程序员是干什么的?”由于孩子们昨天已经讨论过这个问题,此刻他们有一些想法一点也不奇怪。然后我告诉孩子们我自己的定义:“程序员是写计算机程序的人,他们会用特定的语言告诉计算机该做什么。程序员还懂很多关于计算机的东西。”


然后我画了一个工作中的程序员。


640?wx_fmt=png&wxfrom=5&wx_lazy=1


接下来是讨论计算机。所有的孩子开始讨论他们父母的笔记本电脑(孩子们一遍又一遍提到同样的事情真的很可爱)。讨论了一会儿之后,我打断他们,指出在各种地方有很多计算机——例如智能手机、手表、还有一些在汽车和电梯里。我把每个提到的东西都画下来,并且用几句话讨论了计算机在各种情况下应用在哪里。


我还问孩子们觉得天气预报是怎么出来的(一个聪明的孩子回答“卫星知道第二天天气是啥样”),然后告诉他们计算机是在成千上万个测量设备采集来的数据的基础上计算预测的。


640?wx_fmt=png&wxfrom=5&wx_lazy=1


随后我把话题切换到计算机程序上,我告诉孩子们计算机之所以能做很多事,是因为程序会指引它们做某个事情。


我说到YouTube,因为孩子们熟悉Youtube。我从画孩子们都熟悉的UI开始。


我问孩子们YouTube上有多少电影。不少孩子困惑了,但有几个喊道“百万”或者“无穷”。我问他们有没有可能所有的电影都放到一张盘里,然后画了许多光盘问道:“你告诉YouTube要看某集小猪佩奇后会发生什么,它是怎么找到正确的磁盘的呢?”孩子们沉默了,于是我画了个数据库并快速描述了它的作用。


640?wx_fmt=png&wxfrom=5&wx_lazy=1


我想向孩子们传达这样的一种理念,即他们看到的只是冰山的一角,程序员负责的事情远比这个要多。我解释了程序员是怎么处理如下不同的事情的:


  • 保护电影,防范坏人(“如果有人想改变数据库,你看不了小猪佩奇,只能看到足球赛时将会发生什么”——可怕的沉默)

  • 备份(“如果一张盘坏了会发生什么?你就再也不能看小猪佩奇里小猪爸爸尝试挂一幅图的那一集了”——又是一阵可怕的沉默)

  • 所以YouTube是在不同的设备上运行的(智能手机,平板,笔记本)

  • 播放广告

  • 计算观看各个电影的人数

  • 显示类似的电影有多少个赞,等等


这是个提醒孩子们编程是团队工作的好时机。程序规模庞大而且还涉及到不同领域的知识,这就需要许多人参加到程序编制中。在这一点上,我更新了第一幅图,加上另一个程序员,这样就有两个坐在一起的程序员了。


下一个话题是计算机如何工作——当然阐述得比较粗糙。我所能告诉他们的是:


  • 鼠标和键盘是用来给人们对计算机下命令的

  • 显示器是计算机做应答的

  • 每一台计算机里面有一个处理器(可以看作是计算机的大脑)

  • 磁盘是计算机用来存储信息的


640?wx_fmt=png&wxfrom=5&wx_lazy=1


我主要讲解了处理器,告诉孩子们它用的是一种有趣的语言,只包含0和1。我假装用一种只有A和B的语言说话,孩子们和我玩得很开心。然后我解释了程序员们创造出程序语言就是为了能更方便地和处理器对话。


接着我讲解了最简单的程序语言的例子(使用一些伪代码)。我想再给孩子们多讲一些内容,但感觉他们开始走神了,所以没来得及讲循环语句。


640?wx_fmt=png&wxfrom=5&wx_lazy=1


课程结束前,我把之前讨论过的符号又画了一遍。我一边画一边问“这是什么?”、“关于这个你记住多少?”之类的问题。这个环节效果不错。


640?wx_fmt=png&wxfrom=5&wx_lazy=1


其他点评,做什么和不做什么,小贴士和技巧:


  • 比我预想的要更有趣!我很认真对待这件事,做了精心的准备,而且得到了回报。孩子们都很感兴趣,我觉得他们能在这个过程中记住一些知识。

  • 讲课中画图是个正确的做法,它能抓住孩子们的注意力,而且我能通过指着某个图,提醒他们几分钟前讨论过的内容。

  • 做好孩子们一直不停地重复的心理准备。当我问他们知道有什么语言时,一个家伙举手说:“我会一点英语”,他的同伴跟着重复同样的话,接着一个又一个,组里其他的人一个个地加入(有一些是同时加入的)。所有人都说了一遍一模一样的关于英语的话。如果你说到他们喜欢的话题,例如动画片,情况会变得更混乱。

  • 有的孩子不管你做什么都会觉得无聊。他们的注意力集中时间就是比较短。

  • 认真板书——例如,他们会反对你把1写得有点像7。

  • 讲课过程中我觉得没必要纠正孩子们的一些问题——例如,只要孩子能理解YouTube把动画片保存在DVD上,而且当需要看一部片子时,计算机会选择正确的碟片并且播放,我觉得这就非常好了。我想让他们理解搜索和数据库是什么样的概念,而不是技术细节。我感觉这个才是个正确的方法。

  • 讲课时间25分钟,不能再长了。


原文发布时间为:2017-05-05 
本文作者:Tomek Kaczanowski
本文来自云栖社区合作伙伴“数据派THU”,了解相关信息可以关注“数据派THU”微信公众号
相关文章
|
4月前
|
C语言
c语言编程练习题:7-13 后天
如果今天是星期三,后天就是星期五;如果今天是星期六,后天就是星期一。我们用数字1到7对应星期一到星期日。给定某一天,请你输出那天的“后天”是星期几。
34 0
|
4月前
|
C语言
|
10月前
|
存储 编解码 运维
让数据说话,获得“原来如此”的答案
随着数据分析和人工智能技术的快速发展,让数据说话已经成为了一种新的趋势。数据不仅可以帮助我们发现问题,解决问题,还可以让我们获得“原来如此”的答案。尤其是在日常生活中,数据无处不在,而且我们生活中的点点滴滴都脱离不了数据,通过数据可以知道自己的消费情况,通过数据可以知道自己喜欢的电影类型,通过数据可以知道自己在日常工作中的任务进度,等等这些通过数据分析和洞察,可以让某些困惑“真相大白”。
122 0
让数据说话,获得“原来如此”的答案
|
11月前
|
JavaScript 前端开发 Python
编程中表达爱和浪漫
当涉及爱和浪漫时,一行代码可能不足以表达所有的感受和情感。因此,在编程中表达爱和浪漫的方式可能会因个人喜好和情感而异。以下是一些可能有趣或浪漫的编程示例:
82 0
|
算法 程序员 Python
考点:猴子分桃问题,程序员可以将数学逻辑思维转换为编程思维【Python习题07】
考点:猴子分桃问题,程序员可以将数学逻辑思维转换为编程思维【Python习题07】
158 0
|
C语言
C语言解决 猜凶手问题 两句话矛盾必有一真一假类问题
C语言解决 猜凶手问题 两句话矛盾必有一真一假类问题
79 0
C语言解决 猜凶手问题 两句话矛盾必有一真一假类问题
|
存储 编译器 Linux
类和对象(跑路人笔记)<完>(1)
类和对象(跑路人笔记)<完>
类和对象(跑路人笔记)<完>(1)
|
数据可视化 Python
一个关于 += 的谜题
一个关于 += 的谜题
120 0
一个关于 += 的谜题
|
存储 人工智能 算法
练了那么多,为啥还不会编程
Python 技术已经一岁多了,持续不断地推出新知识、新技术、新技巧,不过很多童鞋存在一个疑问:学这么多编程知识、技术、技巧到底有什么用?对呀,技术日新月异,层出不穷,解决方案如雨后春笋,对于我们普通人来说,编程到底有什么用,今天我来谈谈这个问题,期望对你有所启发。
137 0
练了那么多,为啥还不会编程
|
程序员
10句编程箴言 每个程序员都应该知道
导读:原文作者Kevin Pang在kevinwilliampang.com发表一篇《10 Programming Proverbs Every Developer Should Know》。译文由伯乐在线整理编译成《10句编程箴言 每个程序员都应该知道》。
1198 0