我们前段时间聊了牛顿与莱布尼茨的微积分之争,莱布尼茨所发明的符号被普遍认为更综合,适用范围更加广泛。

二进制由哲学家莱布尼茨发明(莱布尼茨发明的二进制沉寂300年)(1)

作为17世纪最伟大的数学天才之一,牛顿与莱布尼茨堪称是数学界的双子星,互相耀映。

二进制由哲学家莱布尼茨发明(莱布尼茨发明的二进制沉寂300年)(2)

与牛顿不同,莱布尼茨的本质专业是一名律师,经常往返于各大城镇,可能是坐在马车上太过无聊,又不能像我们一样刷手机,所以莱布尼茨非常喜欢在马车上进行思考,他的许多的公式 都是在颠簸的马车上完成的。他们家祖孙三代都在政府供职,所以他经常自称为男爵,彰显自己的贵族身份。

与牛顿一样,莱布尼茨也是一个多面手,牛顿浸淫于神学无法自拔,而莱布尼茨则在哲学上具有卓越的贡献,“乐观主义”就是他提出来的,伏尔泰为了和他对着干就提出了“悲观主义”。莱布尼茨经常说:“我们的宇宙,在某种意义上是上帝所创造的最好的一个”。 他和笛卡尔 、斯宾诺莎被认为是十七世纪三位最伟大的理性主义哲学家。

二进制由哲学家莱布尼茨发明(莱布尼茨发明的二进制沉寂300年)(3)

除此之外,莱布尼茨对于中华文化非常感兴趣,他曾经从一些前往过中国传教的教士那里接触到中国文化,之前也从马可·波罗引起的东方热留下的影响中也了解过中国文化。法国汉学大师若阿基姆·布韦更是和莱布尼茨介绍了《周易》和八卦。莱布尼茨认为古代中国的“礼”、“道”、“太极”等因素构成了支配宇宙的一种精神力量,他对意大利传教士利玛窦提出的中国传统形而上学可以与基督教相统一的观点十分欣赏,甚至亲自撰文予以捍卫。

二进制由哲学家莱布尼茨发明(莱布尼茨发明的二进制沉寂300年)(4)

说到这里,就要聊到莱布尼茨的另外一项最为卓越的发明——二进制,莱布尼茨曾说“阴”与“阳”基本上就是他的 二进制的中国版。他曾断言:“二进制乃是具有世界普遍性的、最完美的逻辑语言”。

二进制由哲学家莱布尼茨发明(莱布尼茨发明的二进制沉寂300年)(5)

为什么说莱布尼茨的二进制是他另外一项最为伟大的发明,明明我们现在用的都是十进制。

首先莱布尼茨为什么会发明二进制,据说这可能是因为宗教的力量。他在写给鲁道夫·奥古斯都公爵的信中这样提到:(有一个概念)不容易传授给异教徒:全能的上帝从无创造有。现在我们可以说,数字的起源是世上能最好展示和说明这种力量的事物,它以“一”和“零”或者说“无”的形式呈现,既朴素又简练。

简单来说,他认为“0”和“1”是这个世界上最伟大的数字,所以他用数0表示空位,数1表示实位。这样一来,所有的自然数都可以用这两个数来表示了。比如1=00000001、3=00000011、5=00000101。

二进制由哲学家莱布尼茨发明(莱布尼茨发明的二进制沉寂300年)(6)

而2进制的加减乘除运算大家可以去网络上搜寻一下,所以如果有人说1 1=10,不要说人家傻,人家可能用的是二进制。

但自1687年,牛顿力学统治整个科学界近200年。而莱布尼茨创立的二进制在那个年代不但用不上,普通人还根本看不懂,就这样沉寂了几百年,直到一个叫“冯诺伊曼”的人让2进制重见天日,并且发光发热。

二进制由哲学家莱布尼茨发明(莱布尼茨发明的二进制沉寂300年)(7)

如果把互联网比作一栋大厦,那么二进制就是构建这座大厦的砖石。

20世纪,随着科技的日益进步,所需的计算量日益巨大,靠人工已经无法满足,虽然在此之前已经诞生了机械计算机,但还是人去操作机器,还没有实现人与机器的对话。所以当时的科学家便开始构想设计电子计算机,代替人工运算。

二进制由哲学家莱布尼茨发明(莱布尼茨发明的二进制沉寂300年)(8)

1642年,帕斯卡发明第一台机械计算机——帕斯卡加法器

1944年8月,在IBM和美国海军部的支持下,从1937年开始研发的艾肯成功研发了世界上第一台通用自动计算机——马克1号,即自动程控计算机。该计算机使用了3000多个继电器,因而又称继电器计算机。采用十进制23位数字的加减计算时间为0.3秒,乘法6秒,除法11.4秒。马克1号计算机长15.5米,高2.4米,重达5吨,有76万个零件,运行时的声音非常大。虽然它采用的不是电子控制,(所以它依然需要借助电流进行运算,最关键的部件采用继电器组成,马克1号上安装了大约3000个继电器。继电器接通电路表示“1”,继电器断开则表示“0”)但仍然被普遍认为是电子计算机的开山鼻祖。

二进制由哲学家莱布尼茨发明(莱布尼茨发明的二进制沉寂300年)(9)

马克一号

马克一号是世界上第一部大尺度自动数位电脑,被认为是第一部万用型计算机。而真正意义上的通用型电子计算机出现于1946年2月14日,名为ENIAC,它是世界上第一台通用计算机,能够重新编程,解决各种计算问题。

二进制由哲学家莱布尼茨发明(莱布尼茨发明的二进制沉寂300年)(10)

当时正值二战时期,那个时候如果新式火炮要发射到指定地点,需要计算火炮的弹道表。这需要进行大量计算。一张弹道表需要计算近4000条弹道,可以说工作量特别巨大。

二进制由哲学家莱布尼茨发明(莱布尼茨发明的二进制沉寂300年)(11)

一发炮弹发射出去,需要100多人用一种手摇计算机算个不停,还经常出错,费力不讨好。当时任职宾夕法尼亚大学莫尔电机工程学院的莫希利于1942年提出了试制第一台电子计算机的初始设想——“高速电子管计算装置的使用”,期望用电子管代替继电器以提高机器的计算速度。

美国军方得知这一设想后,立即拨款成立了一个以莫希利、埃克特为首的研制小组。终于在1946年2月14日,世界上第二台电子计算机,世界上第一台通用计算机埃历阿克”(ENIAC,译成中文是“电子数字积分和计算机”)诞生于美国宾夕法尼亚大学。

二进制由哲学家莱布尼茨发明(莱布尼茨发明的二进制沉寂300年)(12)

ENIAC是世界上发明的第一台电子计算机,当时它仍采用的是十进制。埃历阿克虽然威力强大,但是它毕竟还很不完善,比如存在着耗电多、费用高的缺点。它的耗电量超过174千瓦,那些个电子管发光又发热,平均每隔7分钟要损坏一只。虽然当初只花了军械部40万元的研制费用,然而维护它的费用后来竟超过200万之巨!埃历阿克最致命的缺点是程序与计算两分离。指挥埃历阿克2万只电子管工作的程序指令,被存放在机器的外部电路里。需要计算某个题目前,使用时必须把数百条线路用手接通,像一群电话接线员那样手忙脚乱地忙活好几天,才能进行几分钟运算。

二进制由哲学家莱布尼茨发明(莱布尼茨发明的二进制沉寂300年)(13)

而采用十进制的埃历阿克因为计算特别繁琐,所以计算速度一直不算非常理想。这个时候冯诺伊曼出来了。

二进制由哲学家莱布尼茨发明(莱布尼茨发明的二进制沉寂300年)(14)

儿时的诺伊曼

其实在此之前,物理学和电子学科学家们就在争论制造可以进行数值计算的机器应该采用什么样的结构。人们被十进制这个人类习惯的计数方法所困扰,深陷于十进制的泥沼无法自拔。20世纪30年代中期,冯诺依曼就已经大胆的提出,抛弃十进制,采用二进制作为数字计算机 的数制基础。同时,他还说预先编制计算程序,然后由计算机来按照人们事前制定的计算顺序来执行数值计算工作。

而埃历阿克身上所展现的缺陷,给了冯·诺依曼发挥的舞台,他起草一份新的设计报告,要对这台电子计算机进行脱胎换骨的改造。他把新机器的方案命名为“离散变量自动电子计算机”。

二进制由哲学家莱布尼茨发明(莱布尼茨发明的二进制沉寂300年)(15)

当时改造第一台极其复杂计算机的冯·诺依曼

1945年6月,冯·诺依曼与戈德斯坦、勃克斯等人,为埃德瓦克方案联名发表了计算机史上著名的“101页报告”。这份报告奠定了现代电脑体系结构坚实的根基,直到今天,仍然被认为是现代电脑科学发展里程碑式的文献。报告明确规定出计算机的五大部件(输入系统、输出系统、存储器、运算器、控制器),并用二进制替代十进制运算,大大方便了机器的电路设计。这套方案的革命意义在于“存储程序”──程序也被当作数据存进了机器内部,以便电脑能自动依次执行指令,再也不必去接通什么线路。

二进制由哲学家莱布尼茨发明(莱布尼茨发明的二进制沉寂300年)(16)

101页报告扉页

人们后来把根据这一方案思想设计的机器统称为“诺依曼机”。即使计算机发展迭代这么多年,如今我们已经即将要迈进5G的门坎,可是计算机的设计思路依然没能够跳出诺依曼机的掌心。在这个意义上,冯·诺依曼是当之无愧的“计算机之父”。

二进制由哲学家莱布尼茨发明(莱布尼茨发明的二进制沉寂300年)(17)

为什么会想到利用二进制呢?电子计算机出现以后,使用电子管来表示十种状态过于复杂,并且所有的电子计算机中只有两种基本的状态,开和关。也就是说,电子管的两种状态决定了以电子管为基础的电子计算机采用二进制来表示数字和数据。二进制与十进制的区别在于数码的个数和进位规律有很大的区别,顾名思义,二进制的计数规律为逢二进一,是以2为基数的计数体制。10这个数在二进制和十进制中所表示的意义完全不同,在十进制中就是我们通常所说的十,在二进制中,其中的一个意义可能是表示一个大小等价于十进制数2的数值。

二进制由哲学家莱布尼茨发明(莱布尼茨发明的二进制沉寂300年)(18)

计算机中的进制与编码

所以与十进制数相比,二进制数的运算规则要简单得多,这不仅可以使运算器的结构得到简化,而且有利于提高运算速度。

用双稳态电路表示二进制数字0和1是很容易的事情。计算机使用二进制进行编码,而不是我们熟悉的十进制,最重要的原因是二进制物理上更容易实现。因为电子器件大多具有两种稳定状态。比如晶体管的导通和截止,电压的高和低,磁性的有和无等。而找到一个具有十个稳定状态的电子器件是很困难的。使用二进制还有运算简单的优点。十进制有55种求和与求积的运算规则,二进制仅有各有3种,这样可以简化运算器等物理器件的设计。另外,计算机的部件状态少,可以增强整个系统的稳定性。

二进制由哲学家莱布尼茨发明(莱布尼茨发明的二进制沉寂300年)(19)

二进制数与十进制数之间的转换相当容易。人们使用计算机时可以仍然使用自己所习惯的十进制数,而计算机将其自动转换成二进制数存储和处理,输出处理结果时又将二进制数自动转换成十进制数,这给工作带来极大的方便。

二进制由哲学家莱布尼茨发明(莱布尼茨发明的二进制沉寂300年)(20)

用二进制表示数据具有抗干扰能力强,可靠性高等优点。因为每位数据只有高低两个状态,当受到一定程度的干扰时,仍能可靠地分辨出它是高还是低。

而二进制代码语言则称为机器语言,计算机可以直接识别,不需要进行任何翻译的语言。每台机器的指令,其格式和代码所代表的含义都是硬性规定的,故称之为面向机器的语言,也称为机器语言。它是第一代的计算机语言,机器语言对不同型号的计算机来说一般是不同的。

二进制由哲学家莱布尼茨发明(莱布尼茨发明的二进制沉寂300年)(21)

直接用二进制代码指令表达的计算机语言,指令是用0和1组成的一串代码,它们有一定的位数,并分成若干段,各段的编码表示不同的含义,例如某台计算机字长为16位,即有 16个二进制数组成一条指令或其它信息。16个0和1可组成各种排列组合,通过线路变成电信号,让计算机执行各种不同的操作。

二进制由哲学家莱布尼茨发明(莱布尼茨发明的二进制沉寂300年)(22)

二进制文件中的中间代码

二进制数可以分为有符号数和无符号数,有符号数,又可以分为原码、反码、补码。2进制在计算机里有它特定的表示方法,以及对应的汇编代码。

当CPU从指令寄存器拿到一条指令地址,它会根据读出来数值进行解释,加到AL寄存器中。这个指令实际上既包含了控制,又包含了数据。

二进制由哲学家莱布尼茨发明(莱布尼茨发明的二进制沉寂300年)(23)

所以计算机在计算3 8的时候,就是一个类似的过程。根据计算机架构的不同,可能将计算放置到寄存器中计算,或者将计算放置到内存中计算,或者在某特定的计算单元中计算。

每个运算单元都有自己特有的指令集,以便对输入的数据进行加工,产生输出。比如CPU,GPU,以及各种可编程接口芯片。 同一个二进制片段数据,在不同的模块或者运算单元中,都会有不同的解释。可能解释为数据,也可能解释为控制指令。

二进制由哲学家莱布尼茨发明(莱布尼茨发明的二进制沉寂300年)(24)

各位明白了,真正天才的发明无论过了多少年都不会蒙尘的,感谢莱布尼茨做出来如此卓越的发明,我们如今用着的电脑、手机都是通过二进制来进行运算的,二进制构建了整个网络时代。

我们现在享受到的一切科技成果,都是先人不懈的努力探索,感谢他们的付出,带给我们如此美好的生活!

二进制由哲学家莱布尼茨发明(莱布尼茨发明的二进制沉寂300年)(25)

,