请选择 进入手机版 | 继续访问电脑版

[漫话] 计算机发展 从机械到电路简史(一)

计算机科学 计算机科学 1823 人阅读 | 0 人回复

引言

任何事物的创造发明都来源于需求和欲望

而科学技术的发展则推动实现了目标

正是因为人类对于计算能力孜孜不倦的追求,才创造了如今规模的计算机.

计算机,字如其名,用于计算的机器.这就是最初计算机的发展动力.

在漫长的历史长河中,随着社会的发展和科技的进步,人类始终有计算的需求

进行运算时所运用的工具,也经历了由简单到复杂,由低级向高级的发展变化。

本文尽可能的仅仅描述逻辑本质,不去追究实现细节

计算(机|器)的发展与数学/电磁学/电路理论等自然科学的发展息息相关

计算(机|器)的发展有四个阶段

手动 阶段

机械 阶段

机电 阶段

电子 阶段

手动阶段

顾名思义,就是用手指进行计算,或者操作一些简易工具进行计算

最开始的时候人们主要是借助简单的工具比如手指/石头/打绳结/纳皮尔棒/计算尺 等,

我想大家都用手指数过数;

有人用一堆石子表示一些数目;

也有人曾经用打绳结来计数;

再后来有了一些数学理论的发展,纳皮尔棒/计算尺则是借助了一定的数学理论,可以理解为是一种查表计算法.

你会发现,这里还不能说是计算(机|器),只是计算而已

更多的靠的是心算以及逻辑思维的运算,工具只是一个简简单单的辅助

机械阶段

我想不用做什么解释,你看到机械两个字,肯定就有了一定的理解了,没错,就是你理解的这种普通的意思,

一个齿轮,一个杠杆,一个凹槽,一个转盘这都是一个机械部件.

人们当然不满足于简简单单的计算,自然想制造计算能力更大的机器

机械阶段的主题思想其实也很简单,就是通过机械的装置部件 比如齿轮旋转,动力传送等来表示数据记录,进行运算 ,也即是机械式计算机,这样说有些抽象.

我们举例说明:

契克卡德是现今公认的机械式计算第一人,他发明了契克卡德计算钟

我们不去纠结这个东西到底是如何实现的,只描述事情逻辑本质

其中他有一个进位装置是这样子的

image.png

可以看到采用十进制,转一圈之后,轴上面的一个突出齿,就会把更高一位(比如十位)进行加一

这就是机械阶段的精髓,不管他有多复杂,他都是通过机械装置进行传动运算的

还有帕斯卡的加法器

他是使用长齿轮进行进位

image.png

再有后来的莱布尼茨轴,设计的更为精巧

我觉得对于机械阶段来说,如果要用一个词语来形容,应该是精巧,就好似钟表里面的齿轮似的

不管形态究竟如何,终究也还是一样,他也只是一个精巧了再精巧的仪器,一个精密设计的机关装置

首先要把运算进行分解,然后就是机械性的依靠齿轮等部件传动运转来完成进位等运算.

说计算机的发展,就不得不提一个人,那就是巴贝奇

他发明了史上著名的差分机,之所以叫差分机这个名字,是因为它计算所使用的是帕斯卡在1654年提出的差分思想

image.png

我们仍旧不去纠结他的原理细节

此时的差分机,你可以清晰地看得到,仍旧是一个齿轮又一个齿轮,一个轴又一个轴的更加精巧的仪器

很显然他仍旧又仅仅是一个计算的机器,只能做差分运算

再后来1834年巴贝奇提出来了分析机的概念 一种通用计算机的概念模型

正式成为现代计算机史上的第一位伟大先驱

之所以这样说,是因为他在那个年代,已经把计算机器的概念上升到了通用计算机的概念,这比现代计算的理论思想提前了一个世纪

它不局限于特定功能,而且是可编程的,可以用来计算任意函数——不过这个想法是构思在一坨齿轮之上的.

巴贝奇设计的分析机主要包括三大部分

1、用于存储数据的计数装置,巴贝奇称之为“仓库”(store),相当于现在CPU中的存储器

2、专门负责四则运算的装置,巴贝奇称之为“工厂”(mill),相当于现在CPU中的运算器

3、控制操作顺序、选择所需处理的数据和输出结果的装置

而且,巴贝奇并没有忽略输入输出设备的概念

此时你回想一下冯诺依曼计算机的结构的几大部件,而这些思想是在十九世纪提出来的,是不是不寒而栗!!!

巴贝奇另一大了不起的创举就是将穿孔卡片(punched card)引入了计算机器领域,用于控制数据输入和计算

你还记得所谓的第一台计算机"ENIAC"使用的是什么吗?就是纸带!!

ps:其实ENIAC真的不是第一台~

所以说你应该可以理解为什么他被称为"通用计算机之父"了.

他提出的分析机的架构设想与现代冯诺依曼计算机的五大要素,存储器 运算器 控制器 输入 输出是吻合的

也是他将穿孔卡片应用到计算机领域

ps:

穿孔卡片本身并不是巴贝奇的发明,而是来自于改进后的提花机,最早的提花机来自于中国,也就是一种纺织机

只是可惜,分析机并没有真正的被构建出来,但是他的思维理念是超前的,也是正确的

巴贝奇的思想超前了整整一个世纪,不得不提的就是女程序员艾达,有兴趣的可以google一下,Augusta Ada King

机电阶段与电子阶段使用到的硬件技术原理,有不少是相同的

主要差别就在于计算机理论的成熟发展以及电子管晶体管的应用

为了接下来更好的说明,我们自然不可避免的要说一下当时出现的自然科学了

自然科学的发展与近现代计算的发展是一路相伴而来的

文艺复兴运动使人们从传统的封建神学的束缚中慢慢解放,文艺复兴促进了近代自然科学的产生和发展

你要是实在没事情做,可以探究一下"欧洲文艺复兴革命对近代自然科学发展史有何重要影响"这一议题

电磁学

据传是1752年,富兰克林做了实验,在近代发现了电

随后,围绕着电,出现了很多旷世的发现,比如电磁学、电能生磁,磁能生电

image.png

这就是电磁铁的基本原型

根据电能生磁的原理,发明了继电器,继电器可以用于电路转换,以及控制电路

image.png

电报就是在这个技术背景下被发明了,下图是基本原理

image.png

但是,如果线路太长,电阻就会很大,怎么办?

可以用人进行接收转发到下一站,存储转发这是一个很好的词汇

所以继电器又被作为转换电路应用其中

image.png

二进制

而且,一个很重要的事情是,德国人莱布尼茨大约在1672-1676发明了二进制

用0和1两个数码来表示的数

逻辑学

更准确的说是数理逻辑,乔治布尔开创了用数学方法研究逻辑或形式逻辑的学科

既是数学的一个分支,也是逻辑学的一个分支

简单地说就是与或非的逻辑运算

逻辑电路

香农在1936年发表了一篇论文<继电器和开关电路的符号化分析>

我们知道在布尔代数里面

X表示一个命题,X=0表示命题为假;X=1表示命题为真;

如果用X代表一个继电器和普通开关组成的电路

那么,X=0就表示开关闭合 X=1就表示开关打开

不过他当时0表示闭合的理念跟现代正好相反,难道觉得0是看起来就是闭合的吗

解释起来有些别扭,我们用现代的看法解释下他的观点

也就是:

image.png

(a)开关的闭合与打开对应命题的真假,0表示电路的断开,命题的假 1表示电路的连通,命题的真

(b)X与Y的交集,交集相当于电路的串联,只有两个都联通,电路才是联通的,两个都为真,命题才为真

(c)X与Y的并集,并集相当于电路的并联,有一个联通,电路就是联通的,两个有一个为真,命题即为真

image.png

这样逻辑代数上的逻辑真假就与电路的连通断开,完美的完全映射

而且,所有的布尔代数基本规则,都非常完美的适合开关电路

基本单元-门电路

有了数理逻辑和逻辑电路的基础理论,不难得出电路中的几个基础单元

Vcc表示电源 比较粗的短横线表示的是接地

与门

串联电路,AB两个电路都联通时,右侧开关才会同时闭合,电路才会联通

image.png

符号

本文作者:程序员潇然 疯狂的字节X https://crazybytex.com/

image.png

另外还有多输入的与门

image.png

或门

并联电路,A或者B电路只要有任何一个联通,那么右侧开关就会有一个闭合,右侧电路就会联通

image.png

符号

image.png

非门

右侧开关常闭,当A电路联通的时候,则右侧电路断开,A电路断开时,右侧电路联通

image.png

符号:

image.png

只需要记住:

与是串联/或是并联/取反用非门

机电阶段

接下来我们说一个机电式计算机器的优秀典范

机电式的制表机

霍尔瑞斯的制表机,主要是为了解决美国人口普查的问题.

人口普查,你可以想象得到自然是用于统计信息,性别年龄姓名等

如果纯粹的人工手动统计,可想而知,这是多么复杂的一个工程量

制表机首次将穿孔技术应用到了数据存储上,你可以想象到,使用打孔和不打孔来识别数据

不过当时设计还不是很成熟,比如如果现代,我们肯定是一个位置表示性别,可能打孔是女,不打孔是男

当时是卡片上用了两个位置,表示男性就在标M的地方打孔,女性就在标F的地方打孔,不过在当时也是很先进了

然后,专门的打孔员使用穿孔机将居民信息戳到卡片上

紧接着自然是要统计信息

利用电流的通断来识别数据

image.png

对应着这个卡片上的每个数据孔位,上面有着金属针,下面有着容器,容器装着水银

按下压板时,卡片有孔的地方,针可以通过,与水银接触,电路接通,没孔的地方,针就被挡住。

如何将电路通断对应到所需要的统计信息?

这就用到了数理逻辑与逻辑电路了

image.png

最上面的引脚是输入,通过打孔卡片的输入

下面的继电器是输出,根据结果 通电的M将产生磁场, 牵引特定的杠杆,拨动齿轮完成计数。

看到没,此时已经可以根据打孔卡片作为输入,继电器组成的逻辑电路作为运算器,齿轮进行计数的输出了

制表机中的涉及到的主要部件包括: 输入/输出/运算

1896年,霍尔瑞斯创立了制表机公司,他是IBM的前身.....

有一点要说明

并不能笼统的说谁发明了什么技术,下一个使用这种技术的人,就是借鉴使用了发明者或者说发现者的理论技术

在计算机领域,很多时候,同样的技术原理可能被好几个人在同一时期发现,这很正常

还有一位大神,不得不介绍,他就是康拉德·楚泽 Konrad Zuse 德国

http://zuse.zib.de/

因为他发明了世界上第一台可编程计算机——Z1

image.png

图为复制品,复制品其实机械工艺上比37年的要现代化一些

尽管zuse生于1910,Z1也是大约1938建造完成,但是他其实跟机械阶段的计算器并没有什么太大区别

要说和机电的关系,那就是它使用电动马达驱动,而不是手摇,所以本质还是机械式

不过他的牛逼之处在于在也设想出来了现代计算机一些的理论雏形

将机器严格划分为处理器和内存两大部分

采用了二进制

引入浮点数,发明了浮点数的二进制规格化表示

靠机械零件实现与、或、非等基础的逻辑门

虽然作为机械设备,但是却是一台时钟控制的机器。其时钟被细分为4个子周期

处理器是微代码结构的操作被分解成一系列微指令,一个机器周期一条微指令。

微指令在运算器单元之间产生具体的数据流,运算器不停地运作,每个周期都将两个输入寄存器里的数加一遍。

可编程 从穿孔带读入8比特长的指令 指令已经有了操作码 内存地址的概念

这些全都是机械式的实现

而且这些具体的实现细节的理念思维,很多也是跟现代计算机类似的

可想而知,zuse真的是个天才

后续还研究出来更多的Z系列

虽然这些天才式的人物并没有一起坐下来一边烧烤一边讨论,但是却总是"英雄所见略同"

几乎在相同时期,美国科学家斯蒂比兹(George Stibitz)与德国工程师楚泽独立研制出二进制数字计算机,就是Model k

Model I不但是第一台多终端的计算机,还是第一台可以远程操控的计算机。

贝尔实验室利用自身的技术优势,于1940年9月9日,在达特茅斯学院(Dartmouth College)和纽约的本部之间搭起线路.

贝尔实验室后续又推出了更多的Model系列机型

再后来又有Harvard Mark系列,哈佛与IBM的合作

哈佛这边是艾肯IBM是其他三位

image.png

Mark I也通过穿孔带获得指令,和Z1是不是相同?

穿孔带每行有24个空位

前8位标识用于存放结果的寄存器地址,中间8位标识操作数的寄存器地址,后8位标识所要进行的操作

——结构已经非常类似后来的汇编语言

内部还有累加寄存器常数寄存器

机电式的计算机中,我们可以看到,有些伟大的天才已经构思设想出来了很多被应用于现代计算机的理论

机电时期的计算机可以说是有不少机器的理论模型已经算是比较接近现代计算机了

而且,有不少机电式的型号一直发展到电子式的年代,部件使用电子管来实现

这为后续计算机的发展提供了不可磨灭的贡献

电子管

我们现在再转到电学史上的1904年

一个叫做弗莱明的英国人发明了一种特殊的灯泡-----电子二极管

先说一下爱迪生效应:

在研究白炽灯的寿命时,在灯泡的碳丝附近焊上一小块金属片。

结果,他发现了一个奇怪的现象:金属片虽然没有与灯丝接触,但如果在它们之间加上电压,灯丝就会产生一股电流,趋向附近的金属片。

这股神秘的电流是从哪里来的?爱迪生也无法解释,但他不失时机地将这一发明注册了专利,并称之为“爱迪生效应”。

此处完全可以看得出来,爱迪生是多么的有商业头脑,这就拿去申请专利去了~此处省略一万字....

金属片虽然没有与灯丝接触,但是如果他们之间加上电压,灯丝就会产生一股电流,趋向附近的金属片

就是图中的这样子

image.png

而且这种装置有一个神奇的功能:单向导电性,会根据电源的正负极连通或者断开

其实上面的形式和下图是一样的,要记住的是左边靠近灯丝的是阴极 阴极电子放出

image.png

用现在的术语解释就是:

阴极是用来放射电子的部件, 分为氧化物阴极和碳化钍钨阴极。

一般来说氧化物阴极是旁热式的, 它是利用专门的灯丝对涂有氧化钡等阴极体加热, 进行热电子放射。

碳化钍钨阴极一般都是直热式的,通过加热即可产生热电子放射, 所以它既是灯丝又是阴极。

然后又有个叫做福雷斯特的人在阴极和阳极之间,加入了金属网,现在就叫做控制栅极

image.png

通过改变栅极上电压的大小和极性,可以改变阳极上电流的强弱,甚至切断

image.png

电子三极管的原理大致就是这样子的

既然可以改变电流的大小,他就有了放大的作用

不过显然,是电源驱动了他,没有电他本身不能放大

因为多了一条腿,所以就叫做电子三极管

我们知道,计算机应用的其实只是逻辑电路,逻辑电路是与或非门组成,他并不是真的在乎到底是谁有这个本事

之前继电器能实现逻辑门的功能,所以继电器被应用到了计算机上

比如我们上面提到过的与门

image.png

之所以继电器可以实现逻辑门的功能,就是因为它具有"控制电路"的功能,就是说可以根据一侧的输入情况,决定另一侧的情况

那新发明的电子管,根据它的特性,也可以应用于逻辑电路

因为你可以控制栅极上电压的大小和极性,可以改变阳极上电流的强弱,甚至切断

也达到了根据输入,控制另外一个电路的功能,只不过从继电器换成电子管,内部的电路需要变化下而已

电子阶段

现在应该说一下电子阶段的计算机了,可能你早就听过了ENIAC

我想说你更应该了解下ABC机.他才是真正的世界上第一台电子数字计算设备

阿塔纳索夫-贝瑞计算机(Atanasoff–Berry Computer,通常简称ABC计算机)

1937年设计,不可编程,仅仅设计用于求解线性方程组

但是很显然,没有通用性,也不可编程,也没有存储程序机制,他完全不是现代意义的计算机

image.png

主要陈述了设计理念,大家可以上面的这四点

如果你想要知道你和天才的距离,请仔细看下这句话

he jotted down on a napkin in a tavern

世界上第一台现代电子计算机埃尼阿克(ENIAC),也是继ABC之后的第二台电子计算机.

ENIAC是参照阿塔纳索夫的思想完整地制造出了真正意义上的电子计算机

奇葩的是为啥不用二进制...

建造于二战期间,最初的目的是为了计算弹道

ENIAC具有通用的可编程能力

更详细的可以参看维基百科:

https://zh.wikipedia.org/zh-cn/%E9%9B%BB%E5%AD%90%E6%95%B8%E5%80%BC%E7%A9%8D%E5%88%86%E8%A8%88%E7%AE%97%E6%A9%9F

不过ENIAC程序和计算是分开的,也就意味着你需要手动输入程序!

并不是你理解的键盘上敲一敲就好了,是需要手工插接线的方式进行的,这对使用来说是一个巨大的问题.

有一个人叫做冯·诺伊曼,美籍匈牙利数学家

有意思的是斯蒂比兹演示Model I的时候,他是在场的

而且他也参与了美国第一颗原子弹的研制工作,任弹道研究所顾问,而且其中涉及到的计算自然是极为困难的

我们说过ENIAC是为了计算弹道的,所以他早晚会接触到ENIAC,也算是比较顺理成章的他也加入了计算机的研制

冯诺依曼结构

1945年,冯·诺依曼和他的研制小组在共同讨论的基础上

发表了一个全新的“存储程序通用电子计算机方案”——EDVAC(Electronic Discrete Variable Automatic Computer)

一篇长达101页纸洋洋万言的报告,即计算机史上著名的“101页报告”。这份报告奠定了现代电脑体系结构坚实的根基.

报告广泛而具体地介绍了制造电子计算机和程序设计的新思想。

这份报告是计算机发展史上一个划时代的文献,它向世界宣告:电子计算机的时代开始了。

最主要是两点:

其一是电子计算机应该以二进制为运算基础

其二是电子计算机应采用存储程序方式工作

并且进一步明确指出了整个计算机的结构应由五个部分组成:

运算器、控制器、存储器、输入装置和输出装置,并描述了这五部分的职能和相互关系

其他的点还有,

指令由操作码和地址码组成,操作码表示操作的性质,地址表示操作数的存储位置

指令在存储器内按照顺序存放

机器以运算器为中心,输入输出设备与存储器间的数据传送通过运算器完成

人们后来把根据这一方案思想设计的机器统称为“冯诺依曼机 ”,这也是你现在(2018年)在使用的计算机的模型

我们刚才说到,ENIAC并不是现代计算机,为什么?

因为不可编程,不通用等,到底怎么描述:什么是通用计算机?

1936年,艾伦·图灵(1912-1954)提出了一种抽象的计算模型 —— 图灵机 (Turing Machine)

又称图灵计算、图灵计算机

图灵的一生是难以评价的~

我们此处仅仅说他对计算机的贡献

下面这段话来自于百度百科:

图灵的基本思想是用机器来模拟人们进行数学运算的过程

所谓的图灵机就是指一个抽象的机器

图灵机更多的是计算机的科学思想,图灵被称为 计算机科学之父

它证明了通用计算理论,肯定了计算机实现的可能性

图灵机模型引入了读写与算法与程序语言的概念

图灵机的思想为现代计算机的设计指明了方向

冯诺依曼体系结构可以认为是图灵机的一个简单实现

冯诺依曼提出把指令放到存储器然后加以执行,据说这也来源于图灵的思想

至此计算机的硬件结构(冯诺依曼)以及计算机的自然科学理论(图灵)

已经比较完全了

计算机经过了第一代电子管计算机的时代

随后出现了晶体管

晶体管

肖克利1947年发明了晶体管,被称为20世纪最重要的发明

硅元素1822年被发现,纯净的硅叫做本征硅

硅的导电性很差,被称为半导体

一块纯净的本征硅的半导体

如果一边掺上硼一边掺上磷 然后分别引出来两根导线

image.png

这块半导体的导电性获得了很大的改善,而且,像二极管一样,具有单向导电性

因为是晶体,所以叫做晶体二极管

而且,后来还发现加入砷 镓等原子还能发光,称为发光二极管 LED

还能特殊处理下控制光的颜色,被大量应用

如同电子二极管的发明过程一样

晶体二极管不具有放大作用

又发明了在本征半导体的两边掺上硼,中间掺上磷

image.png

这就是晶体三极管

只要电流I1 发生一点点变化 电流I2就会大幅度变化

也就是说这种新的半导体材料就像电子三极管一样具有放大作

所以被称为晶体三极管

晶体管的特性完全适合逻辑门以及触发器

世界上第一台晶体管计算机诞生于肖克利获得诺贝尔奖的那年,1956年,此时进入了第二代晶体管计算机时代

再后来人们意识到:晶体管的工作原理和一块硅的大小实际没有关系

可以将晶体管做的很小,但是丝毫不影响他的单向导电性,照样可以方法信号

所以去掉各种连接线,这就进入到了第三代集成电路时代

随着技术的发展,集成的晶体管的数量千百倍的增加,进入到第四代超大规模集成电路时代

common_log.png 转载务必注明出处:程序员潇然,疯狂的字节X,https://crazybytex.com/thread-177-1-1.html

关注下面的标签,发现更多相似文章
    黄小斜学Java

    疯狂的字节X

  • 目前专注于分享Java领域干货,公众号同步更新。原创以及收集整理,把最好的留下。
    包括但不限于JVM、计算机科学、算法、数据库、分布式、Spring全家桶、微服务、高并发、Docker容器、ELK、大数据等相关知识,一起进步,一起成长。
热门推荐
[若依]微服务springcloud版新建增添加一个
[md]若依框架是一个比较出名的后台管理系统,有多个不同版本。
[CXX1300] CMake '3.18.1' was not
[md][CXX1300] CMake '3.18.1' was not found in SDK, PATH, or
java 解析modbus 协议 Modbus4j应用 使用mo
[md]本文记录使用java开发modbus协议程序,与串口进行连接,使用