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

简介:

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


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

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


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


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


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


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


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



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


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



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


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


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



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


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

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

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

  • 播放广告

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

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


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


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


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

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

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

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



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


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



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



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


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

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

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

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

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

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

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


原文发布时间为:2017-05-05 
本文作者:Tomek Kaczanowski
本文来自云栖社区合作伙伴“数据派THU”,了解相关信息可以关注“数据派THU”微信公众号
相关文章
|
JSON Java Maven
如何批量查询自己的CSDN博客质量分
如何批量查询自己的CSDN博客质量分
625 0
|
7月前
|
缓存 负载均衡 API
深入解析电商支付API的性能瓶颈与解决方案
在电商快速发展的当下,支付API的性能直接影响用户体验与交易成功率。本文深入分析支付API在高并发下的性能瓶颈,并提供包括CDN加速、异步处理、缓存优化、数据库索引、负载均衡等在内的系统性解决方案,助力开发者提升支付效率,保障交易流畅稳定。
174 1
|
安全 Java API
Java 17新特性让你的代码起飞!
【10月更文挑战第4天】自Java 8发布以来,Java语言经历了多次重大更新,每一次都引入了令人兴奋的新特性,极大地提升了开发效率和代码质量。本文将带你从Java 8一路走到Java 17,探索那些能让你的代码起飞的关键特性。
439 1
|
语音技术 开发工具 图形学
Unity与IOS⭐一、百度语音IOS版Demo调试方法
Unity与IOS⭐一、百度语音IOS版Demo调试方法
|
人工智能
开启歌词创作之门:写歌词的技巧和方法详解,妙笔生词AI智能写歌词软件
歌词创作是通往音乐灵魂深处的大门。本文介绍了一些实用技巧,如借助《妙笔生词智能写歌词软件》的AI功能,捕捉生活中的灵感,确定主题,合理安排歌词结构,运用生动的语言和修辞手法,确保韵律和节奏,帮助你轻松开启创作之旅。
|
监控 数据中心
|
缓存 JavaScript
onActivated 生命周期的使用和介绍
onActivated 生命周期的使用和介绍
834 3
|
缓存 边缘计算 负载均衡
如何理解CDN?说说实现原理?
CDN(内容分发网络)是提升网络访问速度的关键技术,通过在全球或全国范围内设立边缘服务器,将内容缓存到靠近用户的地方。当用户访问网站时,DNS返回CNAME,引导用户连接到最近的CDN节点,而非直接到源站。CDN的负载均衡系统依据用户位置、运营商、节点负载等因素选择最佳边缘节点提供服务,而缓存系统则存储常用资源以提高命中率,减少回源请求。高命中率使得CDN能显著提高网站性能,降低网络拥塞。
4803 0
|
JSON 算法 数据安全/隐私保护
聊聊 JSON Web Token (JWT) 和 jwcrypto 的使用
本文介绍了 JSON Web Token (JWT) 和 Python 中的 `jwcrypto` 库。JWT 是一种用于安全传输信息的紧凑型令牌,常用于身份验证。它由 Header、Payload 和 Signature 三部分组成,具有紧凑性、自包含和安全性等特点。`jwcrypto` 库提供了 JWT 的生成、验证、加密、解密及签名功能。通过该库,可以使用 RSA 等算法创建和验证 JWT,同时管理密钥对。安装 `jwcrypto` 可用 `pip install jwcrypto`,并示例展示了如何生成签名 JWT 和密钥对。
聊聊 JSON Web Token (JWT) 和 jwcrypto 的使用
|
机器学习/深度学习 数据可视化 PyTorch
OneFlow深度学习框架介绍:新手快速上手指南
【4月更文挑战第12天】OneFlow是一款高性能的深度学习框架,由一流科技公司研发,以其数据流编程模型、动态图执行和高效分布式训练等功能脱颖而出。其易用性、卓越性能和强大的分布式训练能力使其在AI领域备受关注。新手可以通过简单的安装和基础程序快速上手,利用OneFlow的Module构建模型,结合损失函数和优化器进行训练。此外,OneFlow支持ONNX模型导入导出、TensorBoard可视化及与其他Python库集成,助力无缝对接现有生态。深入了解和实践OneFlow,可提升深度学习开发效率。
588 2