第一篇计算机基础知识 计算机和数字化技术的发展为人类带来了空前的发展和机遇,强大的软硬件系统正在通过网络改变人类的交流方式。计算机的发展是人类文明的重要驱动力。当今世界谁的计算能力强,谁就能引领人类发展潮流。随着信息技术的飞速发展,大数据、人工智能、物联网等新业态快速融入我们的生活,量子计算、类脑计算等新型计算技术相继涌现。第1章 第1章〓认识计算机人类在20世纪进入了数字化时代。21世纪后,以云计算、物联网、大数据和人工智能为代表带动的新时代信息技术得到突飞猛进的发展。 1.1计算机的起源与发展1.1.1计算机的发展史1. 计算机硬件历史1) 古代计算 人类文明发展初期就有了计算的需要,同时也有了辅助计算的各类工具。据记载,文字出现之前的漫长年代里,远图1.1古印加人靠绳结来 存储信息并计算 古时代人类采用“结绳记事”的方式来记录事实并进行传播。 例如,印加人在公元前14世纪使用串连的绳结来进行记录,绳结的种类与位置、绳索的方向、层次和颜色通常代表日期及相对应人、物的数量,如图1.1所示。 公元前5世纪,中国人开始用算筹(见图1.2(a))作为计算工具,并在公元前3世纪得到普遍的采用,后来,人们发明了算盘(见图1.2(b)),并在15世纪得到普遍采用。它加快了人类的计算速度。算盘对人类有较强的数学教育功能,因此使用至今,并流传到海外,成为一种国际性的计算工具。 图1.2算筹与算盘 信息技术基础与应用第一篇计算机基础知识2) 机械计算机 1621年,英国数学家奥特·雷德(William Oughtred)根据对数原理发明了圆形计算尺的使用,也称对数计算尺,如图1.3所示。17世纪中期,对数计算尺改进为尺座和在尺座内部移动的滑尺。18世纪末,发明蒸汽机的瓦特在尺座上添置了一个滑标,用来存储计算的中间结果。对数计算尺能进行加、减、乘、除、乘方、开方运算,甚至可以计算三角函数、指数函数和对数函数,它一直使用到袖珍电子计算器面世。即使在20世纪60年代,对数计算尺的使用仍然是理工科大学生必须掌握的基本功,是工程师身份的一种象征。 1642年,法国数学家帕斯卡(Blaise Pascal)发明了帕斯卡加法器,这是人类历史上第一台机械式计算工具,如图1.4所示,其原理对后来的计算工具产生了持久的影响。帕斯卡加法器是由齿轮组成,以发条为动力,通过转动齿轮来实现加减运算,用连杆实现进位的计算装置。帕斯卡从加法器的成功中得出结论: 人的某些思维过程与机械过程没有差别,因此可以设想用机械来模拟人的思维活动。 图1.3计算尺 图1.4机械式计算机 1673年,德国数学家莱布尼茨研制了一台能进行四则运算的机械式计算器,称为莱布尼茨四则运算器。这台机器在进行乘法运算时采用进位——加(shiftadd),即步进(stepped reckoning)的方法,后来演化为二进制,被现代计算机采用。 1822年,英国数学家查尔斯·巴贝奇(Charles Babbage)开始研制差分机,专门用于航海和天文计算,这是最早采用寄存器来存储数据的计算工具,是早期程序设计思想的萌芽,使计算工具从手动机械跃入自动机械的新时代。在他构想的设计中,包括许多现代计算机的重要部件。他的设计中第一次出现了内存,这使中间值不必再重新输入。此外,他的设计还包括数字输入法和机械输入法,采用穿孔卡片方式。 为这个差分机做出重要贡献的还有英国人奥古斯塔·艾达·金(Augusta Ada Byron),她是计算史上的传奇人物。她对巴贝奇的分析机非常感兴趣,并扩充了他的想法(同时修改了他的一些错误)。艾达被认为是史上第一位程序设计员,她也提出了程序设计中循环的概念。美国国防部使用的Ada程序设计语言就是以她的名字命名的。 1890年,美国人赫尔曼·赫勒利斯(Herman Hollerith)发明了第一台机电式制表机,这个制表机图1.5阿兰·图灵 具有编程能力,从穿孔卡片读取信息,他的设备从根本上改变了美国每十年举行一次的人口普查。后来,赫勒利斯创建了IBM公司。 3) 电子计算机 1936年,英国数学家阿兰·图灵(Alan M Turing)(见图1.5)发明了一种抽象数学模型,即图灵机,为计算理论的主要领域奠定了基础。 1946年,美国宾夕法尼亚大学和有关单位制成了第一台通用完全电子计算机“电子数字积分仪与计算机”(electronic numerical integrator and calculator,ENIAC),它是由约翰·莫奇勒(John Mauchly)和普利斯伯·埃克特(Eckert J P)等主要设计的,冯·诺伊曼(Hohn von Neumann)(见图1.6)参与了改进工作。ENIAC使用了约18000个电子管,占地约170平方米,功率约150千瓦(见图1.7)。 在此期间,冯·诺伊曼提出了至关重要的计算机的逻辑结构,即“存储程序”的概念和二进制原理。后来,人们把利用这种概念和原理设计的电子计算机系统统称为“冯·诺伊曼体系结构”计算机。 1950年以后出现的计算机都是基于冯·诺依曼体系结构的,即使它们变得更快、更小、更便宜,但原理几乎是相同的。一般将计算机发展划分为五代,每一代计算机的改进主要体现在硬件或软件方面,而不是体系结构。 图1.6冯·诺伊曼 图1.7第一台通用计算机ENIAC (1) 第一代计算机。第一代计算机(约1946—1958)以商用计算机的出现为主要特征。其主要元器件是电子管(见图1.8),体积较大,功率大,散热大,运行不可靠,主存储器是磁鼓,输入设备是读卡机,输出设备一般是穿孔卡片或行式打印机,后期出现磁带存储。这一代计算机体积庞大,需要巨大的专用空间。 (2) 第二代计算机(约1959—1964)。第二代计算机使用晶体管代替真空管,这样既减小了计算机的体积,也节省了开支(见图1.9)。它使用磁芯作为主存储器,使用磁盘作为外部存储。同期出现FORTRAN和COBOL等高级计算机程序设计语言,使编程更加容易。 图1.8电子管 图1.9晶体管计算机 (3) 第三代计算机(1965—1970)。第三代计算机采用集成电路作为基本元器件,功耗、体积、价格进一步下降,速度和可靠性相应的提高,出现键盘和屏幕作为输入/输出设备,如图1.10所示。小型公司可以购买软件,而不必自己写程序。 (4) 第四代计算机(1971—1984)。第四代计算机的特征是大规模集成电路。20世纪70年代早期,一个硅片上可以集成几千个晶体管,而20世纪70年代中期,一个硅片则可以容纳整个微型计算机。在计算机发展的这几个时代中,每一代计算机硬件的功能都变得越来越强大,体积则越来越小,花费也越来越少。这个时期英特尔(Intel)创始人之一戈登·摩尔(Gordon Moore)提出了著名的摩尔定律摩尔定律: 当价格不变时,集成电路上可容纳的元器件的数目每隔18~24个月便会增加一倍,性能也将提升一倍。。 IBM于1981年开发出个人计算机(personal computer,PC),如图1.11所示。PC变得越来越便宜,因而也非常普及,几乎每人都可以有一台。 图1.10集成电路计算机 图1.11IBM PC 苹果公司于1984年开发了Macintosh微型计算机,如图1.12所示。同期出现开发软件为主的软件公司,如微软(Microsoft),这个时期计算机网络也开始普及。 (5) 第五代计算机(1985年至今)。这个时代是一个飞速发展的时代,如笔记本电脑(见图1.13)、掌上电脑层出不穷,出现了CDROM、SSD等现代存储,多媒体、VR、AI得到长足发展,计算机网络快速发展。计算机运算速度飞速提高。 图1.12Macintosh计算机 图1.13笔记本电脑 4) 计算机的运算速度 第一台计算机ENIAC运算速度是5000次每秒,现在一般的计算机运算速度都在万亿次每秒,并且都大部分采用并行体系结构。2019年,国际上运算速度较快的主要超级计算机见表1.1。 2. 计算机软件历史 计算机软件是计算机的灵魂,它在计算机中起到关键作用,下面介绍软件发展历程。表1.12019年国际超级计算机 排名名称国别主 要 指 标其他1Summit美国处理器有2397824 个;峰值速度为200795 TFLOPSTFLOPS: tera floatingpoint opervations per second,每秒万亿次浮点运算。IBM和美国能源部橡树岭国家实验室(ORNL)2Sierra美国处理器有1572480 个;峰值速度为119193 TFLOPS美国国家核安全局(NNSA)3神威太湖之光中国处理器有10649600个;峰值速度为125436 TFLOPS中国国家并行计算机工程技术研究中心。已经全部使用国产CPU4天河二号 TH—2(见图1.14)中国处理器有4981760个;峰值速度为33862 TFLOPS中国国防科技大学5Piz Daint代恩特峰瑞士处理器有387872个;峰值速度为27154 TFLOPS瑞士国家超算中心图1.14天河二号超级计算机 1) 第一代软件(1951—1959) 计算机内部数据与指令都是用二进制(0和1)表示的,因此第一代软件都是由二进制编写的,也称由机器语言编写的。 用机器语言进行程序设计不仅复杂耗时,而且容易出错,因此程序设计员就开发了一些便于记忆的英文缩写符号和工具辅助程序设计。这就是第一代人工程序设计语言,称为汇编语言,它们使用助记忆码表示每条机器语言指令。 由于每个程序在计算机上执行时采用的最终形式都是机器语言,所以汇编语言的开发者还需要用一种翻译程序把用汇编语言编写的程序翻译成机器代码。这种程序称为汇编器,它读取每条用助记忆码编写的程序指令,并把它翻译成等价的机器语言。 汇编语言一般称为低级语言,通常是为特定的计算机或系列计算机专门设计的,它的操作跟硬件紧密相关。很多硬件设施的嵌入式编程使用的都是汇编语言,因为汇编语言更直接、更有效率。目前很多数码产品的芯片、主板等都包含了嵌入式程序,开发这些程序使用的就是汇编语言。 2) 第二代软件(1959—1965) 高级语言是相对于汇编语言而言的,它是以人类的日常语言为基础的一种程序设计语言,使用类似于英语的语句编写指令,从而使程序员编写程序更容易,也有较高的可读性。 这个时期常用的两种语言是FORTRAN(formula translation)和COBOL(common business oriented language)。FORTRAN是世界上最早出现的计算机高级程序设计语言,主要应用于科学和工程计算领域。COBOL是数据处理领域使用广泛的程序设计语言。 高级语言程序若要在计算机上执行,必需先将其翻译成计算机能识别的机器语言才能执行。对于用不同的语言编写的代码,可以采用两种不同的翻译方式——编译翻译和解释翻译,分别对应着编译型语言和解释型语言。高级语言与计算机的硬件结构及指令系统无关,它有更强的表达能力,可方便地表示数据的运算和程序的控制结构,能更好地描述各种算法,而且容易学习掌握。但高级语言编译生成的程序代码一般比用汇编程序语言设计的程序代码要长,执行的速度也慢。 3) 第三代软件(1965—1971) 第三代软件中出现了一个重要的软件——操作系统(operating system,OS)。其主要功能是管理并合理分配计算机资源,因此出现了分时系统。这个时期出现了BASIC语言。 在前两代,程序设计员就是用户,一般也分为系统程序设计员和应用程序设计员。在第三代,系统程序员为他人编写软件工具,计算机用户已可能不是程序员。 20世纪60年代中期,大容量、高速度计算机的出现,使计算机的应用范围迅速扩大,软件开发数量急剧增长。高级语言的出现和操作系统的发展引起了计算机应用方式的变化,大量数据处理催生了第一代数据库管理系统。 软件系统的规模越来越大,复杂程度越来越高,软件可靠性问题也越来越突出。原来的个人设计、个人使用的方式不再满足要求,迫切需要改变软件生产方式、提高软件生产率,以避免软件危机爆发。 1968年,北大西洋公约组织(NATO)在联邦德国的国际学术会议创造了软件危机(software crisis)一词。在1968、1969年连续召开了两次NATO会议,会议提出了软件工程的概念,以解决软件危机。 4) 第四代软件(1971—1989) 20世纪70年代出现了较好的程序设计技术,即结构化程序设计方法,这是一种有逻辑、有规则的程序设计方法。其中Pascal语言和Modula2是具有代表性的高级语言。这个时期比较著名的高级语言还有C语言,它也是一种允许用户使用低级语句的结构化语言,它目前仍然是程序开发的重要语言。 AT&T公司开发了UNIX操作系统;IMB为IBM PC开发了PCDOS系统,微软开发了MSDOS系统;Macintosh机的Mac OS操作系统引入了鼠标操作的图形界面。这些程序可以让一个没有计算机经验的用户实现一项特定的任务。比较典型的应用程序主要有电子制表软件(Lotus 123)、文字处理软件(WordPerfect)和数据库管理系统(dBase)。 5) 第五代软件(1990至今) Microsoft Windows操作系统在PC市场占有绝对优势。随着网络的发展,开源操作系统Linux占据了部分服务器市场。Microsoft Office办公套件受到广泛欢迎。 Java语言和C/C++语言成为著名的计算机程序设计高级语言。替代纯文本的图像、声音及视频等多媒体技术逐渐走向成熟。1990年2月,著名的图像处理软件Photoshop 1.0问世。 随着智能手机以及各数字设备的发展,其中的各类应用软件APP层出不穷。人们正处在一个信息化与智能化交集的时代,物联网、人工智能、区块链、大数据等技术创新既是信息产业发展的阶段性成果,也是开启智能化时代的重要动因,更为关键的是,它们正彼此促进融合发展。 1.1.2计算机的分类 计算机及相关技术的迅速发展带动计算机类型也不断分化,形成了各种不向种类的计算机。 1. 按照计算机性能区分 1) 超级计算机 超级计算机也称为高性能计算机,目前国际上对高性能计算机较权威的评测是世界计算机排名(即TOP500)。 2) 服务器 服务器是指在网络环境下为网上多个用户提供共享信息资源和各种服务的一种高性能计算机,如社交网站或购物网站都需要后其服务的支持。在服务器上需要安装网络操作系统、网络协议和各种网络服务软件。服务器主要为网络用户提供文件、数据库、应用及通信方面的服务。 3) 工作站 工作站通常是一种高档的微型计算机,通常配有高分辨率的大屏幕显示器及容量很大的内存储器和外部存储器,主要面向专业应用领域,具备强大的数据运算与图形、图像处理能力。工作站主要是为满足工程设计、动画制作、科学研究、软件开发、金融管理、信息服务、模拟仿真等专业领域而设计开发的高性能微型计算机。 4) 个人计算机 个人计算机通常也称为微型计算机。目前个人计算机已广泛应用于办公、学习、娱乐等社会生活的方方面面,是发展最快、应用最为普及的计算机。人们日常使用的台式计算机、笔记本电脑、掌上型计算机等都是微型计算机。 5) 嵌入式计算机 嵌入式计算机是指嵌入对象体系中,实现对象体系智能化控制的专用计算机系统。嵌入式计算机系统以应用为中心、以计算机技术为基础,并且软硬件组合适当,常用于实现对其他设备的控制、监视或管理等功能。例如,我们日常生活中使用的电冰箱、全自动洗衣机、空调、电饭煲、数码产品等都采用了嵌入式计算机技术。 2. 按照计算机用途划分 1) 通用计算机 通用计算机是为能解决各种问题、具有较强的通用性而设计的计算机。它具有一定的运算速度和存储容量,连接通用的外部设备,安装各种系统软件和应用软件。目前使用最多的个人计算机就属于通用计算机。 2) 专用计算机 专用计算机是为解决一个或一类特定问题而设计的计算机,其硬件和软件的配置由具体需要解决的问题而定。专用计算机能高速、可靠地解决特定问题,但是其功能简单,只安装能够解决指定问题程序,如工业控制机、银行专用机、超市收银机等,目前流行的智能手机也可认为是专用计算机。 1.1.3计算机的发展趋势 随着现代信息技术的不断发展,计算机在各行各业都得到了广泛的应用,计算机的发展也在不断地前进。现代计算机已经飞速发展了70多年,虽然,基于集成电路的计算机短期内还不会退出历史舞台,但一些新形态的计算机正在被加紧研究,这些计算机主要是光计算机、生物计算机、量子计算机、超导计算机和纳米计算机等。以下主要介绍前三种。 1. 光计算机 光计算机利用激光光束而非电波进行数据计算和资料处理,其速度比当今最先进的超级电子计算机要快1000多倍,世界计算机科技将因其发生革命性的突破。 光计算机能广泛地用来执行一些新任务,如预测天气、气候等一些复杂而多变的过程。再如,它还可以应用于电话传输。因为现在电话信号正在逐步发展为由光导纤维中的激光束来传送,如果用光计算机来处理这些信号,就不必在电话局内将携带声音的光脉冲转变成电脉冲,就可以省掉光—电—光的转换过程,直接将携带声音信号的光脉冲加以处理后发送出去,这样,大大提高了传送效率。 由于光计算机善于进行大量的运算,所以能高效地直接处理视觉形式、声波形式,以及其他任何自然形式的信息。此外,它还是识别和合成语言、图画和手势的理想工具。这样,光计算机就能以最自然的形式进行人机对话和人机交流。 2. 生物计算机 生物计算机是人类期望在21世纪实现的伟大工程,是计算机世界中最年轻的分支。生物计算机也称仿生计算机,主要原材料是生物工程技术产生的蛋白质分子,并以此作为生物芯片来替代半导体硅片,利用有机化合物存储数据。生物计算机涉及多种学科领域,包括计算机科学、脑科学、分子生物学、生物物理、生物工程、电子工程等。 3. 量子计算机 量子计算机是一种可以实现量子计算的机器,它通过量子力学规律实现数学和逻辑运算,处理和储存信息能力的系统。它以量子态为记忆单元和信息储存形式,以量子动力学演化为信息传递与加工基础的量子通信与量子计算。在量子计算机中,硬件的各种元器件的尺寸达到原子或分子的量级。量子计算机是一个物理系统,它能存储和处理关于量子力学变量的信息。 量子计算机也有着自己的基本单位——昆比特(qubit)。昆比特又称量子比特,它通过量子的两态的量子力学体系来表示0或1。量子计算的原理就是将量子力学系统中量子态进行演化得到结果。