1、计算性思维微软亚洲研究院:您能简单介绍一下什么是计算性思维吗?Jeannette Wing:在我看来,计算性思维实际上是一个思维的过程。计算性思维能够将一个问题清晰、抽象地描述出来,并将问题的解决方案表示为一个信息处理的流程。它是一种解决问题切入的角度。现实中针对某一问题你会发现有很多解决方案的切入角度,而我所提倡的角度就是计算性思维角度。计算思维我认为它包含了数学性思维和工程性思维,而其最重要的思维模式就是抽象话语模式。2006年,我就在美国计算机学会通讯上发表了计算思维(Computational Thinking,也称计算性思维)一文,将计算思维作为一种基本技能和普适思维方法提出。它的运
2、用将引导计算机教育工作者、研究者和实践者去推动社会变革不仅仅限于计算机领域,例如当前各个行业领域中面临的大数据问题,都需要依赖于计算算法,来挖掘有效内容,这意味着计算机科学将从前沿变得更加基础和普及。微软亚洲研究院:您是基于什么情况构思出这篇文章呢?Jeannette Wing:03、04年时我发现在美国选修计算机科学本科生越来越少。当大家看到这种情况时都很沮丧、很郁闷也很担忧。我觉得计算机科学并不仅仅提供一些技术、一些硬软件、还有系统,我们还提供一种思维的模式。2006年我就写了这篇文章(指计算思维),主要是说我们计算科学这个领域提供的思维模式,它对所有的领域、职业都是适用的,都是能够从中受
3、益的。此外,我写这篇文章还有两个原因,一个是告诉学生选修计算机科学不是简简单单只学怎么编程。另外也希望通过这篇文章,吸引更多的学生来选修计算机科学的课。对于学生而言,学一点算法、计算机编程,抽象化的这种技巧,对于今后从商、搞法律、学医或者是自己创业,都会比那些没有学过计算机科学的人要更强,要更加有优势。这是因为学习抽象的语言和算法,你就会有一种新的解决问题的技能。另外有了计算性思维的人,就会知道计算能力的强大性,就知道比如说大规模的、或者很复杂的问题,其实可以发挥一些计算的能力去解决。现在大数据在任何领域都很火,我们只有通过计算技术这种能力,运用超算的基础设施,才能够去解决每一个行业大数据的挑
4、战。像生物、医药、金融、社科、人文、还有基础科学方面,他们每个领域都有很多的大数据,可以从中去挖掘一些内容,靠计算算法,还有基础设计就能把这些内容挖掘出来。微软亚洲研究院:怎样判断一个人是否具有计算性思维?Jeannette Wing:计算机性思维最重要的就是可以帮助人们在真实的情况下解决问题。一个真正问题的实现,由于种种的限制,你不可能达到一种完美的抽象,抽象的过程当中,一定会有各种各样的性质。如果当一个人碰到问题时,他会先对这个问题进行抽象,抽象之后去对它进行一种重新的计算性表达,然后发挥自己工程性的思维,会考虑这个问题的解决效率是不是高,表达是不是准确,那么就说明这个人确实是一个有计算性
5、思维的人。微软亚洲研究院:您能否举个例子说明计算性思维在生活中的运用?Jeannette Wing:我就拿做饭来做例子吧。你有4个灶头,锅碗瓢盆的数量是一样的。你又要做肉菜、又要做一个素菜,还要做一个甜点很多人都会做饭,但并不是所有人都是好的厨师因为很多人都是凭自己的直觉去做饭的。对于一个有计算性思维的人,他既要考虑到效果、又要考虑到正确性。在保证做出好吃的饭的同时,还考虑到诸如做荤菜的时候不要凉了,同时要做搭配的素菜。其实从计算性思维角度来说,这就是给定有限的资源,我如何去设定几个并行的流程的问题,实际上说白了就是一个任务统筹设计。微软亚洲研究院:您认为怎样才能让更多的人来获得计算性思维的能
6、力并掌握其方法?Jeannette Wing:我曾经在美国国家科学基金会工作过三年,主管所有关于计算机科学方面的事务,所以我有一个在全国推广计算性思维的一个国家级的平台。我们主要想让大家知道,针对这些科研的群体,计算性思维对所有的工程师和科学家都是有好处的。后来我们还专门成立了一个资助的项目,就是对所有的工程师和科学家,如果你是在推进自己的科学研究、工程研究方面,并采用了计算性思维,我们就会给你资助。刚才讲了都是科研团体的,教育方面挑战比较多。我也是利用当时这样一个很好的平台,与许多美国国内的各种组织合作,包括我们中小学的教育组织,还有我们大学的本科组织,还有一些高中,另外还有一些专业的计算机
7、科学的组织一起来推广计算性思维。美国高中有一个关于计算机科学的高级资质考试,如果你考过了这个之后,拿到这个成绩进了大学里面是算学分的。这个考试现在基本形式就是考你的编程,我介入之后就是和负责这门考试的组织修改了考试的内容,现在不止考你编程,也包括计算性思维的一些基本原则。其他国家像英国、爱尔兰、新加坡,他们都是自主向他们中小学、本科生去推广计算性思维,如果未来中国也会做这个推广工作,我会觉得我这个梦想真是成真了。微软亚洲研究院:您觉得应当怎样在中国推广计算性思维?张益肇:计算性思维一方面来说就是要考虑到你的行为就像是电脑程序一样,可以改变的。对于北京的交通而言,其实常常在变化。你每天在不同的时
8、间从家里出发可以得到不同的到公司的时间。如果你有足够多的数据,你可能会得到这样的结论:如果我每天提早半个小时出发,我可能会提前一个小时就到公司。这样等于把自己的行为,变成计算机里的程序,你调节不同的参数,就会得到不同的效果。这对于组织而言也是这样,组织就像是一个企业,在企业中员工一直重复某些规矩或者是做事的方法。这其实是可以优化的,但你要想办法怎样复制,这些操作的行为,就好像说一个程序一样,你可以决定我把这部分换掉,我换成另外一个行为这个效率可能就提高了。比如说像我们在公司,你要去出差,可能就不需要再填表,让老板签名,而是在网站上完成,这样的话大家都省事,任何时候老板都可以批。Jeannett
9、e Wing:任何一个公司都有工作流程,有接待访客,或者是差旅报销都有相应的工作流程,如果我们兼容计算性思维,可以采取一些技术方面,把这些流程进行一些分析。比如说分析这些人和资源是不是最有效的利用,然后我们再简化这些流程,避免重复,避免浪费。对于一个普通人,比如说一个中国人,你日常生活中碰到很多复杂的问题,要千头万绪都要去想清楚,你可能无所适从,你可以利用计算性的思维,把工作分一个主次,然后着重去关注那些主要的问题。微软亚洲研究院:目前您的计算性思维研究与培养上有怎样的心得体会?Jeannette Wing:“计算性思维”算不上一个研究的主题,其实计算科学研究最终得出来的是一些工具、语言、方法
10、还有技巧,他们其实是计算性思维的显性的再现。我们可以从这个哲学的角度,或者从理念的角度,就把计算性思维当做一个研究课题来研究。我们可以问一些问题,比如说在什么年龄阶段去学习计算机科学当中的哪些概念是最好的。就像是数学领域的教学,我们也是通过几百年的学习总结出不同阶段应当传输的数学知识。人的接受程度一定是先学简单的,大脑才能够慢慢接受那些更难的知识。但是在计算机学科的方面,我们对各个领域的教学次序,并没有一个明确的答案。比如算法什么时候教,是早点教还是晚点教我们并不清楚。这个只能说是靠我们这些学习科学的研究者,还有教育研究者,以及计算机学科的研究者,联合起来才能把这个答案给他找到,为计算机思维的培养打下良好的教育基础。