如何向十岁以下的朋友解释编程?这个说法碉堡了!
苹果公司于旧金山圣何塞召开第28届WWDC全球开发者大会。在大会上,被库克点名邀请的年仅10岁的小男孩获得了空前关注,再看他短小精悍的童年经历,简直羡煞旁人。
这名10的男孩叫Yuma Soerianto,来自澳大利亚墨尔本,是今年苹果全球开发者大会最年轻的参会者。据Yuma Soerianto自己介绍,他6岁开始编程,目前已设计5款APP。据媒体公开报道,Yuma Soerianto从六岁开始从网上在线学习编程内容,并修完了斯坦福大学的编程课。四年时间里,他为苹果商店开发了四款应用,其中包括天气鸭(Weather Duck)--一款面向儿童的天气应用。
被问到最终梦想是什么,Yuma Soerianto一开始笑称自己想成为蝙蝠侠,后言归正传表示自己想创造可以改变世界的app,也想教别人编程。为此,Soerianto 还建立了一个 YouTube 频道,名字就叫 Anyone Can Code(人人都可以编程)。在这里,他从头到尾教大家如何制作一个完整的app。该频道目前拥有五百多位订阅者。他表示,有意思的是,这是一个针对小孩子而开设的 YouTube 频道,结果发现来留言的似乎都是些"大孩子"。据悉,在发布会现场,库克在会面奖学金的获得者时,率先走到了Soerianto 面前,并与他交谈了几分钟,而Soerianto也向库克介绍了自己的APP,库克对此非常感兴趣。
那么怎么给没接触过编程的小朋友介绍呢?我首先从最基本的问题开始,“谁知道程序员是做什么的?”我告诉了他们我自己的定义:“程序员是编写计算机程序的人,他们知道如何告诉计算机应该做什么。程序员非常了解电脑。”
然后,我画了一个正在工作的程序员。
下一步是谈论电脑。告诉他们:在很多不同的东西里面都有电脑,例如智能手机和手表,还有汽车和电梯。我把提到的每个东西都画了出来,并用几个字来概括在什么情况下该用哪种电脑。我又问他们天气预报是如何实现的(一个聪明的孩子回答道:“卫星知道第二天的天气”),然后告诉他们是电脑根据数千个测量设备提供的数据计算出预测结果。
我打算把话题转移到电脑程序上来,所以,我提到,电脑之所以会干活都要归功于程序,是程序命令电脑去做某些事情。
我问,YouTube上有多少部电影。一些小朋友开始迷糊了,但也有人喊道:“几百万个”或“无限个”。所以,我又问,是否有可能把所有的电影都放在一张光盘上呢。然后我画了很多碟片,并问道:“如果你告诉YouTube要观看小猪佩奇的某一集,它就能找到对应的光盘,这是如何做到的呢?”他们都沉默了,所以我画了一个数据库,并迅速描述了它的角色。
我要给他们灌输这样一个观念:他们看到的只是一个冰山一角,而程序员负责了更多的东西。我向他们解释了我们是如何处理各种各样的事情的:
保护电影免受坏人的破坏(“*如果有人修改了数据库会怎么样,你会看到足球赛,而不是小猪佩奇?” 孩子们用沉默回答了我)
制作备份(“*如果光盘坏了会怎么样?那么你永远都无法再看到小猪佩奇里猪爸爸挂照片那一集了?”孩子们再一次沉默了)
让YouTube可以在不同的设备上播放(智能手机,平板电脑,笔记本电脑)
展示广告
计算观看每部电影的人数
显示类似电影的缩略图等
这时是告诉他们编程是团队合作的最好的时机了。程序很庞大,需要具备不同领域的知识,需要很多人参与进来创造。在这一点上,我更新了第一幅画,添加了另一个程序员,让两个人坐在一起。
下一个主题是计算机的工作原理,当然是非常粗略的。我是这样告诉他们的:
鼠标和键盘是人们用来给计算机下命令的
电脑屏幕用于显示电脑的响应
每台电脑里面都有一个处理器(你可以把它看成是电脑的大脑)
还有一些磁盘供电脑存储信息
接着,我把重点放在处理器上,告诉他们它使用一种只有0和1组成的非常有趣的语言。然后,当我假装用一种只有A和B的语言说话时,大家都笑得很开心。接着,我解释说,程序员使用编程语言是为了能够更容易地与处理器进行交流。
随后,我给他们展示了最最简单的程序语句的例子(使用一些伪代码)。我想给他们展示更多的东西,但我觉得他们的注意力开始不集中了,所以我甚至没有讲for循环。
为了结束我的“演讲”,我再一次画了一些符号来总结我们讨论的东西。我一边画一边问问题“这是什么?”和“你还记得有关这个的一些什么吗?”诸如此类。一切进行得很顺利。
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(68)-微信公众平台开发- 资源环境准备
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(70)-微信公众平台开发-成为开发者
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(70)-微信公众平台开发-成为开发者
- 一口价!3杂7bc.com16万易主
- Silverlight初级教程-动画
- WCF技术剖析之十:调用WCF服务的客户端应该如何进行异常处理
- [原创-总结]WCF技术剖析系列总结篇
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(63)-WebApi与Unity注入
- 分布式高并发下mysql数据库读写分离
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(64)-补充WebApi与Unity注入-配置文件
- 身临其境的建筑体验:3D打印和人工智能相结合的“星形胶质细胞”
- C语言真的太强大了,C几乎无处不在!
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(65)-MVC WebApi 用户验证 (1)
- 具有依赖关系的并行操作执行
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 8,模型的训练
- 在腾讯云上部署科学计算软件Amber
- 手把手教你搭建一个灰度发布环境
- Kibana: 如何使用 Search Bar
- 「PHP」以nginx、php-cgi为例,把nginx、php-cgi安装为Windows系统服务
- 聊聊dubbo-go的GenericFilter
- 知新 | koa框架入门到熟练第二章
- JVM学习二
- 微信小程序对接云开发录音文件识别nodejs sdk
- 利用python读取WORD文档中的创建者信息
- LeetCode-2.两数相加 使用链表加法实现
- Spring学习(2):Spring Bean管理(上)
- 聊聊dubbo-go的TpsLimitFilter
- spring,springBoot事件
- LeetCode-3.无重复字符的最长子串 利用一个整形数组+ASCII码实现滑动窗口