计算机是怎么发明出来的(计算器要怎么进化成计算机)(1)

2021年,7月13日,国内最大的视频网站bilibili发生了一次崩盘事件,五分钟之内,“B站崩了”的消息直接冲上了热搜。前段时间,bilibili发布了有关复盘的文章,文中详细的描述了B站崩了的原因已经过程。简单来说,一个诡计多端的0,让B站崩了。

计算机是怎么发明出来的(计算器要怎么进化成计算机)(2)

关于这个诡计多端的0,已经有很多大牛讲述了他的逻辑原理,今天我们就来来看看这些代码的过往。代码,始终与计算机勾连在一起,密不可分、息息相关。要想梳理代码的历史,还需要从计算机的发展讲起。

计算机的原型是计算器,而计算器最早可以追溯到我国古代的算盘。算盘距今至少2600年的历史,在阿拉伯数字发明以前,算盘是最重要的计算工具。

计算机是怎么发明出来的(计算器要怎么进化成计算机)(3)

在西方,在出现机械计算器之前,任何计算全凭人的能力进行计算。而算盘直到16世纪左右就传入了欧洲,只可惜西方人并不会使用算盘,因此也没在西方掀起任何波澜。

文艺复兴后,人们的思想开始解脱,计算器也开始高速发展。欧洲最早的计算器来源于苏格兰人约翰·纳皮尔,他发明了一种可以进行四则运算和方根运算的精巧装置。此后,各种各样的计算器被发明出来,计算能力和范围也逐渐扩大。

计算机是怎么发明出来的(计算器要怎么进化成计算机)(4)

第二次工业革命期间,由于科学的快速增长,庞大的计算量常常拖累科学研究的进度。

1834年,英国科学家巴贝奇设想制造一台通用分析机,在只读存储器(穿孔卡片)中存储程序和数据 。

1840 年将操作位数提高到了40 位,并基本实现了控制中心(CPU)和存储程序的设想,而且程序可以根据条件进行跳转,能在几秒内做出一般的加法,几分钟内做出乘、除法。这一构想是现代计算机的核心思想,同时,奠定了未来计算机的发展趋势。

1848 年:英国数学家莱布尼兹创立二进制代数学,提前近一个世纪为现代二进制计算机的发展铺平了道路。但在19世纪,大多数的机械计算机仍然使用的是十进制的计数方式;相比起十进制,二进制的计数方式更加符合计算机的工作原理。

计算机是怎么发明出来的(计算器要怎么进化成计算机)(5)

二进制由0和1组成,正好可以对应计算机中电路连通与闭合的两种状态。1个开关可以用0或1来表示其状态,如果有许多开关,就可以表示为许多个0或1,你可以想象这里排列着许多开关,各个开关分别表示2进制中的各个位。这样一来,只要增加开关的个数,不管是多大的数字都能表示出来。因此,虽然从主观上觉得,十进制的计数方式能更好的表达数据。但计算机的计算速度很快,即使二进制的位数远远多于十进制,位数多并不影响其计算精度和速度。

简单来说,对于计算机而言,处理的数字种类少、 计算规则简单就最好的。因此,二进制显然优于十进制。

1890 年:美国人口普查部门希望能得到一台机器帮助提高普查效率。托马斯·沃森借鉴巴贝奇的发明,用穿孔卡片存储数据,并设计了机器。结果仅用6 周就得出了准确的人口统计数据。沃森将这种机器量产化,并创办了公司,这家公司便是今天IBM公司的前身。

计算机是怎么发明出来的(计算器要怎么进化成计算机)(6)

进入20世纪,人类对于自然界的探索越发扩大,一种全新的材料被发现——晶体管。20世纪初期,美国科学家研制出电子管,这一发明标志着计算机正式进入电子计算机的时代。

1937年:英国剑桥大学的艾伦图灵提出了被后人称之为"图灵机"的数学模型。它有一条无限长的纸带,纸带分成了一个一个的小方格,每个方格有不同的颜色。有一个机器头在纸带上移来移去。机器头有一组内部状态,还有一些固定的程序。在每个时刻,机器头都要从当前纸带上读入一个方格信息,然后结合自己的内部状态查找程序表,根据程序输出信息到纸带方格上,并转换自己的内部状态,然后进行移动。

计算机是怎么发明出来的(计算器要怎么进化成计算机)(7)

从今天计算机的角度来说,图灵的构想类似于字符串的概念,而无论是C语言还是Python等汇编语言中,字符串都是相当重要的变量。甚至在一些汇编语言中,默认的变量即定义为字符串,可见其地位一般。

图灵机只是一个抽象的数学概念,但这个概念却被一直沿用至今。因此,图灵也坐稳了“计算机科学之父”的交椅。

二战期间,为了尽快获得战争胜利,无论是轴心国还是协约国,都在努力加快了对战略导弹的研制。然而导弹的研制,却让科研人员们意识到,如此庞大的运算仅仅依靠人力和机械计算器很难胜任。在二战期间,美国和德国的计算机技术得到了空前的发展,尤其是美国,对于计算机方面的拨款一年比一年高。

然而,直到二战结束,也没有真正研制出计算机。二战后的1946年,人类终于迎来了第一台通用电子计算机。1946年,在美国宾夕法尼亚大学,ENIAC正式诞生,而领导创造他的人,叫做冯诺依曼。

计算机是怎么发明出来的(计算器要怎么进化成计算机)(8)

到这里也许你还会好奇,汇编语言究竟是什么时候出现在计算机科学中的?那就我们下期来讲。

,