前言
计算机科学是一个非常广泛的概念,也是一个非常庞大的体系,我们可以将其定义为“和计算机相关的一系列问题”。既然是和计算机相关的一系列问题,那么在探索这一系列问题之前,我们需要先了解什么是计算机。
既然要了解计算机,那么我们就要从计算机的概念开始逐步了解计算机的各个组成部分。
图灵机
图灵机是对计算机的首次描述。
图灵机(图灵模型)是由艾伦·麦席森·图灵(Alan Mathison Turing)在1936年首先提出的一个通用计算设备的设想。
图灵认为所有的计算都可以在一种特殊的机器上执行,这种特殊的机器就称之为图灵机。
需要注意的是,图灵机并不是一个真实的机器,而是一个抽象概念,是对可以执行所有计算的通用计算设备的一个设想。
数据处理器
由于图灵机是用于执行计算的机器,要执行计算就一定需要原始的输入数据,执行计算的同时必然会产生结果(输出数据),计算的执行过程,我们就可以认为是对原始输入数据的处理过程,因此,我们可以将图灵机看作成一种处理数据的机器,即数据处理器。
可编程数据处理器
机器执行计算如何处理数据肯定需要我们进行指定,那么我们可以通过何种方式告诉机器每一步如何处理数据,答案就是指令,我们可以通过一系列指令的集合告诉机器如何处理数据,指令组成的集合称之为程序,可以通过程序控制机器处理数据过程的机器称为可编程数据处理器。
对于用于控制数据处理器的程序,应当要能够保证结果的正确性:
- 相同的程序,相同的输入数据,应当有相同的输出数据;
- 相同的程序,不同的输入数据,应当有相应于当前输入的正确输出数据;
- 不同的程序,相同的输入数据,应当有符合当前程序的正确输出数据。
通用图灵机
对于可以执行任何计算的图灵机,称之为通用图灵机,即可以适用于不同场合的不同计算,只要提供了合适的程序,该机器就可以执行任何运算。
通用图灵机是对现代计算机的首次描述。现代计算机和通用图灵机一样,我们只需要提供输入数据和用于描述如何进行运算的程序,就可以执行符合相应场合下的相应计算,产生相应的输出数据。
计算机是可编程的通用数据处理器。
冯·诺依曼计算机
1946年2月14日,世界上第一台通用电子计算机埃尼阿克(ENIAC,Electronic Numerical Integrator And Computer 电子数字积分计算机)诞生。(ENIAC是世界上第一台通用电子计算机,但不是世界上第一台计算机)
在基于冯·诺依曼体系的计算机诞生之前,计算机是基于通用图灵机模型建造的,在计算机的存储器中存储的只有数据,程序并没有存储在存储器中。
1946年,冯·诺依曼提出存储程序原理,又称冯·诺依曼原理,由于程序和数据在逻辑上是相同的(假设在机器内部使用电压的不同表示不同的信息,那么对于机器来说不论是程序还是数据都只是电压),在计算机内部都可以采用二进制进行表示(只由0和1组成的数字串进行表示,由有无电压状态组成的连续状态变化),因此程序和数据一样也能够存储在计算机的存储器中。
基于冯·诺依曼原理(存储程序原理)建造的计算机,也称为冯·诺依曼计算机
冯·诺依曼计算机的四个子系统
冯·诺依曼计算机分为四个子系统:
- 存储器
- 算术逻辑单元
- 控制单元
- 输入/输出子系统
1.存储器
存储器是用来存储数据和程序的区域。
2.算术逻辑单元
算术逻辑单元是用来进行算术运算和逻辑运算的地方。
3.控制单元
控制单元是对存储器、算术逻辑单元、输入/输出等子系统进行控制的单元。
4.输入/输出子系统
输入子系统负责从计算机外部接收输入的数据和程序,输出子系统负责将计算机的处理结果输出到计算机外部。
存储程序的概念
存储程序,就是程序和数据一样存储在计算机的存储器中,由于程序和数据都存储在存储器中,所以程序和数据需要采用相同的格式进行表示,在计算机中,程序和数据都采用二进制(只由0和1组成的数字串)进行存储。
指令的顺序执行
在冯·诺依曼计算机中,虽然程序和数据一样存储在存储器中,但程序一样是由指令组成的集合构成,只是表示的形式有所不同。那么程序存储在存储器中是如何执行的?在冯·诺依曼计算机中,程序的执行是控制单元按照顺序从存储器中一条接着一条取出执行,即指令一条接着一条顺序执行。
计算机的组成部分
对于计算机(这里的”计算机“是指包含计算机机器、程序和数据在内的计算机),我们总体上可以认为由三大部分组成:
- 计算机硬件
- 计算机软件
- 数据
1.计算机硬件
组成我们电脑的CPU、显卡、内存条、磁盘等,这些都属于计算机硬件,就是我们实实在在可以摸得到看得见的东西。
2.计算机软件
计算机软件就是程序,由若干个指令组成的集合构成的程序,存储在计算机的存储器中,如:QQ、浏览器、操作系统等。
3.数据
数据就是要计算机进行处理的数据,如,我们需要计算机播放一段视频或者展示一个图片,输入数据就是存储在计算机存储器中的视频或图片,输出数据就是经过播放器软件(处理输入数据的程序)处理输入数据后展示给我们的图像。
计算机的历史
略…