21世纪是信息和知识经济的时代,作为处理信息和知识的主要工具的计算机应用非 常广泛,虽然计算机应用和相关设备不断推出,方便了人们的生活和工作,但是往往也会 针对具体的实际问题对一些软件进行二次开发或需要开发一些适用于自己的应用程序或 构建系统。因此,人们除了将计算机作为生产、生活、娱乐的手段外,还应该了解计算机科 学的内涵,了解计算机中的基本思想、方法,使计算机成为能够深入帮助人们工作、生活或 科研的工具。 3.计算思维概念 1 1.什么是计算思维 3.1 2005年6月,美国总统信息技术咨询委员会(President..sInformationTechnologyAdvisoryCommite,PITAC)提交了报告《计算科学:确保美国竞争力》(Computational ScecnuigAmeia ’omptt)。该报告指出, ine:EsrnrcsCeii虽然计算本身是一门学 科,但是其具有促进其他学科发展的作用,而(v) 2(n) 1(e) 世纪在科学上最重要、(s ) 经济上最有前途的 研究前沿有可能通过熟练掌握先进的计算技术和使用计算科 学来解决。 2006年3月,时任卡内基·梅隆大学计算机科学系主任 的周以真(JeanneteM.Wing)教授,如图3-1所示,提出并倡 导“计算思维”。她在期刊CitiftheACM 杂志上给出并定义计算思维。周教授(o) 认(mm) 为,(a) (c) (n) (u) 计算(o) 思(so) 维(Computational thinking)是运用计算机科学的基础概念进行问题求解、系统设 计,以及人类行为理解等涵盖计算机科学之广度的一系列思 维活动。在她看来,计(“) 算思维是一种普适思维方(n) 法和基本技(e) 能,所有人都应该积极学习并使用,而非仅限于计算机科学家。” 图3-1 周以真教授 2008年,周教授在英国皇家学会《哲学会刊》(Philosophical TransactionsoftheRoyalSociety)上发表《计算思维和关于计算的思维》再一次阐述了 计算思维的概念,探讨计算思维的本质。 计算思维的提出,正值计算机技术越来越紧密地融入人们的科学研究和社会生活,它 70 对人类社会的巨大推动作用也越来越受到人们的关注。计算机科学的出现本身就是多学 科交叉的产物,它在发展中不断汲取其他学科发展带来的最新技术能量,同时也以自身强 大的计算和数据处理能力及其他智能技术手段不断促进其他学科的发展。 技术进步带来的生活和学习变化的背景,越来越要求在课堂上重新定义计算能力,将 其作为一种内在的社会性和后天的技能。最终的目标不仅是让学习者学会使用相关的数 字设备,如计算机,而且要使用数字设备来提高学科学习、批判性思维和自我表达的能力, 以培养出具有基本计算思维能力的创新个体。 3.2 计算思维的特征 1. 计算思维代表着一种普遍的态度和一类普适的技能。计算思维具有以下6个特征。 1. 是概念化的抽象思维而不只是程序设计 计算机科学不等于计算机编程。像计算机科学家那样去思考意味着不仅限于能为计 算机编程,还要求能够在抽象的层次上思考。 2. 是基本的而不是死记硬背的技能 基本技能是每一个人在现代社会应该具有的。刻板的技能意味着机械的重复,当计 算机科学使计算机像人类一样思考之后,刻板的重复性的思维活动就可以由计算机承担。 而人类将精力集中在“有效”的计算上,最终造福人类。 3. 是人的而不是计算机的思维方式 计算思维是人类求解问题的一条途径,但不是要求人类像计算机一样思考。计算机 枯燥且机械,人类富有想象力。计算机赋予人类强大的计算能力,人类可以好好利用这种 力量去解决各种需要大量计算的问题。 4. 是数学和工程思维的互补与融合 计算机科学本质上源于数学,它的形式化基础建筑在数学之上。计算机科学又从工 程学上汲取了思想,因为计算机建造的是能够与实际世界互动的系统。基本计算设备的 限制使得科学家必须计算性地思考,而不是数学性地思考。数学和工程思维的互补与融 合很好地体现在抽象、理论和设计三个学科形态上。 5. 是思想而不是人造品 虽然通过计算机产生的软件、硬件等人造品将以物理形式呈现并触及人们的生活,但 是其中更重要的是计算的概念,这种概念被用于问题求解、日常生活管理,以及与他人进 行交流和互动。 6. 面向所有的人和地方 计算思维作为解决问题的一个有效工具,应当在所有地方、所有教学场所都得到应 17 用。科学问题和解答仅受限于我们自己的好奇心和创造力;同时一个人可以主修计算机 科学而从事任何行业。 计算思维吸取了问题解决所采用的一般数学思维方法,现实世界中巨大复杂系统的 设计与评估的一般工程思维方法,以及复杂性、智能、心理、人类行为的理解等的一般科学 思维方法。计算思维建立在计算过程的能力和限制之上,由人和机器执行。计算思维概 念体现了计算机科学中最根本的内容,即其本质是抽象(Abstraction)和自动化 (Automation)。计算思维中的抽象完全超越物理的时空观,用符号来表示。 3.3 计算思维的影响 1. 目前,越来越多的人认识到计算机学科是和数学、物理同等地位的基础学科。计算机 科学不仅为不同专业提供了解决专业问题的有效方法和手段,而且提供了一种独特的处 理问题的思维方式。熟悉使用计算机及互联网,为人们终生学习提供了广阔的空间以及 良好的学习工具与环境。 计算思维的提出,对我国教育界和科学界产生了重要影响。 我国高等学校计算机基础课程教学指导委员会2010 年5月在合肥会议上讨论了培 养高素质的研究型人才,“计算机基础”这门课程应该包含哪些内容,如何将计算思维融入 到这门课程中。2010 年7月在西安会议上发表了《九校联盟(C9)计算机基础教学发展战 略联合声明》,确定了以计算思维为核心的计算机基础课程教学改革。 2010 年9月,《中国大学教学》杂志上发表了影响深远的《九校联盟(C9)计算机基础 教学发展战略联合声明》,把“计算思维能力的培养”列为计算机基础教育核心任务。 2012 年5月,教育部高等教育司召开了“大学计算机”课程改革研讨会,会上明确了 大学计算机课程要像大学物理、大学数学一样,成为大学的基础性课程,如图3-2所示。 图3-2 科学研究的手段 现在,人们已经认识到计算思维的重要性。在计算思维提出后,中国、美国、英国等国 家的学术组织举办过一系列的学术研讨。对计算思维的结构问题、计算思维者的识别问 题、计算思维与技术之间的关系问题、计算思维的教学方法问题与计算思维相关的计算社 团的角色问题等进行讨论。 经过多年的探讨和实践,学者们从更多的角度和方面提出自己的看法。美国ACM 27 前主席Denning认为,系统、模型、创新这些内容也是计算机科学实践方面的重要内容,和 程序设计具有同等的地位。我国教育部高等学校计算机类教学指导委员会近年来不断推 动学生系统能力的培养等。这些探讨和实践都是对计算思维内涵的丰富和发展。 3.计算思维中的基本方法 2 2.抽象思维 3.1 1.抽象的定义 计算思维建立在计算过程的能力和限制之上,由人和计算机共同完成。通过计算方 法和建立模型使得人们可以去处理那些原本无法由个人独立完成的问题求解和系统设 计。计算思维最根本的内容,即其本质(Esence)是抽象(Abstraction)和自动化 (Automation)。计算思维中的抽象完全超越物理的时空观,并完全用符号来表示。 “抽象”指的是对复杂问题或现实世界中的对象进行概括、简化和归纳的过程。抽象 允许人们将问题中的关键特征提取出来,并忽略那些不重要或不相关的信息。这样做的 好处是,我们可以更容易地理解问题,并且可以更容易地找到解决问题的方法。 在计算机科学中,抽象是一个非常重要的工具,因为它允许我们创建抽象数据类型, 这些数据类型可以代表实际世界中的对象,如图形、图像和数据结构。使用抽象数据类 型,我们可以编写更简洁、易于理解和维护的代码,因为它们抽象出了底层实现的细节。 总的来说,抽象是计算思维中一个非常重要的概念,它允许我们更好地理解和解决问 题,并且有助于编写更好的代码。 2.抽象的方法 抽象的方法包括以下几个步骤。 (1)定义问题:明确问题的目标,确定可以解决问题的数据和方法。 (2)建立模型:将问题转换为一个抽象的模型,模型可以是一个数学模型、图形模 型、程序模型等。 (3)抽象思考:在模型中思考,找出模型中的规律和关系。 (4)解决问题:使用抽象的方法解决问题,如数学方法、算法、推理等。 (5)验证结果:验证解决方案的正确性,并评估解决方案的优劣。 这些步骤需要适当的抽象思维和数学能力,并且需要对问题的核心特征有深刻的理 解。使用抽象的方法解决问题的好处在于,它可以将问题的复杂性降低,从而使得问题更 易于理解和解决。 2.虚拟化思维 3.2 1.虚拟化定义 虚拟化是计算机领域中的一种重要技术。它可以创建虚拟的硬件和软件环境,以模 37 拟真实的硬件和软件环境。 主要的虚拟技术如下。 1)虚拟机 创建一个虚拟的操作系统和硬件环境,在其中运行软件。通过虚拟机软件在一台宿 主机上模拟多台虚拟机,每台虚拟机可以运行一个独立的操作系统和应用程序。 2)虚拟化平台 创建一个虚拟的数据中心,以管理和组织计算机网络、存储和计算资源。 3)虚拟网络 创建一个虚拟的网络环境,以模拟真实的网络环境并测试网络设备和系统。通过虚 拟网络技术在一个物理网络中模拟多个独立的虚拟网络,每个虚拟网络可以拥有独立的 网络配置和IP 地址。 4)虚拟实验室 创建一个虚拟的实验室环境,以模拟真实的实验室环境并测试和实验各种计算机 技术 5 。 )存储虚拟化 通过存储虚拟化技术,可以将一个物理存储设备逻辑划分为多个独立的虚拟存储设 备,每个虚拟存储设备可以独立使用存储空间。 虚拟技术在计算机领域中具有重要意义,因为它可以提高计算机系统的效率、稳定性 和安全性,并帮助开发人员在不影响真实环境的情况下,对计算机系统进行测试和开发。 2. 虚拟化技术案例 计算机系统在构建的时候,就采取了虚拟化技术。虚拟化技术在计算机系统内不仅 提高了系统性能,甚至改变了计算机所提供的服务的模式。例如,在操作系统中,采用了 包括虚拟内存和虚拟硬盘的虚拟技术。 虚拟技术在操作系统中的应用不仅可以提高系统的效率和稳定性,还可以帮助用户 解决内存和硬盘空间不足的问题。 1)虚拟内存 虚拟内存是一种计算机内存管理技术,通过操作系统的管理可以模拟出比实际物理 内存更大的内存空间,使得程序可以在机器内存不足的情况下仍能继续运行。 虚拟内存工作原理:当程序需要更多的内存空间时,操作系统会将一些不常使用的 内存页面转存到硬盘上,并将硬盘空间映射到内存空间上,以模拟出更大的内存空间。当 程序需要读取已经被转存到硬盘上的内存页面时,操作系统会将其读入内存,并再次将其 映射到内存空间上。 虚拟内存的优势:可以使得程序在机器内存不足的情况下仍能继续运行,提高了程 序的运行效率;当内存不足时,操作系统可以利用虚拟内存避免程序崩溃,提高了系统的 稳定性。 总体来说,虚拟内存是一种非常有用的内存管理技术,在现代计算机系统中广泛 应用。 74 2)虚拟硬盘 虚拟硬盘(VirtualHardDisk)是一种使用文件系统模拟硬盘空间的技术。它可以将 一个大的硬盘空间或其他存储介质划分成若干个虚拟硬盘,每个虚拟硬盘都是一个独立 的文件系统和独立的数据。虚拟硬盘是通过虚拟化技术实现的,这样可以实现对硬盘空 间的有效管理和使用。 虚拟硬盘有如下多种应用场景。 (1)操作系统测试:可以在虚拟硬盘上安装操作系统,进行操作系统的测试和评估。 (2)备份和恢复:可以在虚拟硬盘上备份数据,并在硬盘损坏或系统崩溃时,使用虚 拟硬盘进行数据恢复。 (3)软件开发:虚拟硬盘可以在软件开发过程中使用,避免因软件问题导致的实际 硬盘损坏。 (4)加密存储:虚拟硬盘可以使用加密技术加密存储,保护数据安全。 (5)虚拟硬盘具有很多优点,如方便灵活、可以独立使用存储空间、方便数据备份和 恢复等,是一种很好的虚拟存储设备。 例如,在Windows中可以利用磁盘管理功能划分逻辑分区,这里面的逻辑分区就是 一个虚拟硬盘。具体内容见4.5节。 2. 2.分层抽象思维 3.3 1. 分层概念 分层抽象是计算机科学中一种重要的思想和技术,用于解决复杂系统的设计和组织 问题,是指通过对复杂问题进行分解、组合、抽象来解决问题的方法。费曼在《费曼计算学 讲义》中提到了分层抽象思想,并将其和地质学上分层的工作做了类比。也可以借助一下 生活中常见的例子来理解一下“分层”的思想,例如,如图3-3所示的多层蛋糕,就体现了 分层,但计算机中的分层思想要更复杂一些,不仅是进行分层。 分层抽象思想的核心是将复杂的系统划分为不同的层,而且每层要通过接口使用下 层服务,并且向自己的上层提供服务;每层只关注其特 定的任务;每层都有自己的抽象概念,并与下面的层以 及上面的层通过简单的接口进行通信。 分层抽象的优点:使得系统的设计更加清晰,易 于理解和维护。每层的接口明确定义,因此修改和扩 展系统时,更容易进行。另外,每层的复杂度都被限制 图3-3 类比分层思维的多层蛋糕在可控范围内,因此可以在不影响整体系统的情况下 更快地开发和测试每一层。 例如,在计算机网络中,分层抽象的思想可以用于组织网络协议。每层负责其特定的 任务,例如,网络层负责路由数据包,传输层负责保证数据的正确传输,而应用层负责提供 特定的网络应用服务。 通过分层抽象,开发人员可以将复杂系统分解为多个更小的子系统,并专注于每个子 57 系统的实现。这样,系统的开发和维护工作将变得更加容易和高效。 分层抽象是计算机科学的重要思想,可以帮助设计出清晰、易于理解和易于维护的系 统。分层抽象的思想不仅适用于计算机网络,也广泛应用于计算机系统设计,如操作系 统、数据库系统、计算机图形学等领域。 分层抽象思维步骤如下。 (1)问题分解:将复杂问题分解为若干更简单的子问题。 (2)组合思考:对子问题进行推导、分析,从而得出解决子问题的方法。 (3)抽象思考:对每个子问题进行抽象,把它们归纳为更高层次的抽象概念。 (4)综合思考:结合抽象的概念,得出解决整个问题的思路。 总的来说,分层抽象思维是一种高效的解决问题的思维方法,它可以帮助人们在解决 复杂问题时提高思维能力和解决问题的效率。 2. 计算机中分层抽象思想的应用 计算机中分层抽象方法在软件系统和硬件系统中都有大量的体现。 (1)计算机程序设计。 计算机程序员在编写程序时,需要将复杂的程序分解为若干个更简单的部分,再将这 些简单的部分组合起来,最终得出一个完整的程序。 例如,在结构化编程思想中,“自顶向下”逐步求精的思想是分层思想的体现。 (2)计算机网络构建。 在构建计算机网络时,需要将网络分层,从物理层到传输层、网络层、数据链路层,再 到会话层、表示层、应用层。每一层都专注解决本层问题。 (3)操作系统设计。 操作系统是计算机系统中的核心部分,需要通过分层构建方法,从底层向上层进行 构建 ( 。 4)数据库设计。 数据库设计时,需要将数据分层存储,从物理层到逻辑层,再到概念层。 (5)计算机硬件的构成,例如,用硬件实现CPU 的功能。 (6)用硬件电路实现各种计算操作功能的时候,采用了分层抽象,分层构建思维:0 和1可进行算术运输和逻辑运算→用电子技术表示0和1→ 用基本电子器件实现基本门 电路→实现组合逻辑电路→实现芯片等更复杂组合逻辑电路。 这些都是计算机中分层抽象方法的典型应用,它们都是通过对复杂问题进行分解、组 合、抽象,从而提高解决问题的效率和准确性的方法。 习题 1. 什么是计算思维? 请举例说明 2. 什么是计算思维的本质? 请举例说明。 67 3. 什么是分层抽象思维 ? 你能在生活中找到类似思维的解决方案吗 ? 请举例说明。 4. 计算思维和计算机科学的关系是什么 ? 5. 什么是计算思维中的基本方法 ? 6. 请选择一个计算思维中的基本方法,举例说明它的思想和应用场景。 7. 请谈一下你对分层抽象的理解,并举出计算机系统中应用它的一个例子。