|
| 浅谈计算思维 |
| 【科学技术(3)】
浅谈计算思维
伍加,2010年3月30日,周二
周以真 (Jeannette M. Wing) 是华人计算机科学家中的佼佼者。她曾任卡内基梅隆大学计算机系主任,现任美国国家自然科学基金会(NSF) 计算机和信息科学与工程部(CISE) 主任。她在2006年提出的计算思维[1]引发了对计算机教育的改革,有数个 NSF CISE 的科研项目支持对计算思维的研究,她的文章[1]被翻译成了中文和德文。那么,究竟什么是计算思维?为什么计算思维很重要?
根据伍加的理解,计算思维可以用四个字来概括:抽象、算法。如果再对这四个字略加修饰,可以用八个字来概括计算思维:合理抽象、高效算法。
对于学习各类科学(包括自然科学和社会科学)的学生来说,计算思维意味着对物理世界进行建模和模拟,把物理世界的变化解释成一种计算的过程;把对物理性质的研究也看成一种计算的过程。这就是抽象,这就是由具体上升到一般的过程。要做到这一点,必须懂得可计算性,即计算的能力和极限,知道那些问题可以计算,那些问题不可能计算。这就是我所说的“合理”抽象。如果把某种物理性质抽象成了一种计算过程,结果这种计算永不停机,那结果就没有太大价值;如果计算过程停机,但是所需的计算时间太多,那么这种抽象模型在某个时间段里也不会有太大的实际意义。比如采用“穷举法”来破译由两万位密钥加密的信息,这个“穷举抽 象”在当前的计算技术制约下就是不合理的,因为这样的计算需要亿万年之后才会出结果。所以,计算思维要求首先要学会抽象,而且是合理抽象,把有待解决的问题抽象成有效的计算过程。
如果面对的问题是可计算的,合理的抽象,即有效的计算模型已经建立起来,下一步就是要会用计算的方法来解决现实问题。具体说来,就是要学会对问题进行有效的分解,并且尽量重用计算结果,重用计算过程,重用程序,从而快速获得计算结果。这里需要有两种技能,一是设计算法的能力,二是优化算法的能力,二者的结合才能使计算过程在最短时间内完成。算法设计与分析是计算机系学生的必修课,它对于计算思维的培养非常重要。许多常用的算法都有深刻的哲理,比如递归、并发、启发、学习等,由于牵涉到许多技术细节,在此不予展开。
为什么计算思维非常重要?Jim Gray [2]最近对科学的发展总结出四个范式,也许我们能用它来解释计算思维的重要性。
- 经验积累型:几千年前,人们靠经验来证实或证伪某种猜想,逐步形成人类的知识。神农尝百草就是一个例子。远古时候,人们经常因吃东西而生病,甚至丧命。神农的科学实验就是尝遍百草,能吃的放在身体左边的袋子里,介绍给别人吃;不好吃的就放在身体右边袋子里,作药用。不能吃的就提醒人们注意。
- 数学理论型:几百年前,人们为各种物理现象和物理过程建立理论模型,比如开普勒定律,牛顿定律,马克思威尔方程,狭义相对论,广义相对论,等等。这些理论模型越来越复杂,越来越抽象,缺乏直观性。
- 计算模拟型:在过去几十年间,用计算机模拟物理现象和物理过程十分流行。许多科学家不再像从前那样用望远镜、显微镜等仪器直接观测世界,而是把那些观测仪器与计算机相连,把观测到的数据输入计算机计算,科学家们面对计算机屏幕,观察研究模拟实验的结果。
- 数据探索型:今天,我们处于信息爆炸的时代,各种理论、实验、模拟都统一在信息处理这种数据探索框架之下。科学研究就是收集数据,计算数据,分析数据。这些 数据的来源可以是传感器也可以是计算模拟结果,通过软件进行分析计算,结果存储在数据库中。科学家必须能够用统计学知识对这些计算数据进行挖掘、探索、和 提炼。
这种科学发展的范式变化为我们揭示了这样一个事实:科学研究和实践正在从计算密集型工作向数据密集型工作 转变。这也是为什么我们今天又越来越多的学科冠以“计算”二字,比如计算物理学,计算生物学,计算经济学,等等。作为一名有志于科学的青年学生,必须知道数据如何在计算机中存储,数据如何在不同计算机之间传输,数据如何在不同应用环境中进行语义解释。所要这些知识,都需要计算思维。
参考资料:
[1] Jeannette M. Wing, Computational Thinking, Communications of ACM, Vol. 49, No. 3, March 2006, page 33-35.
[2] Jim Gray, eScience: A Transformed Scientific Method, http://research.microsoft.com/en-us/collaboration/fourthparadigm/4th_paradigm_book_jim_gray_transcript.pdf. Mountain View, CA, January 11, 2007.
伍加,2010年3月30日,周二
http://blog.creaders.net/invictus/
|
|