查看原文
其他

刘康平:为什么我们每个人都应该学习计算思维? | 造就

2016-12-23 造就 造就

https://v.qq.com/txp/iframe/player.html?vid=c0358ojpchb&width=500&height=375&auto=0

刘康平

微软亚洲研究院资深学术合作经理



以中国象棋为例,在这样一个棋局上,你怎么用最快的方式找到「将」和「帅」所有合法的位置?


我们要通过计算机来做自动的求解,所以用A来表示「将」,用B来表示「帅」,然后因为它们只能在9个位置移动,所以我们用1到9进行编号,因为计算机最擅长处理数字。


规则很简单,「将」在9个位置的任何一个,比如说在1的时候,「帅」只能在其他的6个位置,1、4、7因为跟「将」在一条直线上,是非法的位置。



  • 第一, 用抽象的思维方式对这个问题做了分析和描述,尤其是一种数学上的表达;

  • 第二, 在这个数学表达的基础之上,找到了解决的方法,这就是计算机算法;

  • 第三, 通过编程,把这个算法告诉计算机,编程语言是人和计算机之间沟通的语言。


计算机科学还有另外一个非常重要的思想,叫做分层(layer)。我们通过分层,可以把一个难的、复杂的问题,分解成若干个简单的问题,分而治之。


通过分层,我们可以很好地隐藏掉很多技术细节,让我们可以关注问题本身,让我们可以很容易通过编程来实现创意。


上面象棋的代码是用C语言写的,要读懂有一点难度。



不过你也可以像玩游戏一样编程。


这是Minecraft的一个可视化编程环境,左边是运行区域,可以看到你编写的程序的运行效果;中间是编程可能用到的武器,你的工具、模块等;右边是编程的工作空间。


我们现在要做的问题是,左边这个小人怎么能够最快速的采集到3块红石?此时就要分析,上面有不止一块红石,我们要采集哪3块?并且红石下面可能有熔岩,你必须放上一块圆石才能经过。到了红石的跟前,需要用“摧毁工具”模块来开采红石。



开采完之后,我们要判断底下有没有熔岩。所以我把这个判断模块拖过来,如果有熔岩就放下一块圆石,然后继续前进。


注意看操作界面,左边是运行效果,右边有一个不断移动的黄色高亮框,显示当前正在执行哪个模块,也就是哪行代码。



在计算机领域有个概念,叫缓存(cache),就是把用户频繁使用的数据放到离计算最近的地方,也就是缓存里。这样当用户需要使用该数据的时候,就可以很快拿到。


就像我儿子一样,他今天要上数学课,不需要重新回家拿数学课本,因为课本就在他的书包里。


第二,我们有很多条队,这就叫并行计算,或者多线程。通过并行计算,我们就可以大大提高工作效率。



所以我想说,计算思维真的就像阅读、写作、数学一样,应该成为大家必备的一项技能。有了它,你可以自己动手去实现创意。


但如果遇到更复杂的问题,就需要其他领域的专业知识。这时我们可以实现交叉创新,跟其他领域的专家合作。


我算一个摄影爱好者,尤其爱拍花。我们已经发现的花有25万种之多,很多都说不上名字。



那么我们能够用计算机帮助识别花卉吗?可以,这是一个计算机视觉的问题,但是这个问题仅仅依靠计算机科学家很难独立解决。


所以我们和中科院植物所合作,推出了手机app「微软识花」。中科院植物所拥有数百万带标注的花卉图片,更重要的是,他们有植物学的专业知识。



敦煌莫高窟经过了千年的岁月洗礼,风雨侵蚀和人为破坏,使得文化遗产的保护迫在眉睫。微软亚洲研究院为敦煌量身定制了一台十亿像素的数字相机(手机像素现在一般是千万级别,十亿是一千万的100倍)。


用这台相机,一次性就可以拍下整个佛龛的图像,甚至连阴影处的几何细节也相当丰富。这种方式可以大大提高文化遗产数字化的效率。



我儿子今年12岁,8岁的时候开始学习编程,现在写了有几千行代码,号称有4年多的编程经验。


在今天这样一个技术驱动的数字经济时代,我们每个人都需要进行不断的自我迭代,而迭代的一个途径,就是学习计算思维,了解编程。


这样每个人都可能成为数字时代的创造者,甚至领导者。






关雅荻 | 8天跑完500多公里,他却说人生不是一场马拉松

刘力豪 | 足球是一种普适的情商教育

娟子 | 创新,从拆掉图书馆的围墙开始

李磊 | 在苦难和平凡里寻找幸福

张向东 | 经过三次创业,自行车让我与世界和解

郑频频 | 我们对雾霾谈虎色变,何以对烟霾视而不见?

周红 | 被阉割的评弹,失去了生命力

王孟秋 | 全人类进入虚拟世界是不可逆的未来 


点击标题 查看往期回顾


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存