1.1 计算思维对于软件开发的启示
2006年3月,美国卡内基·梅隆大学计算机系主任周以真(Jeannette M. Wing)教授在美国计算机权威杂志Communication of the ACM上发表并定义了计算思维(Computational Thinking)。她认为:计算思维是运用计算机科学的基础概念进行问题求解、系统设计,以及人类行为理解等的涵盖计算机科学领域的一系列思维活动。她指出,计算思维是每个人的基本技能,而不仅仅属于计算机科学家。
计算思维综合了数学思维(求解问题的方法)、工程思维(设计、评价大型复杂系统)和科学思维(理解可计算性、智能、心理和人类行为)。掌握计算思维有助于软件工作者更深入地理解软件开发的方法和思想。
计算思维的本质是抽象(Abstraction)和自动化(Automation)。抽象指的是将待解决的问题用特定的符号语言标识并使其形式化,从而达到机械执行的目的(即自动化),算法就是抽象的具体体现;自动化就是自动执行的过程,它要求被自动执行的对象一定是抽象的、形式化的,只有抽象的、形式化的对象经过计算后才能被自动执行。由此可见,抽象与自动化是相互影响、彼此共生的。
1.抽象
在使用计算机进行现实世界问题求解时,我们需要利用抽象思维产生各种各样的系统模型。
抽象思维是对同类事物抽取其共同点,从个别现象中把握一般本质的认知过程和思维方法,具有科学抽象的一般过程和方法:分离→提纯→区分→命名→约简。“分离”即暂时不考虑研究对象与其他对象的总体联系,“提纯”是将研究对象观察隔离出来,提取出各种对象的现象和差异中的共性部分,然后通过“区分”即是对研究对象的要素进行分别,再对其“命名”,并通过“约简”,排除非本质要素,以简略的形式(如模型)表达要素及其之间的关系,最终形成“抽象化”结果。
2.自动化
在冯·诺依曼的计算机体系理论中,体现了自动化思想,即计算机可以自动运行预先设计好的程序。另外,自动化还体现为自动控制,即基于控制论的思想,按照规定程序进行自动操作或控制。