每个人都应当懂一些编程,因为它能教会你如何思考。
——史蒂夫.乔布斯
两个月前,苹果公司刚刚开完全球开发者大会(WWDC),在这个年度盛会里,苹果公司会从全世界几千万个程序开发者中,挑选5000多名具有代表性的业界精英,共聚一堂,探讨最前沿的IT科技。但让人没想到是,这次盛会的风头竟然被一个年仅10岁的小屁孩给抢走了。他叫尤马,来自墨尔本,不仅是这次参会最年轻的程序员,还是一个一年上架5款iOS应用、拥有自己的IT公司的编程老手。库克钦点他来参加开发大会,并且对他开发的APP爱不释手,恨不得马上给他投钱…
尤马从6岁开始学习编程,7岁就完成了斯坦福大学的计算机编程课程。计算机编程里面涉及到很多他还不明白的逻辑运算和算法设计,他就会去请教从事IT研发的父亲和计算机老师,光草稿纸就用了一大摞。
开发者大会上,当有记者问尤马:“你未来想做什么?”
尤马开玩笑的说:“我要当蝙蝠侠!用高科技拯救世界!”
他说,这是个玩笑,但他真的想开发出一个改变世界的App。这是他的野心,他觉得现在自己的App只是给大家带来一些小的方便,总有一天,他会像乔布斯一样,改变这个世界……
这还只是一个刚上五年级的小学生,简直就是开了挂的人生。当我们还在课堂上学习小数乘除法的时候,人家已经开始思考怎么改变世界了。
其实,在国外,中小学生人手一台电脑或者iPad,似乎已经成为了标配。以计算机为代表的实践类课程,已经成为了国外孩子们的必修课程。
2014年,英国把“编程”列入每所学校的必修课程,这就意味着每位5岁以上的孩子都必须学习编程。随后,爱尔兰、日本、韩国、西班牙、丹麦、芬兰、葡萄牙、法国、新加坡等国家也纷纷效仿,推行全国编程教育。
在美国,每年都会举办“编程一小时”的全国性活动。去年,美国总统奥巴马亲自为“编程一小时”活动站台,他宣称世界上的所有人都应该学习编程,并称“如果我们想让美国保持领先地位,就需要年轻一代的美国人掌握这种工具和技术,它将改变我们所有的做事方式。”活动上,奥巴马习得一小段JavaScript代码,并成功地画出了一个正方形,成为美国历史上首位编写计算机代码的总统。美国现有一千万的青少年奋斗在编程第一线上,比尔.盖茨13岁开始学习VB,扎克伯格10岁开始学习Java。美国对计算机课程的重视和普及可见一斑。
反观国内,需要承认的是,国内的基础文化课程,那还是很夯实的,就连英国在前两年都来取经我们的九九乘法口诀表。但是在STEM课程和动手能力方面的培养,中国学生相较西方学生,确实有着先天的短板。
在国内,学生和家长似乎一提到计算机编程,总是一脸的懵逼:我或我孩子将来并不从事IT行业,学习编程干什么,那是浪费时间。其实不是这个样子的:
现今,多行业的融合趋势、企业更新周期缩短的现象,必将注定未来的职业环境是多变的,甚至是不可控制的。据统计,未来30年,一个人的职业生涯,至少会换4-6份工作,换2-3个行业。如果我们的思维还停留在学一门技术找一份工作上,是不现实的。而要想在未来的职业环境中有杰出的表现,就需要综合的能力(包括逻辑思维、应变能力、动手实践、领导能力、协作能力等等)来适应未来的职业环境。在更新换代速度飞快的信息社会,学习的速度可能还跟不上信息更新换代的速度。所以说,如果认为学习编程的意义仅仅是学习一门技术,那就太狭隘了。
那学习编程是为了什么?
比尔盖茨说:“学习编程可以锻炼你的思维,帮助你更好地思考,创建一种我认为在各个领域都非常有用的思维方式。”
这种思维指的就是计算思维。编程的核心不是学习计算机语言,而是学习一种思维方式,这种思维蕴含着丰富的智慧。它跟我们平时所说的“批判性思维”、“逻辑思维”类似,都是指人脑的某种理性思考活动。但远比这些思维的含义要宽广。编写一个计算机程序,跟做一道菜,完成一个项目,管理一家公司,甚至于治理一个国家,本质上都具有相同的目标——就是要解决问题。
具有计算思维能力的人,遇到问题会去除问题细节,抽象定义问题,会通过收集数据、分析数据来理解和思考问题;将一个问题清晰、具体地描述,并将问题的解决方案以信息处理流程的方式表示出来。说白了,就是能让人面对问题时,知道如何理解问题、分析问题、设计解决方案、并最终高效率地完成解决方案。
我们用一个故事来举例说说怎么用计算思维解决问题吧——著名的“国王的婚姻”:一个年轻国王向邻国一位聪明美丽的公主求婚,公主出了这样一道题:求出48770428433377171的一个真因子。若国王能在一天之内求出答案,公主便接受他的求婚。国王回去后立即开始逐个数地进行计算,他算了很长时间但还是没有结果。国王向时任宰相的大数学家求教,宰相思考后认为,这个数为17位,它最小的一个真因子不会超过9位。于是他给国王出了一个主意,按自然数的顺序给全国的老百姓每人编一个号发下去,让每个老百姓用自己的编号去除这个数,除尽了立即上报赏金万两。最后国王用这个办法求婚成功。
这就是编程算法里面非常典型的分治法,将复杂的问题分而治之,这也是我们面临很多复杂问题时经常会采用的解决方法。这种方法也可作为并行的思想看待,而这种思想在计算机中的应用比比皆是,如现在多核CPU的发展就是如此。
计算思维不但能大大加大解决具体问题的效率,当拥有计算思维的人面临人生选择的时候,也能更加理性地分析利弊,目标更明确,更甚于利用有限的资源完成价值的最大化。更重要的是具有计算思维的人不会被貌似艰巨的困难吓倒,他们知道并且相信问题只要存在,就是能够被解决的。这才是学习编程的意义。在我们会被信息技术环绕的余生中,不管是否从事计算机相关行业,学习了解计算思维必然是应对未来社会的必修课。
那么,编程语言有上千种,如果我们想学习编程,该选择什么样的课程入门最好呢。那肯定是“编程导论”课程了,这门课主要是介绍计算机编程的核心思想和基本方法,力求从广度上来让学生系统地了解计算机编程技术的体系结构。国内的一些计算机教育机构,比如比特讲堂,便开设了这门课程。他们与国外知名大学,比如MIT、CMU、Berkeley、Stanford的编程导论课程同步,都是使用python来入门的。这门语言语法灵活、易于掌握,既可以构建复杂的大型工程,也适合初学者编写简单的程序模块。有兴趣的同学可以进一步去了解一下。
,