【独家】如何给六岁小孩解释编程
难度:高(我自己的女儿在其中)。
有不少人分享过他们关于这项任务的点子——你可以在Stack Overflow上找到许多非常有趣的例子(比如说这个http://dwz.cn/5U0UvO)。很多点子的出发点都是展示计算机有多么愚蠢,例如需要很精确地告诉计算机做什么、如何做。这些点子确实很有趣,但是我怀疑课后孩子们是否能真的理解一点儿编程方面的知识。
如何做一次成功的presentation呢,我的观点是:
用问题和画画吸引孩子们。我在现场使用的画纸非常大(用的挂纸板),我一边说一边画——顺便说下,这是个让小孩子保持积极性的好法子(他们玩得很高兴,笑话程序员笔下的稻草人和小猪佩奇不长这样,现场充满了笑点)。我忘了拍现场照片,但是我只要再画一遍你就能明白我的意思。
在孩子们已有知识的基础上讲解(YouTube, 笔记本,平板,DVD)。现在每个孩子都在YouTube上看动画片、在平板上玩游戏、观察父母在笔记本前工作。他们知道电影是保存在CD或者DVD上,智能电话和平板电脑是类似的东西(说到游戏和电影时)。
我从一个基本的问题开始“谁知道程序员是干什么的?”由于孩子们昨天已经讨论过这个问题,此刻他们有一些想法一点也不奇怪。然后我告诉孩子们我自己的定义:“程序员是写计算机程序的人,他们会用特定的语言告诉计算机该做什么。程序员还懂很多关于计算机的东西。”
然后我画了一个工作中的程序员。
接下来是讨论计算机。所有的孩子开始讨论他们父母的笔记本电脑(孩子们一遍又一遍提到同样的事情真的很可爱)。讨论了一会儿之后,我打断他们,指出在各种地方有很多计算机——例如智能手机、手表、还有一些在汽车和电梯里。我把每个提到的东西都画下来,并且用几句话讨论了计算机在各种情况下应用在哪里。
我还问孩子们觉得天气预报是怎么出来的(一个聪明的孩子回答“卫星知道第二天天气是啥样”),然后告诉他们计算机是在成千上万个测量设备采集来的数据的基础上计算预测的。
随后我把话题切换到计算机程序上,我告诉孩子们计算机之所以能做很多事,是因为程序会指引它们做某个事情。
我说到YouTube,因为孩子们熟悉Youtube。我从画孩子们都熟悉的UI开始。
我问孩子们YouTube上有多少电影。不少孩子困惑了,但有几个喊道“百万”或者“无穷”。我问他们有没有可能所有的电影都放到一张盘里,然后画了许多光盘问道:“你告诉YouTube要看某集小猪佩奇后会发生什么,它是怎么找到正确的磁盘的呢?”孩子们沉默了,于是我画了个数据库并快速描述了它的作用。
我想向孩子们传达这样的一种理念,即他们看到的只是冰山的一角,程序员负责的事情远比这个要多。我解释了程序员是怎么处理如下不同的事情的:
保护电影,防范坏人(“如果有人想改变数据库,你看不了小猪佩奇,只能看到足球赛时将会发生什么”——可怕的沉默)
备份(“如果一张盘坏了会发生什么?你就再也不能看小猪佩奇里小猪爸爸尝试挂一幅图的那一集了”——又是一阵可怕的沉默)
这是个提醒孩子们编程是团队工作的好时机。程序规模庞大而且还涉及到不同领域的知识,这就需要许多人参加到程序编制中。在这一点上,我更新了第一幅图,加上另一个程序员,这样就有两个坐在一起的程序员了。
下一个话题是计算机如何工作——当然阐述得比较粗糙。我所能告诉他们的是:
我主要讲解了处理器,告诉孩子们它用的是一种有趣的语言,只包含0和1。我假装用一种只有A和B的语言说话,孩子们和我玩得很开心。然后我解释了程序员们创造出程序语言就是为了能更方便地和处理器对话。
接着我讲解了最简单的程序语言的例子(使用一些伪代码)。我想再给孩子们多讲一些内容,但感觉他们开始走神了,所以没来得及讲循环语句。
课程结束前,我把之前讨论过的符号又画了一遍。我一边画一边问“这是什么?”、“关于这个你记住多少?”之类的问题。这个环节效果不错。
其他点评,做什么和不做什么,小贴士和技巧:
比我预想的要更有趣!我很认真对待这件事,做了精心的准备,而且得到了回报。孩子们都很感兴趣,我觉得他们能在这个过程中记住一些知识。
讲课中画图是个正确的做法,它能抓住孩子们的注意力,而且我能通过指着某个图,提醒他们几分钟前讨论过的内容。
做好孩子们一直不停地重复的心理准备。当我问他们知道有什么语言时,一个家伙举手说:“我会一点英语”,他的同伴跟着重复同样的话,接着一个又一个,组里其他的人一个个地加入(有一些是同时加入的)。所有人都说了一遍一模一样的关于英语的话。如果你说到他们喜欢的话题,例如动画片,情况会变得更混乱。
讲课过程中我觉得没必要纠正孩子们的一些问题——例如,只要孩子能理解YouTube把动画片保存在DVD上,而且当需要看一部片子时,计算机会选择正确的碟片并且播放,我觉得这就非常好了。我想让他们理解搜索和数据库是什么样的概念,而不是技术细节。我感觉这个才是个正确的方法。
本文作者:Tomek Kaczanowski 本文来自云栖社区合作伙伴“数据派THU”,了解相关信息可以关注“数据派THU”微信公众号
你能用几句话解释面向对象?(下) 一种基于面向过程的新的编程思想,顾名思义该思想是站在对象的角度思考问题,我们把多个功能合理的放到不同对象里,强调的是我该让谁来。面向对象最小的程序单元是类,必须先存在类的定义,再有对象,而具备某种功能的实体,称为对象。
你能用几句话解释面向对象?(中) 一种基于面向过程的新的编程思想,顾名思义该思想是站在对象的角度思考问题,我们把多个功能合理的放到不同对象里,强调的是我该让谁来。面向对象最小的程序单元是类,必须先存在类的定义,再有对象,而具备某种功能的实体,称为对象。
你能用几句话解释面向对象?(上) 一种基于面向过程的新的编程思想,顾名思义该思想是站在对象的角度思考问题,我们把多个功能合理的放到不同对象里,强调的是我该让谁来。面向对象最小的程序单元是类,必须先存在类的定义,再有对象,而具备某种功能的实体,称为对象。
练了那么多,为啥还不会编程 Python 技术已经一岁多了,持续不断地推出新知识、新技术、新技巧,不过很多童鞋存在一个疑问:学这么多编程知识、技术、技巧到底有什么用?对呀,技术日新月异,层出不穷,解决方案如雨后春笋,对于我们普通人来说,编程到底有什么用,今天我来谈谈这个问题,期望对你有所启发。
过年了,给亲朋好友解释「啥是程序员」 一年一度的春节又到了,作为程序员的你是怎么告诉亲朋好友自己日常到底是做什么工作的呢? 程序员是一个新兴的职业,我在上大学以前不了解程序员到底是做什么的,对编程语言也一窍不通,也不关心玩过的「游戏」和天天逛的「网站」究竟是怎么来的。
——Ash Maurya 如果你交给某人一个程序,你将折磨他一整天;如果你教某人如何编写程序,你将折磨他一辈子。
周末午后,我正在愉快的打着王者荣耀,五杀在即之际。女朋友拿着一本我看过的《面向对象编程》过来找我。 什么是面向对象?是要面向我写代码吗?
相关文章
- Win64 驱动内核编程-33.枚举与删除对象回调
- 2023打算半路转行,如何学编程?这些建议给你
- 如何在云计算平台使用R语言编程的快速入门指南
- 《C#并发编程经典实例》—— 转换.NET事件
- 少儿学编程系列---如何使用turtle画鸡蛋
- CSDN日报20170817——《如果不从事编程,我可以做什么?》
- 并发编程 - synchronized的特性与底层原理以及锁的状态和膨胀升级过程
- Java高并发编程基础三大利器 - Semaphore
- 编程小技巧9-如何生成没有水印的代码图片(IDEA carbon-now-sh插件使用教程)
- 《树莓派Python编程入门与实战(第2版)》——1.5 决定如何购买外围设备
- 《C++面向对象高效编程(第2版)》——1.12 OOP 范式和语言
- 《C++面向对象高效编程(第2版)》——2.21 确保抽象的可靠性——类不变式和断言
- 《C++ 黑客编程揭秘与防范》——1.1 编程语言和开发环境的选择
- 《Python核心编程(第二版)》——1.9 练习
- SwiftUI 组件技巧大全之如何以编程方式滚动到一行
- 编程范式是人类思维方式的投影-代表了程序设计者认为程序应该如何被构建和执行的看法
- 并发编程是对真实世界的模拟
- 通俗解释什么是响应式编程?-响应式编程就是因为我们得“响应”这些事件而得以命名
- 在vscode中如何使用less编程
- 《PostgreSQL服务器编程》一一1.9 关于缓存
- 图论期末大作业编程题(如何判断一个4连通4正则图为无爪、无K4图)
- blender 能实现哪些功能? 能干啥? 编程 和 建模 动画 的结合。
- Java并发编程(三)Thread类的使用
- Java多媒体编程应用
- Hadoop MapReduce编程入门案例
- Vue学习第31天——编程式路由导航5种方法详解及案例练习(与声明式路由导航对比)
- C#基础之并行编程