计算机简史



计算机是现代一种用于快速计算的电子计算机,它具备数值计算、逻辑计算和存储记忆能力,能够按照设定的程序规则自动、高速处理数据的现代智能电子设备。我们一般称为“电脑”。

计算机是在20世纪由“约翰·冯·诺依曼”发明,“约翰·冯·诺依曼”也被称为“计算机之父”。

计算机大概经历以下几个更新换代阶段(参考百度百科,了解即可):


第1代:电子管数字机(1946—1958年)

逻辑元件采用的是真空电子管,主存储器采用汞延迟线电子管、阴极射线示波管静电存储器、磁鼓、磁芯;外存储器采用的是磁带。软件方面采用的是机器语言、汇编语言。应用领域以军事和科学计算为主

特点:体积大、功耗高、可靠性差。速度慢(一般为每秒数千次至数万次)、价格昂贵,但为以后的计算机发展奠定了基础

第2代:晶体管数字机(1958—1964年)

操作系统、高级语言及其编译程序应用领域以科学计算和事务处理为主,并开始进入工业控制领域

特点:体积缩小、能耗降低、可靠性提高、运算速度提高(一般为每秒数10万次,可高达300万次)、性能比第1代计算机有很大的提高

第3代:集成电路数字机(1964—1970年)

逻辑元件采用中、小规模集成电路(MSI、SSI),主存储器仍采用磁芯。软件方面出现了分时操作系统以及结构化、规模化程序设计方法

特点:速度更快(一般为每秒数百万次至数千万次),而且可靠性有了显著提高,价格进一步下降,产品走向了通用化、系列化和标准化等。应用领域开始进入文字处理和图形图像处理领域

第4代:大规模集成电路机(1970年至今)

逻辑元件采用大规模和超大规模集成电路(LSI和VLSI)。软件方面出现了数据库管理系统、网络管理系统和面向对象语言等。1971年世界上第一台微处理器在美国硅谷诞生,开创了微型计算机的新时代。应用领域从科学计算、事务管理、过程控制逐步走向家庭

特点:机体积小,价格便宜,使用方便,但它的功能和运算速度已经达到甚至超过了过去的大型计算机


计算机结构简述

现代计算机结构一般有两种,分别是冯·诺依曼结构和哈佛结构。下面是冯.诺依曼型结构图:


下面是哈佛结构图:

电大计算机上机考试题(计算机基础简介)(1)

冯·诺依曼结构和哈佛结构的区别:

冯·诺依曼结构和哈佛结构最大的区别在于冯·诺依曼结构采用程序指令和数据统一编址,使用同一条总线进行传输;而哈佛结构程序指令和数据是分开编址(两个存储器),同时分开总线进行传输;由于编址不同,所以冯·诺依曼的数据和指令位数必须相同,而哈佛结构的数据和指令可以不同;理论上哈佛结构具有较高的执行效率。

冯·诺依曼结构和哈佛结构应用场景:

虽然哈佛结构具有较高的执行效率,但哈佛结构并不是用来替代冯▪诺依曼的,它们在不同的场景下各有千秋;一般来说,冯▪诺依曼结构主要应用于通用计算机领域,哈佛结构主要应用于嵌入式计算机领域。

二进制简述


说到计算机不得不了解一下二进制,因为计算机是由逻辑电路组成,通常只有两个状态,开(1)和关(0),所以目前市面上计算机基本都是采用二进制数来存储和运算的。

二进制的基数为2,右边称为低位,左边称为高位,进位规则是从右边位数开始计算“逢二进一,原位为0”,借位规则是“借一当二”,例如:

除了二进制外,还有类似十进制(逢十进一)、八进制(逢八进一)、十六进制(逢十六进一),下面描述各个进制基本数字:

不同进制之间任意两个都可以进行转换,但是要记住计算机存储只能是二进制,如果要处理或存储其它进制则一般需要转为二进制。下面给出一些进制之间转换规则:

下面简单举个二进制和十进制之间转换的例子:

1、十进制89转为二进制

电大计算机上机考试题(计算机基础简介)(2)

如果是十进制转为八进制,则是除以8,如果是十进制转为16进制则是除以16,其它规则不变。

2、二进制1011001转为十进制

电大计算机上机考试题(计算机基础简介)(3)

如果是八进制转为十进制则2的n次方则改为8的n次方,如果是十六进制转为十进制则2的n次方则改为16的n次方,其它规则不变。更多进制相关的知识有兴趣可以阅读计算机基础专业相关书籍。

二进制数据又是如何在磁盘上存储的呢?要回答这个问题可能要写半本书才能详细讲清楚,这里为了便于理解只做个简单抽象的讲解。对于机械硬盘来说,磁盘内部一般有控制电路板、传动手臂、转动轴、主轴、马达、盘片(一个或多个)、读写磁头(每个盘片一个)等;其中盘片被分为扇区和磁道,数据就是存储在盘片的扇区的磁道中。

电大计算机上机考试题(计算机基础简介)(4)


存储方式是通过在盘片上下表面都涂有磁性材料,每个磁道有独立的两极方向,控制器控制读写磁头来改变每个磁道单元内的磁体方向来表示一个二进制单元(比特Bit),例如N极和S极分别代表0和1。

这里只是高度抽象磁盘存储原理,实际磁盘工作原理是非常细致和复杂的,更多关于磁盘存储原理相关有兴趣可以阅读计算机存储原理相关书籍。

存储单位

存储单位是一种计量单位。指在某一领域以一个特定量或标准做为一个计数点。计算机内部都是采用二进制进行存储、运算和处理数据的,其中数据存储的单位有位(Bit)、字节(Byte,B)、字(Word)、KB、MB、GB、TB等,下面是每个单位的描述:

除了位之外,其它计算机存储单位都是基于位(Bit)进行换算的。设计不同单位换算是为了更方便阅读。

编码表简述

通过前面我们了解到计算机内部都是二进制,那么很直接一个问题就来了,我们平时上网或工作是看到和使用的可不是像前面说的一大串的0或1,而是有感情的文字,栩栩余生的图片和视频等,难道这些不是存储在计算机里面的?这个我们就要再了解一个叫做编码表的神奇设计。

例如我们常常看到的英文单词或英文符号是由ASCII (American Standard Code for Information Interchange: 美国信息交换标准代码)编码表对照出来的,下面是截取部分ASCII字符编码表:

电大计算机上机考试题(计算机基础简介)(5)


上图可以看到其中大写字母A对应的二进制为01000001,B对应二进制位01000010。ACSII一般用来表示英文,但是不同国家不同的语言,所以除了ASCII编码表外每个国家都有一套自己国家语言的对应二进制的编码表,比如我国中文采用的便是GB(国标)开头的编码表:GB2312(共收录 7445 个字符,其中汉字6763 个)、GBK(收录了 21003 个汉字)、GB18030(收录70000余个汉字) 等。国家语言我们大概知道是怎么回事,那么图片又是怎么来的呢?

图片是通过将不同位置的像素点进行标色形成的,像素抽象理解就像在某个平面上画了很多小格子;例如图片分辨率10*10的意思是水平方向每英寸有10个像素点,垂直方向每英寸有10个像素点,通过给每个像素点(小格子)进行标色,再将颜色转为RGB(RGB是红蓝绿三个颜色简称,每个颜色用8位二进制(2的八次方=256)来表示,RGB共可以表示256*256*256=1670万色),最后将三个RGB转为二进制进行保存即可。

最后我们思考一个问题,由于不同国家有不同的编码,相互通信的时候由于解码方式不同就会导致乱码,没法信息交换这可是一件大事。这时就出现了大名鼎鼎的Unicode万国编码来拯救这个难题,Unicode为世界上所有字符都分配了一个唯一的数字编号。Unicode就相当于一张大型映射表,建立了字符与编号之间的联系,Unicode收录的字符高达100多万个。

由于Unicode被认为存在大量浪费空间的现象,所以实际上Unicode编码并没有被互联网广泛使用,而真正被广泛使用的是后来出现的UTF-8,UTF-8是基于Unicode编码的设计基础上对浪费空间进行算法优化,直到目前为止UTF-8是互联网上使用最广泛的一种传输编码方式。


软件、开发语言简述

前面我们简单讲述了计算机重要的知识点,那么我们通常接触到的更多的实际都是跟软件相关的,比如操作系统(文件管理)、表格工具、淘宝、抖音等它们都属于软件范畴。那么软件在计算机中又是怎么的一种存在呢?

硬件是计算机最基础的物理存在,像CPU、磁盘、主板、显示器、键盘、内存条、网卡、显卡、电源等。这些硬件组成的计算机对外分别提供了不同的基础种能力(例如运算、存储),对于我们常人来说怎么去利用这些能力呢?其实硬件厂商一般都会将硬件的能力通过指令的方式对外提供出来,外部客户端可以通过指令去使用它们。如果让每个人都要学习不同硬件的指令集才能使用计算机,那计算机入门门槛也太高了,软件的出现就是解决这个问题的。另外软件除了解决这个问题外,软件还拥有自身的产品价值。

软件一般分为系统软件、驱动软件跟应用软件,系统软件(Windows、类Unix)被认为是最基础的软件,它统一组合封装了底层各种不同硬件(CPU、磁盘、键盘、显示器、网卡、显卡等)的指令集,重新提供了一套新的更加友好和聚合后的系统软件API。

目前我们接触最多软件是应用软件(淘宝、抖音、表格工具),应用软件是通过某种开发语言(Java、C、Python)开发出来的。开发语言(Java、C、Python)底层再次封装了系统软件的调用重新提供了一套更人性化、可读性更强的开发语言API和规则供给现有程序员去进行应用的开发。

下图形象的表达了硬件、系统软件、应用软件、开发语言之间的关系:

电大计算机上机考试题(计算机基础简介)(6)


小结

计算机相关知识可以单独写好几本砖头厚的书,这里只是简单的介绍了部分需要了解的基础知识。如果有兴趣深入学习计算机硬件和基础相关知识可以阅读相关专业书籍。了解计算机基础知识可以帮助我们后面在编程的道路更加知其然,实际上你也完全可以跳过本章直接进入Java章节进行学习,等把Java学好了再回过头来学习计算机相关知识也是没问题的。

,