硬核

软工爬坑之旅(番外篇)——计算机简史

. 4 min read . Written by seki

在0和1中诞生的故事

在学习一门新学科时,我习惯先去了解其发展史,发现兴趣点并逐步深入。

早在宣统三年,信息技术公司IBM就已建立,这件事听起来似乎有些不可思议,实际上,当时IBM经营的是穿孔制表机——一种利用穿孔纸条来处理数据的设备,纸条上有孔的地方可以接通电路计数,代表“是”,而无孔的地方不能通电,代表着“否”,可见,这种纸条所记载的正是二进制信息。

数据

借助IEEE 754以及用于表达字符的ASCII等标准,二进制不仅可以用于表示整数,还可以表示任意我们熟悉的数据类型。

所有浮点数均可表示为0.n×10^m ,上图的IEEE 754 浮点数中,第一位二进制数用于表示数字的正负,接下来的八位数字用于存储指数(m) ,最后的二十三位数用于存放有效数字(n) 。

计算

二进制的0和1也可以表示为「真」和「假」。想象一下电路和开关,当开关闭合,电路通过时,我们将它标记为1,反之,开关断开时我们标记它为0,这样的判断方式被称为「逻辑门」

而在数学领域上,恰好有这么一个分支运用true or false的二元数字进行运算,这就是布尔代数。布尔代数依赖「与」(and) 、「或」(or) 、「非」(not) 三个基础逻辑表达复杂的算式。

如果我们想实现这样一个逻辑:当输入的数中如果有true 且有false 时,输出true ,而如果输入的数全都是true 或者都是false 时,输出false 。这个逻辑被称为「异或」(XOR) ,我们可以通过上图所示的基础逻辑门组合成异或。

异或逻辑门有什么现实意义呢?假如我们要计算二进制的一位加法时,一共会有下面四种情况:当0+0时,个位是0,而0+1及1+0时个位是1,1+1时,2进到下一位,个位依然是0。别忘了二进制的1和0同样表示为true 和false ,而上述加法运算个位数结果与异或的输出完全相同,这意味着,异或逻辑门可以用于实现二进制的一位加法运算。

假如让成千上万个二进制电路组合在一起,使其满足布尔代数的组合条件,这些电路就可以进行复杂的运算,而异或逻辑门只是其中较简单的运算方式之一。

算法

让我们看看世界上第一台计算机「巨人一号」是如何实现编程的吧——将几百根电线插入不同的插板,就像过去的电话交换机一样,有点像现在的「配置」。

总之,算法就是复杂的「计算」,通过一系列指令解决数学问题,并最终组成计算机程序。

计算机

成千上万个二进制开关通过「标准」形成数据,随后另外一批成千上万个开关依赖「逻辑」计算这些数据,无数的成千上万个二进制开关共同组成无数个算法,无数个算法组成无数个计算机程序,组成计算机软件,从而构成计算机的逻辑,帮助人类解决现实中的问题。

所幸我们没有活在蒸汽朋克的世界之中,这个世界不仅有电,还有半导体,构成开关的物质从继电器发展到真空管再到晶体管,由机电设备变为电子设备,于是计算机由一个庞大的房间变为我们手中的智能手机。

计算机就是这样从最简单的开关搭建到更高级的逻辑,面对这样一台集结人类智慧结晶的机器,没有人可以完全弄懂其中奥秘,我们能做的只有将具体逻辑抽象,然后在高级的层面运用它解决问题。


Reference:

【计算机科学速成课】https://www.bilibili.com/video/av21376839