2013年,当时的美国总统奥巴马应邀为美国在线编程教育网站code.org举办的“编程一小时”活动做的宣传片。为了呼吁美帝人民学习编程知识,奥巴马甚至还亲自挽起袖子写了一段代码,这也让他成为美国历史上第一位会写代码的总统。奥巴马还号召编程要从娃娃抓起。

但其实,我想说的是,第一位号召编程要从娃娃抓起的国家领导人(我们不能叫总统)是我们小平爷爷。1984年,邓小平在上海看了当时的程序员们演示了计算机代码,就发出了“计算机的普及要从娃娃抓起”的号召(当时可能都还没编程这一说)。而这个号召直接就促成了1984年第一届全国青少年计算机程序设计竞赛(简称NOI)的举办,当时有8000多人参加。小平爷爷看上海中学生演示电脑代码:

第一个号召“学编程从娃娃抓起”的不是奥巴马,是邓小平!-【少儿编程教育网】

NOI可以说在当时非常受关注,重视到什么程度呢?中央的领导来给获奖者颁奖。这个和奥巴马直接给“编程一小时”活动站台差不多。从此每年一次NOI活动,吸引越来越多的青少年投参加。很多计算机界的大牛们都是从这个竞赛中出来的。

第一个号召“学编程从娃娃抓起”的不是奥巴马,是邓小平!-【少儿编程教育网】

看到这里是不是觉得我们国家很牛逼。然而为什么1984年国家领导人就开始提倡的编程教育,却并没有形成风潮啊?

其实答案很简单啊!一是因为没钱。大部分家庭连个自行车都买不起,更别提买台电脑了。二是编程语言太难。即便是买得起计算机,普通人也弄不懂。编程语言是工程师设计出来的,并不是自然语言,要学习语法要学算法,不是那么直观的,不适合孩子学习,门槛太高,够不着。三是没有师资。教授计算机编程的师资力量缺乏。如果要在小学普及编程教育,即便在今天都依旧很困难。我们正在研究如何解决这一难题。

到1995年后,个人家用电脑开始普及了,但孩子学编程这事仍旧无法普及。我是初中的时候被老师选去计算机兴趣班的,当时只有学习好的人才有机会摸计算机。自认为也是学霸一枚,但当时学Basic也是学得一脸懵逼,费劲得很。直到大学选了计算机专业后,我才开始正式学写代码。

回溯我自己的经历,也是想告诉大家,孩子学写代码这事不靠谱(比我智商高的例外)。但为什么我现在又在推广儿童编程教育呢?

这还得归功于技术的发展。2007年,美国麻省理工学院“终身幼儿园”项目负责人Mitchel Resnick教授和他的团队编写了一款Scratch编程软件,这款编程软件通过拖动程序积木块来完成编程。可视化积木块编程降低了语法难度,直观性好很多,容易理解和上手。这意味着孩子即使不会拼写单词,不会打字,也可以学习计算机的基础知识,完成编程思维的训练。这款软件如今已经成了世界上最风靡的儿童编程语言。

第一个号召“学编程从娃娃抓起”的不是奥巴马,是邓小平!-【少儿编程教育网】

看完这个发展的历程,对于该不该让孩子学编程这个论题已经可以翻过去了。30多年前,国家已经在提倡了,只不过是条件限制无法普及。30多年后,条件成熟,还不让孩子学编程,我觉得这是家长自身知识储备局限的问题了

曾经还有家长在群里说学编程有什么用?我不想让孩子成为码农。我觉得“学编程有什么用”这个问题还是很值得讨论的。

当我们在学编程时我们在学些什么?

   

没有学过计算机的家长确实很难理解孩子学编程有什么用。关于这个问题,要分两个方面回答。一方面是未来技能的需求。我不赘述,简单说,孩子不懂点编程,以后工作的选择面会很小。就跟我们现在不会英语,没法和外国人交流一样。

我想说说另一方面,学编程给孩子的思维带来的益处。苹果创始人乔布斯在1995年的访谈中提到的那样“学习编程教你一种新的思考方式”

第一个号召“学编程从娃娃抓起”的不是奥巴马,是邓小平!-【少儿编程教育网】
第一个号召“学编程从娃娃抓起”的不是奥巴马,是邓小平!-【少儿编程教育网】
第一个号召“学编程从娃娃抓起”的不是奥巴马,是邓小平!-【少儿编程教育网】

学编程最大的好处其实是可以对人的思维方式进行训练。它是一个对思维完整性和逻辑性进行训练的过程,业内称之为计算思维。

倡导计算思维的美国计算机科学家、卡内基梅隆大学教授周以真说:“计算思维是一种普适性的思维方法和基本技能,所有人都应该积极学习并使用,而非仅限于计算机科学家。每个孩子的分析能力是科学、技术、工程和数学学习的重要组成部分。”

计算思维能运用在我们的日常生活中。因为写一个计算机程序,跟做一道菜,完成一个项目,管理一家公司,甚至于治理一个国家,本质上都具有相同的目标——就是要解决问题。计算思维可以从以下几个方面来阐释:

1、框架设计思维

写一个软件,需要先做设计,搭架构;写一段程序,也需要有个大体框架,这种高屋建瓴统筹规划全局的思维几乎在任何的学习、工作项目中都要用到。

2、大问题拆解思维

一个复杂的问题,看起来千头万绪没有思路,编程者需要把它拆解成一个个简单的问题,再逐个击破。这跟我们生活中很多事情是类似的,比如组织一场生日派对,听起来是个很庞大的任务,但只需要“拆解”,就变得简单多了,例如确定派对要求的人数,需要采购的物品,派对上每个环节需要做什么?

3、函数思维

编程者通常会把那些将会被重复使用到的运算过程先编写并储存为函数,需要时就直接调用,根据调用的场景、前提条件不同相应地改动输入参数即可,不用每次都重新编写。我们平时工作、生活中经常会用的模版,其实就是应用了“函数思维“,需要时直接拿出来用就好,不用每次都从头开始,”白手起家“

其他还有很多,比如抽象,循环,并发……在这里就不一一列举了。总之,最重要的,具有计算思维的人,能够将一个问题清晰具体地描述出来,并且通过收集、分析数据来理解和思考问题,并将问题的解决方案表示为一个信息处理的流程。简单说,培养孩子的编程思维就是培养他理解问题、找出解决问题路径的能力。

现在网络上有很多免费学习Scratch的资源,家长若是肯花点时间,绝对不会比报个一千、两千的线下班学的效果差。编程教育本质是希望孩子能学会自己探索,程序也没有一个固定的标准答案,更强调创造性、简洁、优美,它的实现有很多种方式,每个人的解决方案可能都不一样