计算机科学速成

目录

前言

1.电子计算机

2.布尔逻辑和逻辑门

3.二进制表示数字

4.算数逻辑单元 - ALU

5.寄存器和内存

6.中央处理器(CPU)

7.指令和程序

8.高级CPU设计

9.早期的编程方式

10.编程语言发展史

11.编程基础 - 语句和函数

12.算法入门

13.数据结构

14.操作系统

15.命令行界面

16.图形用户界面GUI

17.计算机网络

18.互联网以及相关协议

19.万维网


前言

最早的计算机设备是算盘(十进制计算机),它可以存储计算的状态,相当于如今的硬盘。人们制造算盘是因为,社会的规模大小已经超出了个人心算的能力,一个村庄可能有上千个人和上万头牛,这无法通过人为的简单算数解决。

计算机最早出现在1682年,但是指的是计算能力超级厉害的人(一种职位),能把计算的工作量大大缩减。 之后,计算机才逐渐开始代表机器。

1.电子计算机

社会复杂度的增高导致数据量暴增,人们需要更多自动化,更强的计算能力。最早的电子计算机,哈佛马克一号(由继电器组成),1秒能做3次加法和减法运算,复杂点的函数比如三角函数,要一分钟以上,执行速度非常的慢。除了速度满,机械也会随着时间磨损,故障概率增加,维修成本很大。还有个问题,大型并且温暖的机器会吸引昆虫,导致继电器失效,这就是bug的来源。因此继电器需要赶紧更换。

三级真空管由此诞生,他们可以每秒开关上千次,大大提高了运算量。 但是真空管也有弱点,它们会像灯泡一样烧坏,但比起继电器还是有很大的进步。这标志着计算机从机电转向电子。

到1950年,真空管计算机的速率到达了极限,为了减低成本和大小,同时提高可靠性和速度,我们需要一种新的电子开关,1947年,贝尔实验室的科学家发明了晶体管,一个全新的计算机时代诞生。晶体管相当于一个开关,可以用来控制电子线路的开和关。晶体管有两个电极,电极之间有一种材料隔开它们,这种材料有时候导电,有时候不导电,称为半导体。通过控制门电路的电荷大小,可以改变晶体管的开和关状态。

晶体管每秒可以开关10000次,并且晶体管是固态的,其大小可以远远小于真空管。第一个完全用晶体管制作的计算机,有3000个晶体管,每秒可执行4500次加法,80次乘法。

如今计算机的晶体管都小于50nm,每秒可以切换上百万次,并且能工作几十年。很多晶体管和半导体的开发在圣克拉拉谷,位于加州,而生产半导体最常见的材料是硅,因此这里被称为硅谷。

2.布尔逻辑和逻辑门

前面仅仅只谈到了,从继电器到真空管到晶体管,开关的频率增加了,但是计算机是如何利用开关来计算的呢? 在讲到计算之前,首先了解以下上面是布尔运算,通过布尔逻辑运算,再引出数学计算。

晶体管只有两种状态,开和关,可以用来代表1和0。用二进制数字来进行数据的存储和计算。

晶体管确实不仅仅可以让电流有和无,还可以控制电流的大小。一些早期的电子计算机是3进制的,有3种状态,甚至有5种状态,但是问题是,状态越多,便越难区分是哪种状态,一旦附近有噪声,便会导致状态之间相互干扰,因此为了把状态尽可能的分开,我们只有开和关两种状态。计算机用二进制的另一个原因是,有以整个数学分支存在,专门处理二进制的真和假,它已经解决了所有法则和运算,叫做“布尔代数”。

最重要的概念是,布尔值也可以进行逻辑操作(加减乘除)。布尔代数有三个基本操作,NOT,AND,OR。非常酷的地方是,用晶体管可以实现这几个基本操作,因此用晶体管可以实现布尔代数的运算,也就是用晶体管实现二进制数值的计算。

晶体管只是用电控制的开关,有三根线,上下为电极,左边为控制线。控制线通电时,电流就可以从一个电极流向另一个电极,此时晶体管导通。

此处有一个非常重要的概念:我们可以用控制线当作输入,用电流输出的电极当作输出。如果我们打开输入,输出也会打开;如果我们关闭输入,输出也会关闭,此时用布尔代数来说,便是:

此时输出和输出的布尔值完全一样,没啥意思。

但是我们可以稍作改变,实现NOT布尔运算:把电流的输入极当作输出,

如果输入是打开的,此时电流会从上往下流,而上面的状态便是无。因此实现了NOT门

①NOT门

②ADN门

同样的,我们可以将两个晶体管串联,实现ADN门

③OR门

将两个晶体管并联,实现OR门

④异或门(输入不同输出1)

通过NOT,AND,OR门的组合,可以实现XOR门

现在我们可以将以上四种门封装起来,不用管内部结构,直接拿来用,进行新一层的抽象。即使是专业的程序员,也不用管逻辑在物理层面是如何实现的。

3.二进制表示数字

此节将讲解,计算机如何存储和表示数字。

上一节我们聊了布尔运算,但是输入和输出都只有两个逻辑状态,它是怎么进行数学运算的呢??

二进制同样可以用于计算,转换为10进制就行了。例如八位二进制,最多能表示256的10进制数字,也就意味着8位电脑最多可以表示256种状态(颜色等等)。8位通常用一个字节来表示。32位电脑,最大能处理的数是43亿,因此32位的电脑图片可以很清晰,它们可以有上百万种颜色,而64位可以处理9亿亿大小的数字。

计算机表示字母的方法:ASCII码(7位),用特定的二进制大小表示特定的字母。

但是7位二进制,无法表示全部的汉字,因此在1992年,出现了Unicode编码,统一了所有编码的标准,解决了不同国家不同标准的问题。最常见的Unicode是16位的,有超过一百万个位置。就像用二进制表示文字一样,图片,视频等等数据,都是通过二进制编码来实现的。接下来将会聊聊,计算机如何操作二进制数字。

4.算数逻辑单元 - ALU

上一节谈到了,如何用二进制表示数字,表示和存储数字是计算机的重要功能,但是真正的目标是计算,有意义的处理数字,比如把两个数相加。这些操作由计算机的“算数逻辑单元处理”,简称ALU。ALU是计算机的大脑,是计算机里负责运算的组件。最早发布的ALU是1970年发布的英特尔74181,它是第一个可以完整封装在单个芯片内的完整ALU。我们可以用前两节讲到的逻辑门,来实现74181ALU电路。再在后面几节做一个简单的电脑。

ALU有两个单元,一个算数单元和一个逻辑单元。

算数单元负责计算机里的所有数字操作,比如加减法。

①半加器(只有两个输入):carry表示进位

将半加器抽象化为封装:

②全加器(可以有三个输入)

用半加器实现全加器:

将全加器抽象化为封装:

③八位加法器(可以处理两个八位数的加减运算)

逻辑单元进行逻辑操作,多个输入,一个输出,只进行判断。

①判断输入是否全为0,如果是,则输出1

前面提到的ALU八位加法器只能做加法,但事实上除了加法,我们也可以实现8位减法,八位等等(当然电路会不一样)。为了简化,我们把ALU封装成V子型(电路会相当复杂),如图所示:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值