第1章 概述 本章学习目标 了解计算机的发展历史及发展趋势 了解计算机的分类及应用 理解计算思维及其应用 随着生产力水平的不断提高,像语言一样,计数和计算在人类社会迫切需要的前提下推动人类社会发展的同时,自身也得到了发展和完善。早在文明开发之前的原始社会就有结绳和垒石计数之说。公元10世纪,我国劳动人民在早期的运筹、珠算的基础上,发明了至今仍流传于世界的计算工具—算盘,并为之配备了“口诀”。算盘的发明推动了数字式计算机工具的发展。与电子计算机相比,算盘犹如硬件,而口诀就像计算机的程序与算法软件一样。 17世纪出现计算尺之后,各种机械的、电的模拟计算机以及数字式计算机不断出现。法国的布莱士·帕斯卡(Blaise Pascal)发明了机械式十进制系统台式计算机;英国的查尔斯·巴贝奇(Charles Babbage)发明了差分机;美国的乔治·斯蒂比兹(George Stibitz)和霍华德·艾肯(Howard Aiken)发明了机电式自动计算机;德国的康拉德·楚泽(Konrad Zuse)也研制成了类似的机器。 电子计算机的诞生、发展和应用,是20世纪科学技术的卓越成就,是新的技术革命的基础。在信息时代,计算机的应用必将加速信息革命的进程。计算机不仅可以解脱人类的繁重体力劳动,也可替代人类的脑力劳动。随着科学技术的发展及计算机应用的更广泛的普及,它对国民经济的发展和社会的进步将起到越来越巨大的推动作用。 要想更有利地发挥计算机的效用,必须了解计算机的组织结构,把握计算机的工作原理。 学习完本章,学生在对计算机的发展历史、发展趋势有所了解的基础上,将进一步了解计算机的分类和应用,重点理解计算思维及其应用。 1.1 计算机发展概况 在当今社会,计算机可谓无所不在。那么,究竟什么是计算机呢?不同的专家可能会从不同的角度去定义计算机。例如,物理学家可能很注意计算机的电子特性,而社会学家可能更侧重于计算机的逻辑特性。为了研究计算机的工作原理,从比较综合的角度,可以将电子计算机定义为:能自动、高速、精确地进行大量数据处理的电子设备。 1.1.1 计算机发展简史 1.第一台计算机 20世纪40年代,科技战线的两大成果成了人们瞩目的对象。一是标志着“物理能量大释放”的原子弹;二是标志着“人类智慧大释放”的计算机。 1946年,在美国宾夕法尼亚大学,美国物理学家J.W.Mauchly博士和J.P.Eckert博士研制出世界上第一台计算机—ENIAC(Electronic Numerical Integrator And Computer,电子数字积分计算机)。这台计算机使用了17 840支电子管,它的诞生为计算机和信息产业的发展奠定了基础。ENIAC不具备存储功能,采用十进制,并要靠连接线路的方法编程,并不是一台具有存储程序功能的电子计算机。 世界上第一台具有存储程序功能的计算机是EDVAC(Electronic Discrete Variable Automatic Computer,离散变量自动电子计算机),由曾担任 ENIAC小组顾问的著名美籍匈牙利数学家冯·诺依曼(John von Neumann)博士领导设计。EDVAC从1946年开始设计,于1950年研制成功。其采用了电子计算机中存储程序的概念,使用二进制并实现了程序存储,把包含数据和指令的程序以二进制代码的形式存放到计算机的存储器中,保证了计算机能够按照事先存入的程序自动进行运算。冯·诺依曼提出的存储程序和程序控制的理论及他首先确立的计算机硬件由输入部件、输出部件、运算器、存储器、控制器五个基本部件组成的基本结构和组成的思想,奠定了现代计算机的理论基础。计算机发展至今,前四代计算机统称为冯·诺依曼结构计算机,世人也称冯·诺依曼为“计算机之父”。 1971年,世界上第一台微型计算机MCS-4基于在美国研制出的第一代微处理器Intel 4004组装而成。微处理器的出现与发展,一方面给自动控制注入了新的活力,使办公设备、家用电器迅速计算机化;另一方面,以微处理器为核心部件的个人计算机(Personal Computer,PC)得到了广泛的应用,成为人们生产和生活必不可少的现代化工具。 我国的计算机事业起步于1956年。1958年,中国科学院计算技术研究所研制出了我国第一台电子数字计算机,命名为DJS-1,通称103。这台计算机当时在中关村计算所大楼内对军事科学、气象预报、石油勘探等方面的研究起到了相当大的作用。此后,我国在计算机发展与应用的各个阶段都有不少成果。尤其是汉字在计算机中的应用,为信息处理现代化开辟了广阔的道路。 2.计算机的更新换代 第一台计算机诞生后,其更新换代很快。每5~8年计算机就更新换代一次,计算机的体积日益减小,运行速度不断加快,功能日趋增强,价格逐渐下降,可靠性不断提高,应用领域日益拓展。 从第一台电子计算机诞生起,计算机技术得到了迅速的发展,走过了从电子管、晶体管、中小规模集成电路到大规模、超大规模集成电路的发展道路。 从构成计算机的物理元件角度,把计算机划分为如下四代。 第一代为电子管计算机时代(1946—1958年):组成计算机的物理元件为电子管,用光屏管或汞延时电路作存储器,输入/输出主要采用穿孔纸带或卡片;计算机运行时使用机器语言或汇编语言;计算机的应用主要面向科学计算;代表产品有UNIVAC-I、IBM 701、IBM 650和ENIAC(唯一不是按存储控制原理设计的);这一代计算机的缺点是体积笨重、功耗大、运算速度低、存储容量小、可靠性差、维护困难、价格高。 第二代为晶体管计算机时代(1959—1964年):组成计算机的物理元件为晶体管,使用磁芯和磁鼓作存储器,引进了通道技术和中断系统;开始采用FORTRAN、COBOL、ALGOL60、PL/1等高级程序设计语言和批处理操作系统;计算机的应用不仅面向科学计算,还能进行数据处理和过程控制;代表产品有IBM公司的IBM 7090和IBM 7094、Burroughs公司的B5500。此代计算机各方面的性能都有了很大的提高,软件和硬件日臻完善。 第三代为中小规模集成电路计算机时代(1965—1970年):组成计算机的物理元件为集成电路,每个芯片集成1~1000个元件;计算机运行时广泛采用高级语言,有了标准化的程序设计语言和人机会话式的BASIC语言,操作系统更加完善和普及,实时系统和计算机通信网络得以发展;计算机的结构趋于标准化;计算机的应用趋于通用化;它不仅可以进行科学计算、数据处理,还可以进行实时控制;代表产品有IBM公司的IBM 360(中型计算机)和IBM 370(大型计算机)、DEC公司的PDP-11(小型计算机)。此代的计算机体积小、功耗低、可靠性高。 第四代为大规模、超大规模集成电路计算机时代(1971年至今):组成计算机的物理元件为大规模(每个芯片集成1000~100 000个元件)、超大规模(每个芯片集成 100 000~1 000 000个元件)集成电路,采用半导体存储器作内存储器,发展了并行技术和多机系统,出现了精简指令计算机RISC;计算机运行时有了丰富的软硬件环境,软件系统实现了工程化、理论化和程序设计自动化。此代计算机体积更小巧,性能更高,尤其是计算机网络与多媒体技术的实现使得此代计算机成为必不可少的现代化计算工具,它能够对数字、文字、语音、图形、图像等多种信息进行接收及处理,能够对数据实施管理、传递和加工,对工业过程进行自动化控制,从而成为办公自动化和信息交流的工具。 3.微型处理器 属于第四代计算机的微型计算机是以微处理器为核心的计算机。计算机的运算器和控制器合称为中央处理器(Central Processing Unit,CPU)。CPU被大规模、超大规模集成电路技术微缩制作在一个芯片上,就成了微处理器(Microprocessor)。 微型处理器的发展史如下。 第一代微型处理器是4位微处理器。典型的产品有Intel 4004、4040和8008。 第二代微型处理器是8位微处理器。典型的产品有Intel 8080、Intel 8085、Motorola公司的M6800、Zilog公司的Z-80。 第三代微型处理器的代表产品是Intel 8086、Intel 8088、Zilog公司的Z-8000、Motorola公司的M68000。它们都是准16位微型处理器,都采用H-MOS高密度集成半导体工艺技术,运算速度更快。这些公司在技术上互相竞争,很快又推出了全16位的微型处理器Intel 80286、M68020和Z-80000。Intel 80286微型处理器芯片的问世,使286微型计算机在20世纪80年代后期风靡全球。 第四代微型处理器是32位微处理器。典型的产品有Intel 80386和Intel 80486,Motorola公司的M68030和M68040。 1993年,Intel公司推出了第五代微型处理器Pentium(中文译名为奔腾)。同期推出的微型处理器还有AMD公司的K5和Cyrix公司的M1等。 1996年,Intel公司将其第六代微型处理器正式命名为Pentium Pro。2001年,Intel公司发布了Itanium(安腾)处理器。2002年,Intel公司又发布了Itanium2处理器。 2000年11月,Intel公司推出第七代微型处理器Pentium 4(奔腾4,或简称奔4或P4)。Pentium 4有着400MHz的前端总线,之后更提升到了533MHz、800MHz。 2006年7月,Intel公司推出第八代X86架构处理器:Core2(酷睿2)。Core2有7、8、9三个系列。 2008年11月,Intel公司推出64位四核CPU,命名为“Intel Core i7”系列。 2023年10月,Intel公司发布了Intel第14代Core i9-14900K处理器。 2024年1月,Intel公司发布了Intel第14代Core i9-14900HX移动处理器。 4.超级计算机 超级计算机是计算机中功能最强、运算速度最快、存储容量最大的一类计算机,多用于国家高科技领域和尖端技术研究,是一个国家科研实力的体现。它对国家安全、经济和社会发展具有举足轻重的意义,是国家科技发展水平和综合国力的重要标志。 中国在超级计算机方面发展迅速,现已处于国际领先水平。 2013年6月,“2013国际超级计算大会”正式发布了第41期全球超级计算机500强排名。由国防科技大学研制的“天河二号”超级计算机系统,以峰值计算速度每秒5.49亿亿次、持续计算速度每秒3.39亿亿次双精度浮点运算的优异性能位居榜首。这是继2010年“天河一号”首次夺冠之后,中国超级计算机再次夺冠。 2014年6月,在第43期全球超级计算机500强排行榜上,中国超级计算机系统“天河二号”以其33.86Pflop/s(百万的四次方每秒,1000万亿)的运算速度再次位居榜首,获得世界超算“三连冠”,其运算速度比位列第二名的美国“泰坦”快近一倍。 2016年6月,第47期全球超级计算机500强TOP 500榜单中,中国“神威·太湖之光”荣登榜首。当时,“神威·太湖之光”号称全球第一快系统,系统完全采用中国设计和制造的处理器研制而成。此前,在过去六届TOP 500榜单上,“天河二号”一直名列榜首。从第47届开始,TOP 500榜单上中国的“神威·太湖之光”和“天河二号”连续四次分列冠亚军。 2023年11月,第62期全球超级计算机500强排行榜中,第一名是美国橡树岭国家实验室的Frontier超级计算机,中国的“神威·太湖之光”和“天河二号”分列第11、14名。500强中,美国超算占据161个席位,中国占104个。 超级计算机的“下一顶皇冠”将是E级超算,即每秒可进行百亿亿次运算的超级计算器。在天津举行的第二届世界智能大会上,由国家超算天津中心同国防科技大学联合研制的百亿亿次超级计算机“天河三号”E级原型机首次正式对外亮相,与美国的Frontier展开了百亿亿级别的竞争,有望为中国夺回世界超算冠军的宝座。 1.1.2 现代计算机的特点 1.现代数字计算机的特点 现代计算机的特点可从快速性、准确性、通用性、可靠性、逻辑性和记忆性几方面来体现。 (1)快速性。计算机的处理速度(或称运算速度)可简单地用每秒可执行多少百万条指令(MIPS)来衡量。现代计算机每秒可运行几百万条指令,数据处理的速度相当快,巨型计算机的运算速度可达数百乃至上亿MIPS。计算机这么高的数据处理(运算)速度是其他任何处理(计算)工具无法比拟的,使得许多过去需要几年甚至几十年才能完成的复杂运算,现在只要几天、几小时,甚至更短的时间就可以完成。 (2)准确性。数据在计算机内都是用二进制数编码的,数据的精度主要由表示这个数的二进制码的位数决定,也即主要由该计算机的字长所决定。计算机的字长越长,计算精度就越高。现代计算机的字长一般都在32位以上,高档微型计算机的字长达到64位,大型计算机的字长达到128位。计算精度相当高,能满足复杂计算对计算精度的要求。当所处理的数据的精度要求特别高时,可在计算机内配置浮点运算部件—协处理器。 (3)记忆性。计算机的存储器类似于人的大脑,可以“记忆”(存储)大量的数据和计算机程序。计算机事先将程序和数据装载进内部存储器,然后自动根据程序的设定完成各种处理。随着内存储器容量的增大,程序运行空间得到拓展,计算机的性能也在不断提高。用户暂时不用的程序和数据,可以存放于计算机的外部存储器中。早期计算机内存储器的容量较小,存储器往往成为限制计算机应用的“瓶颈”。如今,一台普通的i7微型计算机,内存容量4GB以上,小型计算机以上机器的内存容量则更大。外部存储器的种类在不断增多,容量也在不断增大。例如,普通的微型计算机可配置容量高达6TB的硬盘。随着硬盘技术的不断发展,更大容量的硬盘还将不断推出。 (4)逻辑性。具有可靠的逻辑判断能力是计算机的一个重要特点,是计算机能实现信息处理自动化的重要原因。冯·诺依曼结构计算机的基本思想,就是将程序预先存储在计算机内,在程序执行过程中,计算机会根据上一步的执行结果,运用逻辑判断方法自动确定下一步该做什么,应该执行哪一条指令。逻辑判断能力使计算机不仅能对数值数据进行计算,也能对非数值数据进行处理,使得计算机能广泛地应用于非数值数据处理领域,如信息检索、图形识别及各种多媒体应用等。 (5)可靠性。由于采用了大规模和超大规模集成电路,元器件数目大为减少,印制电路板上的焊接点数和接插件的数目比中小规模集成电路计算机减少了很多,因而功耗减小,发热量降低,从而使整机的可靠性大大提高,使得计算机具有非常高的可靠性。 (6)通用性。现代计算机不仅可以用来进行科学计算,也可用于数据处理、工业实时控制、辅助设计和辅助制造、办公自动化等。计算机的通用性非常强。 2.微型计算机的特点 微型计算机是目前使用最广泛、最普及的一类计算机。它除了具有现代数字计算机的一般特点外,还具有下面一些特点。 (1)体积小,重量轻。微型计算机的核心部件是微处理器。由超大规模集成电路制成的微处理器体积小、重量轻,组装成的一台台式微型计算机,包括主机、键盘、显示器、软盘驱动器和硬盘驱动器,总共不足10kg。由于微型计算机往往为个人所使用,因此习惯上又称它为个人计算机(PC)。近年来,除传统的桌上型台式PC外,又发展了便携式PC、笔记本式PC,以及手掌式PC。笔记本式PC的体积更小,重量也轻,只有文件夹大小,重量为2~3kg,有的只有1kg左右;手掌式PC只有0.5kg。这些计算机都采用LCD液晶显示器,由可抽换式镍氢电池供电。微型计算机的这个特性,增大了其使用的方便性。 (2)成本低,价格低。随着大规模集成电路技术工艺的进步,制作大规模集成电路的成本越来越低,微型计算机系统的制造成本也随之大幅度下降。 (3)使用方便,运行可靠。微型计算机的结构如同搭积木一般,可以根据不同的实际需要进行组合,从而可灵活方便地组成各种规模的微型计算机系统。由于采用大规模集成电路,很多功能电路都已集成在一个芯片上,因此元器件数目大为减少,印制电路板上的焊接点数和接插件的数目比中小规模集成电路计算机减少了l~2个数量级。MOS大规模集成电路的功耗小,发热量低,从而使整机的可靠性大大提高。现在的国产品牌微型计算机,若个人专用,使用四五年直到淘汰,基本上不会出大的故障,都能可靠地运行。由于它体积小、重量轻,搬动容易,这就给使用者带来了很大的方便。特别是便携式PC和笔记本式PC以及手掌式PC,可以在出差、旅行时随身携带,随时取用。 (4)对工作环境无特殊要求。微型计算机对工作环境没有特殊要求,可以放在办公室或家里使用,不像以前的大中小型计算机对安装机房的温度、湿度和空气洁净度有较高的要求,这大大有利于微型计算机应用的普及。但是,提供一个良好的工作环境,能使微型计算机更好地工作。微型计算机工作环境的基本要求是:室温为15~35℃,房间相对湿度为20%~80%,室内经常保持清洁,电源电压稳定,附近避免磁场干扰。 1.1.3 计算机的发展趋势 进入20世纪90年代,世界计算机技术的发展更加突飞猛进,产品在不断升级换代。那么,计算机将往何处去呢?有的专家把未来计算机的发展方向总结为“巨”(巨型化)、“微”(微型化)、“网”(网络化)、“多”(多媒体技术)、“智”(智能化,即让计算机模拟人的认识和思维);也有的专家倾向于把计算机技术的发展趋势归纳为“高”(高性能硬件平台、高性能操作系统的开发和缩小化)、“开”(开放式系统,旨在建立标准协议以确保不同制造商的不同计算机软硬件可以相互连接,运行公共软件,并保证良好的互操作性)、“多”、“智”、“网”。 本书分别从研制和应用的角度来总结计算机的发展趋势。 1.从研制的角度看 从研制计算机的角度看,计算机将不断往大型、巨型和小型、微型以及高性能硬件平台方向发展,也将不断把新技术应用于计算机领域。 1)大型、巨型 从性能的角度,计算机将向高速的、大存储量的和强功能的巨型计算机发展。巨型计算机主要应用于天文、气象、地质、核反应、航天飞机、卫星轨道计算等尖端科学技术领域,研制巨型计算机的技术水平是衡量一个国家科学技术和工业发展水平的重要标志。因此,工业发达国家都十分重视巨型计算机的研制。目前,运算速度为每秒亿亿次的超级计算机已经投入运行。 2)小型、微型 在体积上,将利用微电子技术和超大规模集成电路技术,把计算机的体积进一步缩小。价格也要进一步降低。计算机的微小化已成为计算机发展的重要方向。各种便携式计算机、笔记本式计算机和手掌式计算机的大量面世和使用,是计算机微小化的一个标志。 3)高性能硬件平台 无论是大型计算机、小型计算机还是微型计算机,都将追求高性能的硬件平台。 4)多媒体技术 多媒体技术是当前计算机领域中最引人注目的高新技术之一。多媒体计算机就是利用计算机技术、通信技术和大众传播技术,综合处理声音、图像、文字、色彩多种媒体信息并实时输入/输出的计算机。多媒体技术使多种信息建立了有机的联系,集成为一个系统,并具有交互性。多媒体计算机能真正改善人机界面,使计算机朝着人类接受和处理信息的最自然的方式发展。以往,CPU是为处理数值计算设计的。多媒体出现后,为了处理语音、图像通信以及压缩解压等方面的问题,需要附加DSP信号处理芯片;每增加一种功能,就需要加上相应的接口卡和专用DSP芯片。可以直接做音频处理、图像压缩、解压播放、快速显示等工作的CPU芯片MMX(MultiMedia eXtentions)已经问世多年,诸如“虚拟现实内容创建和数据可视化等数据密集型任务”的完成已然成为事实。这必将把多媒体技术及其应用推向一个新的水平。 5)新技术的应用 (1)量子技术。量子计算机的概念始于20世纪80年代初期。它是利用电子的波动性来制造出集成度很高的芯片。2023年10月11日,中国科学家成功构建255个光子的量子计算机“九章三号”,运算速度可达每秒10亿亿次。 (2)光学技术。在速度方面,电子的速度只能达到300km/s,而光子的速度是3×105km/s;在超并行性、抗干扰性和容错方面,光路间可以交叉,也可以与电子信号交叉,而不产生干扰。世界上第一台光脑已经由欧共体的70多名科学家和工程师合作研究成功,但最主要的困难在于没有与之匹配的存储器件。 (3)超导器件。虽然硅半导体在工艺上已经成熟,是最经济的器件,也是当前的主流,但是这并不排除超导器件在芯片开发领域的无限可能。 (4)生物技术。1994年11月,美国的学术期刊《科学》(Science)最早公布DNA计算机的南加利福尼亚大学的纳德·阿德拉曼博士在试管中成功地完成了计算过程。DNA计算机可以像人脑一样进行模糊计算,它有相当大的存储容量,但速度不是很快。 2.从应用的角度看 从应用计算机的角度看,计算机将不断往高性能软件平台方向、智能化方向和开放系统方向发展,也将不断地智能化、网络化。 (1)高性能软件平台。体现在高性能操作系统的开发。 (2)开放系统。建立起某些协议以保证不同商家制造的不同计算机软硬件可以相互连接,运行公共应用软件,同时保证良好的互操作性。 (3)智能化。智能化指使计算机具有模拟人的感觉和思维过程的能力,即使计算机具有智能。这是目前正在研制的新一代计算机要实现的目标。智能化的研究包括模拟识别、物形分析、自然语言的生成和理解、博弈、定理自动证明、自动程序设计、专家系统、学习系统和智能机器人等。目前,已研制出多种具有人的部分智能的“机器人”,可以代替人在一些危险的工作岗位上工作。 (4)网络化。从单机走向联网,是计算机应用发展的必然结果。计算机网络化是指用现代通信技术和计算机技术把分布在不同地点的计算机互连起来,组成一个规模大、功能强的可以互相传输信息的网络结构。网络化的目的是使网络中的软硬件和数据等资源能被网络上的用户共享。今天,计算机网络可以通过卫星将远隔千山万水的计算机联入国际网络。当前发展很快的微机局域网正在现代企事业管理中发挥越来越重要的作用。计算机网络是信息社会的重要技术基础。 1.2 计算机分类及应用 1.2.1 计算机分类 可以从以下几个角度对计算机进行分类。 1. 按信息的处理形式划分 按照信息的处理形式,可将计算机分为模拟计算机和数字计算机。 (1)模拟计算机。模拟计算机是指计算机所接收、处理的信息形态为模拟量。模拟量是一种连续量,即随时间、空间不断变化的量。用于自动温度观测仪的计算机就是一种模拟式计算机,它所接收的信息是随时间不断变化的温度量。 (2)数字计算机。数字计算机是指计算机所接收、处理的信息形态为数字量。数字量是一种离散量。例如,当前广泛使用的个人计算机,输入计算机的是数字、符号等,它们在计算机内以脉冲编码表示的数字式信息形式存在。 若在数字计算机的输入端加上A/D(模拟量转换为数字量)转换器作为输入设备,在计算机的输出端上加上D/A(数字量转换为模拟量)转换器,数字式计算机就可以作为模拟式计算机使用。 本书以数字计算机为探究对象。 2. 按字长划分 字长是指计算机所能同时并行处理的二进制的位数。 按照计算机的字长,可将计算机分为8位机、16位机、32位机、64位机和128位机等。 3. 按结构划分 按照结构不同,可将计算机分为单片机、单板机、多芯片机、多板机等。 单片机的所有功能电路都制作在一片芯片上,此类机器多用于进行控制;单板机的电路制作在一块印制电路板上。 4. 按用途划分 按照用途不同,将计算机分为通用机和专用机。 通用机是指配有通常使用的软硬件设施,可供多个领域使用,为多种用户提供服务的计算机。如早年计算中心里的计算机及近年来的个人计算机均是通用计算机。 专用机是指配有专项使用的软硬件设施,专门为进行某项特定的任务而配置的计算机。如控制火箭发射的计算机、控制工业自动化流程的计算机等。 5. 按规模划分 把计算机的运算速度或处理速度、存储信息的能力、能连接外部设备的总量、输入/输出的吞吐量作为计算机的规模指标,国际上把计算机分为巨型计算机、小巨型计算机、大型主机、小型计算机、个人计算机、工作站,国内将其分为巨型计算机、大型计算机、中型计算机、小型计算机和微型计算机。 由于计算机发展速度十分惊人,因此评定计算机的规模有很大程度上的相对性。这种相对性表现在不同时期所规定的大、小标准的不同。例如,早期的大型计算机也许只相当于今天的小型计算机,而目前的巨型计算机也许就是未来的小型计算机。 1.2.2 计算机应用 按计算机的应用特点,可将计算机应用范围归纳如下。 1.科学计算 科学计算的特点是计算复杂、计算量大、精度要求高。 在科学技术和工程设计中,都离不开这样复杂的数学计算问题。如生命科学、天体物理、天体测量、大气科学、地球科学领域的研究和探索,飞机、汽车、船舶、桥梁等的设计都需要科学计算。 科学计算需要用速度快、精度高、存储容量大的计算机来快速、及时、准确地得到运算结果。以往的科学计算都是使用大型计算机甚至是巨型计算机来完成。而当代的微型计算机由于其性能的提高,在很大程度上也符合科学计算所要求的条件,在未来的科学计算中也会发挥更大的作用。 2.数据处理 数据处理泛指非科技工程方面所有的计算、管理和任何形式数据资料的处理。即将有关数据加以分类、统计、分析等,以取得有价值的信息,其包括OA(办公自动化)、MIS(管理信息系统)、ES(专家系统)等。例如,气象卫星、资源卫星不失时机地向地面发送探测资料;银行系统每日每时产生着大量的票据;自动订票系统在不停地接收着一张张订单;商场的销售系统有条不紊地进行进货、营销、库存的管理;邮电通信日夜不停地传递着各种信息;全球卫星定位系统有声有色地管理着城市交通;情报检索系统不停地处理着以往和当前的资料;图书管理系统忙碌地接待着川流不息的读者……这一切都要经历数据的接收、加工等处理。 数据处理的特点是:需要处理的原始数据量大,而算术运算要求相对简单,有大量的逻辑运算与判断,结果要求以表格、图形或文件形式存储、输出。例如,高考招生工作中考生的录取与统计工作,铁路、飞机客票预订系统,物资管理与调度系统,工资计算与统计,图书资料检索以及图像处理系统等。数据处理已经深入到经济、市场、金融、商业、财政、档案、公安、法律、行政管理、社会普查等各个方面。 计算机在数据处理方面的应用正在逐年上升,尤其是微型计算机,在数据处理方面的应用已经成为主流。由于数据处理的数据量大,应用数据处理的计算机要求存储容量大。 3.过程控制 过程控制是一门涉及面相当广的学科。工业、农业、国防、科学技术乃至人们的日常生活的各个领域都应用着过程控制。计算机的产生使得过程控制进入了以计算机为主要控制设备的新阶段。用于过程控制的计算机通过传感器接收温度、压力、声、光、电、磁等通常以电流形式表示的模拟量,并通过A/D转换器转换成数字量,然后再由计算机进行分析、处理和计算,再经D/A转换器转换成模拟量作用到被控制对象上。 目前,已有针对不同控制对象的微控制器及相应的传感器接口、电气接口、人机会话接口、通信网络接口等,其控制速度、处理能力、使用范围等都十分先进并广泛用于家用电器、智能化仪表及办公自动化设备中。大型的工业过程自动化,如炼钢、化工、电力输送等控制已经普遍采用微型计算机,并借助局域网,不仅使生产过程自动化,也使生产管理自动化。这样就大大提高了生产自动化水平,提高了劳动生产率和产品质量,也降低了生产成本,缩短了生产周期。 由于过程控制要求实时控制,所以对计算机速度要求不高;但要求较高的可靠性,否则将可能生产出不合格的产品或造成重大的设备或人身事故。 4.计算机辅助系统 计算机辅助系统包括计算机辅助设计、计算机辅助制造、计算机辅助测试、计算机辅助教学等。 计算机辅助设计(Computer Aided Design,CAD)是指利用计算机帮助设计人员进行设计工作。它的应用大致可以分为两大方面,一方面是产品设计,如飞机、汽车、船舶、机械、电子产品以及大规模集成电路等机械、电子类产品的设计;另一方面是工程设计,如土木、建筑、水利、矿山、铁路、石油、化工等各种类型的工程。计算机辅助设计系统除配有一般外部设备外,还应配备图形输入设备(如数字化仪)和图形输出设备(如绘图仪),以及图形语言、图形软件等。设计人员可借助这些专用软件和输入/输出设备把设计要求或方案输入计算机,通过相应的应用程序进行计算处理后把结果显示出来,从图库中找出基本图形进行绘图,设计人员可用光笔或鼠标进行修改,直到满意为止。 计算机辅助制造(Computer Aided Manufacturing,CAM)是指利用计算机进行生产设备的管理、控制与操作,从而提高产品质量,降低成本,缩短生产周期,大大改善制造人员的工作条件。 计算机辅助测试(Computer Aided Testing,CAT)是指利用计算机进行复杂而大量的测试工作。 计算机辅助教学(Computer Aided Instruction,CAI)是指利用计算机帮助学生进行学习的自学习系统,以及教师讲课的辅助教学软件、电子教案、课件等,可将教学内容和学习内容编制得生动有趣,提高学生的学习兴趣和学习效果,使学生能够轻松自如地学到所需要的知识。 5.计算机通信 早期的计算机通信是计算机之间的直接通信,把两台或多台计算机直接连接起来,主要的联机活动是传送数据(发送/接收和传送文件);后来使用调制解调器,通过电话线,配以适当的通信软件,在计算机之间进行通信,通信的内容除了传送数据外,还可进行实时会谈、联机研究和一些联机事务。 计算机网络技术的发展,促进了计算机通信应用业务的开展。计算机网络是半导体技术、计算机技术、数据通信技术以及网络技术的有机结合。其中,数据通信技术负责数据的传输;网络提供传输通道;半导体技术推动高集成度的微型计算机的发展;网络技术把不同地域的众多微型计算机连接成一体,使之成为不受时空制约的、高速的信息交流工具和信息共享工具。 目前,完善计算机网络系统和加强国际信息交流已成为世界各国经济发展、科技进步的战略措施之一,因而世界各国都特别重视计算机通信的应用。多媒体技术的发展,给计算机通信注入了新的内容,使计算机通信由单纯的文字数据通信扩展到音频、视频和活动图像的通信。因特网(Internet)的迅速普及,使得很多幻想成为现实。利用网络可以接收信息和发布信息;利用网络可以使办公自动化,管理自动化;利用网络可以展开远程教育,网上就医;利用网络可以开展自动存取款及跨行的ATM(自动银行)业务;利用网络可以进行商业销售以及电子商务等。 6.人工智能 人工智能(Artificial Intelligence,AI)于20世纪50年代提出,尚无统一定义。无论是“用计算机实现模仿人类的行为”的定义,还是“制造具有人类智能的计算机”的定义,都只能从一个侧面描述人工智能。而在事实上,人工智能已取得了很大进展。它不仅是计算机的一个重要的应用领域,而且已经成为广泛的交叉学科。人工智能所涉及的领域很多,如智能控制、智能检索、智能调度、人工智能语言等。随着计算机速度、容量及处理能力的提高,机器人、机器翻译、专家系统等已成为公认的人工智能成果。 (1)问题求解。人工智能的第一大成就是发展了能够求解难题的下棋程序。1993年,美国研制出名为MACSYMA的软件,能够进行复杂的数学公式符号运算。 (2)逻辑推理与定理证明。1976年,美国的阿佩尔等利用计算机解决了长达124年之久的难题—四色定理,这标志着人工智能的典型的逻辑推理与定理证明方面的运用。 (3)自然语言理解。人工智能在语言翻译与语言理解程序方面的成就是把一种语言翻译为另一种语言和用自然语言输入及回答用自然语言提出的问题等。 (4)自动程序设计。人工智能在自动程序设计方面的成就体现为可以用描述的形式(而不必写出过程)实现不同自动程度的程序设计。 (5)专家系统。专家系统是一个智能计算机程序系统,其内汇集着某个领域中专家的大量知识和经验,通过该系统可以模拟专家的决策过程,以解决那些需要专家做出决定的复杂问题。目前已有专家咨询系统、疾病诊断系统等。 (6)机器学习。学习是人类智能的主要标志及获取知识的基本手段,机器学习是使机器自动获取新的事实及新的推理算法。 (7)人工神经网络。传统的计算机不具备学习的能力,无法处理非数值的形象思维等问题,也无法求解那些信息不完整、具有不确定性及模糊性的问题。神经网络计算机为解决上述问题以人脑的神经元及其互连关系为基础寻求一种新的信息处理机制及工具。神经网络已在模式识别、图像处理、信息处理等方面获得了广泛应用,其最终目的是重建人脑的形象,取代传统的计算机。 (8)机器人学。机器人学是人工智能的重要分支,所涉及的课题很多,如机器人体系结构、智能、视觉、听觉,以及机器人语言、装配等。虽然在工业、农业、海洋等领域中运行着成千上万的机器人,但从结构上说都是按照预先设定的程序去完成某些重复作业的简单装置,远没有达到机器人学所设定的目标。 (9)模式识别。“模式”一词的本义是指完美无缺的供模仿的一些标本;模式识别是指识别出给定物体所模仿的标本。人工智能所研究的模式识别是指用计算机代替人类或帮助人类感知模式,这是一种对人类感知外界功能的模拟。亦即,怎样使计算机对于声音、文字、图像、温度、震动、气味、色彩等外界事物能够像人类一样有效地感知,如手写字符识别、指纹识别、语音识别等都取得了很大进展。如果计算机能够识别人类赖以生存的外部环境,必将具有相当深远的意义。 1.3 计算思维 思维是人类所具有的高级认识活动。按照信息论的观点,思维是对新输入信息与脑内储存的知识经验进行一系列复杂的心智操作过程。思维以感知为基础又超越感知的界限。它探索与发现事物的内部本质联系和规律性,是认识过程的高级阶段。思维具有概括性,主要表现在它对一类事物非本质属性的摒弃和对其共同本质特征的反应。 伴随着社会的发展与技术的进步,人类的思维方式也在发生着改变。 人类通过思考自身的计算方式,研究是否能由外部机器模拟,代替实现计算的过程,从而诞生了计算工具,并且在不断的科技进步和发展中发明了现代电子计算机。计算机的普及及性能的增强,反过来又对人类的学习、工作和生活产生了深远的影响,同时也大大加强了人类的思维能力和认识能力。计算思维就是相关学者在审视计算机科学所蕴含的思想和方法时被总结出来的。 1.3.1 计算思维的定义 计算思维的概念是由美国卡内基梅隆大学计算机科学系主任周以真教授于2006年在美国计算机权威期刊Communications of the ACM上给出的。 计算思维是指运用计算机科学的基础概念进行问题求解和系统设计,以及人类行为理解等涵盖计算机科学之广度的一系列思维活动。计算思维建立在计算过程的能力和限制之上,由人或机器执行。 周教授为了让人们更易于理解,又将它更进一步地定义为:通过约简、嵌入、转化和仿真等方法,把一个看来困难的问题重新阐释成一个人们知道问题怎样解决的方法;是一种递归思维,是一种并行处理,既能把代码译成数据,又能把数据译成代码;是一种多维分析推广的类型检查方法;是一种采用抽象和分解来控制庞杂的任务或进行巨大复杂系统设计的方法,是基于关注分离的方法(SOC方法);是一种选择合适的方式去陈述一个问题,或对一个问题的相关方面建模使其易于处理的思维方法;是按照预防、保护及通过冗余、容错、纠错的方式,并从最坏情况进行系统恢复的一种思维方法;是利用启发式推理寻求解答,亦即在不确定情况下的规划、学习和调度的思维方法;是利用海量数据来加快计算,在时间和空间之间,在处理能力和存储容量之间进行折中的思维方法。 1.3.2 计算思维的特点 周以真教授提出,计算思维的本质是抽象和自动化。所谓抽象就是要求能够对问题进行抽象表示和形式化表达,设计问题求解过程达到精确、可行,并通过软件方法和手段对求解过程予以“精确”实现,即抽象的最终结果是能够机械式地一步一步自动执行。 关于抽象和自动化,在算法理论和NP完全理论方面做出突出贡献的图灵奖获得者Richard Karp提出自己的观点:任何自然系统和社会系统都可视为一个动态演化系统,演化伴随着物质、能量和信息的交换,这种交换可映射(也就是抽象)为符号变换,使之能利用计算机进行离散的符号处理。当动态演化系统抽象为离散符号系统之后,就可采用形式化的规范描述,建立模型、设计算法、开发软件,揭示演化的规律,并实时控制系统的演化,使之自动执行,这就是计算思维中的自动化。 周以真教授在论文中指出了计算思维的六个特质。 (1)计算思维是概念化思维,不是程序化思维。计算机科学涵盖计算机编程,但远不止计算机编程。人们具有计算思维能力,即具备计算机科学家的思维,不但能为解决某个问题编写计算机程序,而且能够在抽象的多个层次上思考问题。 (2)计算思维是基础的技能,而不是机械的技能。基础的技能是每个人为了在现代社会中发挥应有的职能所必须掌握的。生搬硬套的机械技能意味着机械的重复。计算思维不是一种简单、机械的重复。 (3)计算思维是人的思维,不是计算机的思维。计算思维是人类求解问题的方法和途径,但绝非试图使人类像计算机那样去思考。 计算机枯燥且沉闷,计算机思维是刻板的、教条的、枯燥的、沉闷的。以语言和程序为例,必须严格按照语言的语法编写程序,错一个标点符号都会出问题。程序流程毫无灵活性可言。 人类聪颖且富有想象力,人类的计算思维是人类基于计算或为了计算的问题求解的方法论。人类为计算机设计各种软件,赋予计算机以“生命力”,发挥计算机的作用,用自己的智慧去解决那些在计算时代之前不敢尝试的问题,建造那些其功能仅受制于我们想象力的系统。 (4)计算思维是思想,不是人造品。计算思维不只是使人们生产的软硬件等人造物品得以呈现,更重要的是被人类用来求解问题、管理日常生活、与他人进行交流和沟通的手段。 (5)计算思维是数学和工程互补融合的思维,不是数学性的思维。人类试图制造的能代替人完成计算任务的自动计算工具都是在工程和数学结合下完成的。这种结合形成的思维才是计算思维。 计算思维是与形式化问题及其解决方案相关的一个思维过程,其解决问题的表达形式必须是可表述的、确定的、机械的(不因人而异的),必须能够有效地转换为信息处理。表达形式解析基础构建于数学之上,所以数学思维是计算思维的基础。此外,计算思维不仅仅是为了问题解决和问题解决的效率、速度、成本压缩等,它面向所有领域,对现实世界中巨大复杂系统来进行设计与评估,甚至解决行业、社会、国民经济等宏观世界中的问题,因而工程思维(如合理建模)的高效实施也是计算思维不可或缺的部分。 (6)计算思维面向所有人、所有领域。计算思维是面向所有人的思维,而不只是计算机科学家的思维。如同所有人都具备“读、写、算”(Reading,wRiting,and aRithmetic,3R)能力一样,计算思维是必须具备的思维能力。因此,计算思维不是仅计算机专业领域的人应具有的思维,而是所有专业领域的人都应具备的思维。 1.3.3 计算思维的应用案例 计算思维随着计算工具的发展而发展。如果说算盘是一种没有存储设备的计算机(人脑作为存储设备),提供了一种用计算方法来解决问题的思想和能力,那么,图灵机则是现代数字计算机的数学模型,是有存储设备和控制器的。 现代计算机的出现强化了计算思维的意义和作用,人们在学习和应用计算机过程中不断地培养着计算思维。正如学习数学的过程就是培养理论思维的过程,学习物理的过程就是培养实证思维的过程。学生学习程序设计,其中的算法思维就是计算思维。 由于各个专业都需要利用计算机来解决问题,因此,对于广大非计算机专业的没有受过较严格计算机科学教育的人们而言,计算思维成为他们必须要掌握的知识,也就是如何用计算机来解决问题。学生在培养解析能力时不仅需要掌握阅读、写作和算术,还要学会计算思维。而对于计算机科学专业的人来说,几十年来,计算机科学很少强调计算思维,因为计算思维是约定俗成的,已经根植在计算机科学的血脉里。用计算机解决问题就是计算思维的范畴,称为算法。计算机专业的人并不需要去刻意区分这两个名词。当用到较大的概念时会不免俗套地用“计算思维”,而谈到具体的实现方法时,一般会用“算法”。 算法不是用来背诵的,而是需要理解的。要把算法理解透彻,成为习惯思维,或许这就是所谓的计算思维。对算法的深刻理解到计算思维的养成,可以帮助人们在日常生活、行政管理、时间规划、经营理财等各类问题的解决上得到莫大的助益。尽管算法最终要通过具体的程序设计语言来编程(如Python、C、C++、Java等)解决问题,但算法是独立于程序设计语言而存在的。 培养和推进计算思维包含两个方面:一方面是深入掌握计算机解决问题的思路,总结规律,更好、更自觉地应用信息技术;另一方面是把计算机处理问题的方法用于各个领域,推动在各个领域中运用计算思维,使各学科更好地与信息技术相结合。 计算思维不是孤立的,它是科学思维的一部分,其他如形象思维、抽象思维、系统思维、设计思维、创造性思维、批判性思维等都很重要,不要脱离其他科学思维而孤立地提计算思维。在学习和应用计算机的过程中,在培养计算思维的同时,也培养了其他的科学思维(如逻辑思维、实证思维)。 计算思维就像平时说的数学思维、抽象思维一样,只是一种用来解决问题的方法和途径,并不是让人像计算机那样思考。 下面通过几个经典的例子来进一步体会计算思维(或可说算法)。 1.哥德巴赫猜想问题 为了解决一个复杂的问题,人的潜力往往不可能一下子就触及问题的细节方面。在分析了问题的要求之后,人们总是首先设计出一个抽象算法。这一算法往往要借用有关学科中的概念与对象,而不去考虑问题的细节方面—诸如在计算机中怎样访问内存、怎样存储数据等,只是在抽象数据上实施一系列抽象操作。这些数据和操作反映了问题的本质属性,而将所有的细节都抽象化了。因此,这样的算法描述非常容易得到有关学科中相关理论的证明。下一步,将算法求精,使之更加细化、清晰。这时,算法中就包括更多的细节。这些细节已不再是问题所在学科中的细节,而是怎样求解的细节。例如,考虑那些与求解该问题有关的数值方法方面的细节。如此下去,这一求精的过程可能还得连续进行几个较低的级别,直到使用某种数据结构能轻而易举地用某一种计算机语言编制程序为止。如果能掌握大量的程序设计基本单元,就可能使求精过程大为缩短,程序设计能力也就提高了。 下面,通过一个实例说明怎样在复杂问题的程序设计中进行抽象和逐步求精的操作。 问题描述:用计算机验证哥德巴赫猜想(一个大偶数总可以分解成为两个素数之和)。 这一猜想目前还未被完全证明,但可以用计算机来验证它。即,对一个大偶数,找到两个素数,若它们的和等于这个大偶数,那么,对于这个大偶数来讲猜想就得到了验证。 这种验证可以进行若干次,但并不能使猜想得到验证。反过来,若对一个大偶数找不到对应的两个素数,则可反证不成立。 可以沿着以下3个步骤不断地进行算法细化。 (1)设计抽象算法。根据哥德巴赫猜想本身的概念,对一个大偶数i,总可写成i=m+n。 (2)进行算法求精。细化上面的算法,考虑如何确定素数m。 (3)考虑如何验证m和n是素数。 步骤(1)中的i=m+n是一个待定方程,可能存在许多组解,也可能没有解。 如果找到一对特定的m和n,它们既是素数,其和又等于i,那么,对i来讲,哥德巴赫猜想就得到了验证。 这种思维方法是抽象的,不涉及具体的m、n和i,而是以数学原则为基础的,容易得到验证。 哥德巴赫猜想验证初步流程图如图1.1所示。 步骤(2)是一个算法细化的过程。对一个大偶数而言,其所在范围内将有有限多个素数。例如,a=30,其下的素数有2、3、5、7、11、13、17、23、29,共9个,可以对一个大偶数范围内的所有素数逐一枚举出来。另外,只有偶数4可以唯一地写成4=2+2的形式,超过4的任何一个偶数都不能分解成2和另外一个素数,只能分解成两个奇数。从而可以得到一个确定m的算法:m只能取i内的所有奇数 如果确定了素数m,则由i=m+n就可唯一地得到n。剩下的工作就是验证n是不是素数。如果n不是素数,就要重新确定m。 哥德巴赫猜想验证细化流程图见图1.2。 图1.1 哥德巴赫猜想验证初步流程图 图1.2 哥德巴赫猜想验证细化流程图 步骤(3)具体到如何验证m和n是素数的问题。这是两个相同的过程。如果对验证素数的程序设计单元非常熟悉,就不必再进一步求精。否则,再对验证素数进行求精。 根据素数的性质,对一个整数k,若它不能被k的平方根内的所有数整除,则必为素数。 可设计如图1.3所示的判定素数的流程图。 图1.3 判定素数流程图 经过以上操作步骤,可以写出程序(假定大偶数为6~1000)。Python语言程序如下。 #验证某数是否素数的函数 import math import sys def isprime(k): for j in range(2,int(math.sqrt(k))+1): if(n%j==0): return 0 return 1 #哥德巴赫猜想 for i in range(6,1001,2): m=1 while (1): m+=2 if (m>=i): print('哥德巴赫猜想不成立!\n') sys.exit() else: if (isprime(m)==0): continue if(isprime(i-m)==0): continue print("对于偶数%d,哥德巴赫猜想成立。可以写成%d与%d之和。\n"%(i,m,i-m)) break 程序的运行结果如下。 对于偶数6,哥德巴赫猜想成立。可以写成3与3之和。 对于偶数8,哥德巴赫猜想成立。可以写成3与5之和。 对于偶数10,哥德巴赫猜想成立。可以写成3与7之和。 对于偶数12,哥德巴赫猜想成立。可以写成5与7之和。 …(限于篇幅,此处省略了偶数14~990) 对于偶数992,哥德巴赫猜想成立。可以写成73与919之和。 对于偶数994,哥德巴赫猜想成立。可以写成3与991之和。 对于偶数996,哥德巴赫猜想成立。可以写成5与991之和。 对于偶数998,哥德巴赫猜想成立。可以写成7与991之和。 对于偶数1000,哥德巴赫猜想成立。可以写成3与997之和。 通过上面这个例子,可以感受到计算思维的存在。正如谭浩强教授在《研究计算思维,坚持面向应用》的文章中指出:思维属于哲学范畴。计算思维是一种科学思维方法,显然,所有人都应学习和培养。但是学习的内容和要求是相对的,对不同的人群应该有不同的要求。计算思维不是悬空的、不可捉摸的抽象概念,是体现在各个环节中的。 简单来说,计算思维就是用计算机科学解决问题的思维。它是每个人都应该具备的基本技能,而不仅仅属于计算机科学家。对于学计算机科学的人来说,培养计算思维是至关重要的。 另外,还必须清楚,递归思维是计算思维的重要组成部分,正如用递归的方法来解决问题是计算机科学中比较重要的解决问题的方法。递归思维最基本的理念可以总结为:一个问题的解决方案由其小问题的解决方案构成。下面通过一个例子来感受递归思维。 2.汉诺塔问题 汉诺塔问题源于印度的一个古老传说。在印度北部的圣庙里,大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘,这就是所谓的汉诺塔。大梵天命令婆罗门把圆盘按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。僧侣们预言,当所有的黄金圆盘都从大梵天放好的那根柱子上移到另外一根上时,世界就将在一声霹雳中毁灭,汉诺塔、庙宇和众生也都将同归于尽。 那么,64片黄金圆盘到底如何移动?需要移动多少次?世界又将在多长时间后毁灭呢?这样一个似乎非常烧脑的问题,其实,运用计算思维,借助程序,运行几行代码就可以解决。 为了解决该问题,可先将问题描述为:将n个圆盘从A柱上借助B柱移动到C柱上,求解移动盘子的次数和步骤。 将n个圆盘从A柱移到C柱可以分解为以下3个步骤。 (1)将A柱上n-1个圆盘借助C柱先移到B柱上。 (2)把A柱上剩下的一个圆盘移到C柱上。 (3)将n-1个圆盘从B柱借助于A柱移到C柱上。 步骤(3)和(1)的移动次数相同;步骤(2)只需要1次。 假设用f(n)表示n个圆盘需移动的次数,则有: f(n)=2×f(n-1)+1 f(1)=1=21-1,只有一个圆盘时,移动的次数为1次,即直接从A柱移到C柱。 f(2)=2×f(1)+1=3=22-1,只有2个圆盘时,移动的次数为3次,即将第1个圆盘从A柱移到B柱,然后将第2个圆盘从A柱移到C柱,再将B柱上的圆盘移到C柱。 f(3)=2×f(2)+1=7=23-1,只有3个圆盘时移动的次数为7次:先将最上面2个圆盘从A柱移动到B柱的次数为f(2)即3次,将第3个圆盘从A柱移动到C柱的次数为1次,再将B柱上的2个圆盘移动到C柱的次数为f(2)即3次; f(k+1)=2×f(k)+1=2k+1-1 f(n)=2×f(n-1)+1=2n-1 当n=64时,f(64)=18 446 744 073 709 551 615。 按移动一次花费1s计算,平年365天有31 536 000s,闰年366天有31 622 400s,平均每年31 556 952s,则需要约5845亿年才能完成移动,而地球存在至今不过45亿年,太阳系的预期寿命也不过几百亿年。5800多亿年后,太阳系、银河系,以及地球上的一切生命,连同梵塔、庙宇等,可能都已经灰飞烟灭。 这样一个现实中几乎无法实现的问题,可以借用计算机的超高速运算能力,在计算机中模拟实现,展示出具体的移动步骤和过程。 由前面的分析,可以得到解决汉诺塔问题的递归式: 根据递归式,可以用递归方法,通过编制、调用函数解决汉诺塔问题。Python代码如下。 i=1 def move(n,move_from,move_to): global i print('第%d步:将%d号金片从%s移动到%s'%(i,n,move_from,move_to)) i+=1 def hanoi(n,A,B,C): if n==1: move(1,A,C) else: hanoi(n-1,A,C,B) move(n,A,C) hanoi(n-1,B,A,C) hanoi(64,'A','B','C') #移动64个圆盘 move(n,move_from,move_to)函数的功能是将第n个圆盘从move_from柱移动到 move_to柱;hanoi(n,A,B,C)函数的功能是将n个圆盘从A柱借助B柱移动到C柱;hanoi(64,'A','B','C')是通过调用hanoi()函数模拟移动64个圆盘的过程步骤。 运行程序,马上就可以模拟出移动64个圆盘的所有步骤。 限于篇幅,运行程序时,将hanoi(64,'A','B','C')修改为hanoi(4,'A','B','C'), 只模拟移动4个圆盘的步骤。共需15步,具体步骤如下。 第1步:将1号圆盘从A移动到B 第2步:将2号圆盘从A移动到C 第3步:将1号圆盘从B移动到C 第4步:将3号圆盘从A移动到B 第5步:将1号圆盘从C移动到A 第6步:将2号圆盘从C移动到B 第7步:将1号圆盘从A移动到B 第8步:将4号圆盘从A移动到C 第9步:将1号圆盘从B移动到C 第10步:将2号圆盘从B移动到A 第11步:将1号圆盘从C移动到A 第12步:将3号圆盘从B移动到C 第13步:将1号圆盘从A移动到B 第14步:将2号圆盘从A移动到C 第15步:将1号圆盘从B移动到C 由此可见,借助现代计算机超强的计算能力,有效地利用计算思维,就能解决之前人类望而却步的很多大规模计算问题。 小结 本章主要介绍了计算机的发展历史、现代计算机的特点、计算机的发展趋势、计算机的分类和应用以及计算机思维。 希望学生在了解计算机的发展历史、趋势以及应用的基础上,通过对计算思维的定义、特点及应用的学习,为培养和推进计算思维打下良好的基础。 习题 一、选择题 1. 美国宾夕法尼亚大学1946年研制成功的一台大型通用数字电子计算机,名称是( )。 A. Pentium B. IBM PC C. ENIAC D. Apple 2. 第四代计算机采用大规模和超大规模( )作为主要电子元件。 A. 电子管 B. 晶体管 C. 集成电路 D. 微处理器 3. 计算机中最重要的核心部件是( )。 A. DRAM B. CPU C. CRT D. ROM 4. 计算机思维的本质是对求解问题的抽象和实现问题处理的( )。 A. 高速度 B. 高精度 C. 自动化 D. 可视化 5. 将有关数据加以分类、统计、分析,以取得有价值的信息,称为( )。 A. 数据处理 B. 辅助设计 C. 实时控制 D. 数值计算 6.计算机技术在半个多世纪中虽有很大的进步,但至今其运行仍遵循科学家( )提出的基本原理。 A. 爱因斯坦 B. 爱迪生 C. 牛顿 D. 冯·诺依曼 7.冯·诺依曼机工作的最重要特点是( )。 A. 存储程序的概念 B. 堆栈操作 C. 选择存储器地址 D. 按寄存器方式工作 二、填空题 1. 数字式电子计算机的主要特性可从记忆性、可靠性、( )、( )、 ( )和( )等方面来体现。 2. 世界上第一台数字式电子计算机诞生于( )年。 3. 计算机系统是由( )、( )两部分组成的。 4. 微处理器由( )、( )和( )组成。 5. 计算思维的本质是( )和( )。 6. 运用计算机科学的基础概念和知识进行问题求解、系统设计,以及人类行为理解等一系列思维活动为( )。 7. 第一代电子计算机逻辑部件主要由( )组装而成;第二代电子计算机逻 辑部件主要由( )组装而成;第三代电子计算机逻辑部件主要由( )组装而成;第四代电子计算机逻辑部件主要由( )组装而成。 8. 从应用计算机的角度看,当前计算机的发展朝着( )、( )、( ) 和( )等方向发展。