计算的发展:从算盘到电子计算机
这篇文章,我们来复盘一下计算的发展历史,从开始的扳手指到现在的电脑,以及整个过程的原因和解决方案。
从10以内加减法到10以上的加减法,大数计算从几分钟完成到几秒内完成,这一切的变化经历了哪些发展,说明了哪些道理?我们一起来看看吧。
一、计算的回顾
10以内的加减法运算
婴儿识数使用的最早的计算器是什么?
显然是手指,1+1=2,2+2=4,5+5=10,10以内的加减法是最容易学习的,10以内的计算其实就是在数手指。2+3=5就是伸出2个手指 再接着伸出3个手指,然后按照顺序从开始数到5,我们才知道2+3等于5。
整个运算的过程分成四部分:
1. 将左手5个手指全部拳起来,是为初始状态
2. 从小手指开始依次伸出两个手指,是为被加数
3. 从中指开始再伸出三个手指,是为加数
4. 对最终全部伸开的手指状态进行数数。得出最终的结果
整个计算过程经历4个状态变化:
整个计算过程,有输入数据2和3,有计算方法+,有输出结果5。
2+3=5之所以能用手指表示出来因为我们的5个手指充当了容器。10以内的计算实际就是将2和3分别放到容器里,然后再读出容器的刻度。如果没有容器,或者容器不足以承载2和3,那么自然就不可能读出5。
10以内的加减法,我们都可以非常容易的计算出来,因为我们天然带着这个容器,哪怕20以内的加减法,小朋友们也会聪明的用十个手指加十个脚趾完成,再多用我们身体自带的计算容器显然就不够用了。
10以上的加减法运算
10以上的加减法是怎么算的呢?
此时我们开始使用列竖式的方式,234+789=?
我们的算法是234与789个位与个位对齐,十位与十位对齐,我们从低到高依次计算,4+9=13=10+3,个位留3,十位进1,依次计算我们可以得到1023。
显然此时我们使用了三种规格容器,10的容器,100的容器,1000的容器。在各个容器内计算的时候,我们使用的计算还是可以简化成10以内的数据计算。
竖式的方式扩大了我们可使用的容器规模和数量,可使用的容器本身极大的拓展了我们的计算能力。
我们中国古人发明了算盘,从算珠的排列方式上,可知算盘是很强大的计算容器和计算工具。
无论是列算式还是用算盘,能计算对的前提都是,使用算式或算盘的人需要按照计算的规则,完成算式的运算。这个过程非常依赖人的注意力,如果注意力不够集中,很容易算错,从而得到错误结果。
二、计算难度的原因分析和解决方案
10以上的加减法为什么这么难?
古人为什么要发明算式或者算盘哪?肯定是因为我们用人脑算这些东西比较吃力,为什么会吃力哪?
1. 越复杂的计算需要越多的容器,比如10以内,十个手指可以胜任,100以内就没有手指可以胜任了。纸张和算盘可以承载足够多复杂的容器。
2. 使用越多的容器,容器之间的关联关系越多。虽然基本的规则是简单的,但是当容器的数量多到一定程度或者重复到一定程度的时候,我们的认知就会迷路了。重复的东西会让我们无法回到出发点。
相信大家有过以下经历:
1. 看别人的文章和视频,看了一遍觉得懂了,自己动手就不会了。所谓的眼睛懂了但是手还是不会,这本质上是因为对这个事情还没有真正掌握,还需要强化训练。眼睛懂了是因为,分解后的每个动作确实是容易的,当尝试整体落地的时候就需要脑袋里有一个足够大的容器,能够把这些很多简单分解动作组合起来。中间有任何一个步骤错误,都会导致无法达到最终的目标。
2. 为什么我们大部分人是很难欣赏纯音乐,一首纯音乐,前后的呼应或音符的叙事中间有很多其他的音符。未经训练的大脑,并不是一个合格的纯音乐容器,无法容纳足够多的音符变化。听懂的人是因为听到的内容和前文的一些音符形成了呼应,而大部分的人已经忘记前文是什么了。
学过计算机的同学,可能已经意识到,前文一直提到的容器,在计算机语言里就是堆栈,是各种数据结构。我们不仅要能将步骤、音符等信息装到容器里,还需要做到随时可以取出来。如果不能随时取出来,这些堆栈里的信息就是死的信息了。
解决思路有哪些?
如何提高堆栈处理能力哪?
两个思路:
1. 训练大脑
要提高数学的心算能力,可以通过学习各种心算技巧,并大量的练习。很多少儿心算培训班走的就是这条路。要提高音乐的欣赏能力,可以学习演奏乐器、大量的欣赏音乐。要提高阅读的学习能力,可以通过大量的阅读强化。2. 发明设备
训练大脑,当然是可行的方式,很多数学天才都通过这种方式,取得了了不起的成就。除此之外的另一条道路就是发明设备。
发明设备实际就是实现对人的计算行为的模拟。模拟人的行为显然是不容易的,好在现代计算机的广泛使用早就宣告了这种模拟已经成功了。我们可以踏着前人的路径简单回顾下,前人是如何模拟的。
计算如何被模拟的?
1. 识别被模拟对象有哪些模块及相互之间的关系
计算机科学史上最伟大的模型之一,自然是图灵机,图灵机的输入和输出都使用的是纸带,输入的内容通过程序的转换可以转换为纸带上的输出。图灵机模型被提出不久,就得到很多科学家的一致认可。
约翰·冯·诺依曼继续发展的基础上提出的现代计算机的模型使计算机又前进了一大步,计算机的被抽象为5大模块:控制器、运算器、存储器、输入设备、输出设备。
存储器和控制器的结合可以实现堆栈的模拟功能,只要有足够的内存,不仅10的容器、100的容器、1000的容器,更大更多的容器也可以被模拟出来。运算器和控制器的结合可以实现加减乘除的容器操作。输入设备和控制器的结合可以模拟加数、被加数、减数、被减数、乘数、被乘数等各种输入。输出设备和控制器的结合可以模拟各种输出的结果,不仅是文字,还包括图形和图像。2. 用合适的设备模拟计算
对计算的模拟早已有之,人们尝试了各种有计算潜力的系统,包括水力、热力、机械力,显然只有到近代电力科学的发展才给人类提供了更容易控制的耗散系统模型。
在电子计算器发展以前,人们的计算更多的都还集中在对时间的计算。中西方都尝试过用水、热、机械等各种方式驱动钟表的运转,显然钟表的运转是比较早的计算了。
随着计算机的发展,计算器已经从最初占地170平方米发展到手提式笔记本、手机、智能穿戴设备。
3. 计算机语言的模拟
和计算机一起发展的自然是编程语言。在软件编程领域,大部分的编程都已经从面相过程的编程切换到面相对象的编程。
面相对象的编程方式在各种设计模式的加持下垄断了大部分的软件设计开发。
面相过程向面相对象切换的本质原因是什么哪?
前文我们提到计算能力的差异本质是堆栈的深度决定的,堆栈就是容器。
我们设想一个场景:
某探测队发现一个直径为半米的深洞,派人下去和派机器下去会有什么区别。显然在幽闭的管道环境里,人可能下去二十米就到极限了,再继续下沉人就会迷失了,如果停留的时间过长,人会发疯。如果派机器下去哪?显然只要电力供应跟的上,下面的环境只要不损坏设备,机器下沉几千米几万米都能正常返回。
同样道理,面相对象编程并不是为了适应计算机,恰恰是为了适应人。各种设计模式的加持就是让人可以不在代码的汪洋中迷失,设计模式的工厂模式、代理模式、原型模式、中介者模式、责任链模式等等模式如同地图上的参照物,没有这些丰富的参照物仅仅靠看太阳,你不可能知道自己究竟是在北京还是在上海,是在家里还是在单位。
在一定程度上,编写程序就像在挖地道,而按照设计模式设计的架构就像地道开挖前,打的各种竖井,瞄着各种竖井挖地道不容易走偏。每挖一段就可以探出头来透透气。
当然有些从事软件开发的人可能并未意识到自己使用各种设计模式,大家使用的Spring、Hibernate、Struct等各种软件架构就是在各种设计模式的指导下设计的。
正常的软件系统开发时,使用的框架图、类图、流程图等就是软件开发时的施工蓝图,只有设计足够精良的施工蓝图才能带来更健壮、更容易升级和复用的软件系统。
三、一些认知副产品
人们发明计算机的重要原因是因为不同人的心理堆栈的深度是不同的,有些人经过特殊的训练,心理堆栈更深,可以从事更复杂的任务。有些人某些方面的心理堆栈没有经过训练,深度较浅,在理解某些复杂问题的时候就会吃力。
互联网领域有一个特别令人恐惧和厌烦的角色 — 电脑黑客,指的是不经过权限人同意用恶意的手段绕过别人的权限系统,非法的获取别人的信息,从而获取利益。
同样的对人也存在一些这样的黑客,利用一些手段,让用户的心理堆栈溢出,从而打开别人的钱包,非法的获取别人的钱财。比如各种邪教、诈骗都部分的使用了这个原理。
就像电脑黑客是不被欢迎的,人心黑客也是如此,无论做技术还是做人,我们还是坚持,真诚才是必杀技的好。
真诚才能行之更远。
本文由 @我是产品张 原创发布于人人都是产品经理。未经许可,禁止转载
题图来自Unsplash,基于CC0协议
该文观点仅代表作者本人,人人都是产品经理平台仅提供信息存储空间服务。
电子计算机
最大的机电计算机之一是哈佛 Mark I,IBM 于 1944 年在第二次世界大战期间为盟军完成。它包含 765,000 个组件、300 万个连接和 500 英里的电线。为了保持其内部机械装置的同步,它使用了一根 50 英尺长的轴穿过机器,由一台五马力的电机驱动。这项技术最早的用途之一是为曼哈顿计划 运行模拟。
这些巨大的机电野兽的大脑是继电器:电控机械开关。
在继电器中,有一根控制线来确定电路是打开还是关闭。控制线连接到继电器内部的线圈。当电流流过线圈时,会产生电磁场,进而吸引继电器内部的金属臂,将其关闭并完成电路。你可以把继电器想象成一个水龙头。控制线就像水龙头把手。打开水龙头,水从管子里流过。关闭水龙头,水流停止。继电器也在做同样的事情,只是用电子而不是水。
然后,受控电路可以连接到其他电路,或连接到诸如电机之类的东西,当继电器闭合后,会增加齿轮的计数。
械臂有质量,因此不能在打开和关闭状态之间立即移动。 1940 年代的好接力器可能能够在一秒钟内来回轻弹 50 次。这可能看起来很快,但在解决大型复杂问题时还不够快(类似于制表机不能高速地处理人口调查卡)。
除了缓慢的切换速度之外,另一个限制是磨损。任何移动的机械都会随着时间的推移而磨损。有些东西完全崩溃,而另一些东西开始变得粘滞、缓慢,而且完全不可靠。
随着继电器数量的增加,发生故障的概率也会增加。哈佛马克我有大约 3500 个继电器。即使您假设继电器的使用寿命为 10 年,这也意味着您平均每天必须更换一个故障继电器!当您正在进行一些重要的多天计算时,这是一个大问题。(10年3650天,3500个继电器,在10年内需要全部更换,平均一天一个继电器)
这并不是所有工程师都必须面对的。这些巨大、黑暗、温暖的机器也吸引了昆虫。 1947 年 9 月,哈佛 Mark II 上的操作员从故障继电器中取出一只死飞蛾。我们将在后面的一集中详细讨论的 Grace Hopper 指出,“从那时起,当计算机出现任何问题时,我们都会说它有bug(昆虫)。”这就是我们得到术语计算机错误的地方。
很明显,如果计算要进一步发展,就需要一种更快、更可靠的机电继电器替代方案,幸运的是,这种替代方案已经存在!
(2)电子管和电子管计算机
1904 年,英国物理学家约翰·安布罗斯·弗莱明 (John Ambrose Fleming) 开发了一种新的电子元件,称为热离子阀,它在一个密封的玻璃灯泡内装有两个电极——这是第一个真空管(电子管) 。其中一个电极可以被加热,这将导致它发射电子——这一过程称为热离子发射。然后另一个电极可以吸引这些电子以产生我们的电水龙头的流动,但前提是它带正电——如果它带负电或中性电荷,电子将不再被吸引穿过真空,因此没有电流流动。允许电流单向流动的电子元件称为二极管(真空二极管) ,但真正需要的是一个开关来帮助打开和关闭电流。
幸运的是,不久之后,在 1906 年,美国发明家 Lee de Forest 添加了第三个“控制”电极,位于 Fleming 设计中的两个电极之间。通过向控制电极施加正电荷,它会像以前一样允许电子流动,但如果给控制电极施加负电荷,它将阻止电子流动。因此,通过操纵控制线,可以打开或关闭电路。它与继电器几乎相同——但重要的是,真空管没有活动部件。这意味着磨损更少,更重要的是,它们每秒可以切换数千次。(真空三极管)
近半个世纪以来,这些真空三极管将成为收音机、长途电话和许多其他电子设备的基础。我应该在这里指出,真空三极管并不完美——它们有点脆弱,会像灯泡一样烧坏,但它们比机械继电器有了很大的改进。(真空三极管在收音机、长途电话用于信号的放大)
此外,最初的真空管价格昂贵——一台收音机通常只使用一个,但一台计算机可能需要成百上千个电气开关。但是到了 1940 年代,它们的成本和可靠性已经提高到可以用于计算机的地步……至少对于像政府这样财力雄厚的人来说是这样。这标志着从机电计算向电子计算的转变。(真空三极管在计算机用于开关)
第一次大规模使用真空管进行计算是由工程师 Tommy Flowers 设计并于 1943 年 12 月完成的 Colossus Mk 1。Colossus 安装在英国的布莱切利公园(Bletchley Park),并帮助解密纳粹通讯。
这听起来可能很熟悉,因为在两年前,通常被称为计算机科学之父的艾伦·图灵 (Alan Turing) 已经在布莱切利公园 创造了一种名为 Bombe 的机电设备 。它是一种旨在破解纳粹 Enigma 密码的机电机器,但 Bombe 从技术上讲并不是一台计算机,我们稍后将介绍 Alan Turing 的贡献。
无论如何,Colossus 的第一个版本包含 1,600 个真空管,总共生产了 10 个 Colossi 来帮助破解密码。 Colossus 被认为是第一台可编程的电子计算机。编程是通过将数百根电线插入插板来完成的,有点像老式电话交换机,以便设置计算机执行正确的操作。因此,尽管“可编程”,它仍然必须进行配置以执行特定的计算。
进入几年后于 1946 年在宾夕法尼亚大学完成的电子数值积分器和计算器(或称 ENIAC)。这是由 John Mauchly 和 J. Presper Eckert 设计的世界上第一台真正通用的可编程电子计算机(采用是10进制,其编程也是利用电线插入插板完成)。
ENIAC 每秒可以执行 5000 次十位数的加法或减法,比之前的任何机器快很多很多倍。它运行了十年 ,据估计,到那时为止,它完成的计算比整个人类都要多 。但是真空管那么多,故障屡见不鲜,ENIAC一般一次只能运行半天左右就坏了。
到 1950 年代,甚至基于真空管的计算也达到了极限。美国空军的 AN/FSQ-7 计算机与 1955 年完工,是“SAGE”防空计算机系统的一部分,我们将在后面的节目中详细介绍。
(3)晶体管和晶体管计算机
为了降低成本和尺寸,以及提高可靠性和速度,需要一种全新的电子开关。 1947 年,贝尔实验室的科学家 John Bardeen、Walter Brattain 和 William Shockley 发明了晶体管。(3人获得1956年度的诺贝尔物理学奖,John Bardeen和其它两人又获得1972年诺贝尔物理学奖。Bardeen, 第一位获得两次诺贝尔物理学奖的科学家, 曾开玩笑说,自己其实只是获得了三分之二的诺贝尔奖)
即使是贝尔实验室的第一个晶体管也显示出巨大的潜力——它每秒可以在开启和关闭状态之间切换 10,000 次。此外,与玻璃制成的真空管和小心悬挂的易碎组件(真空三极管的栅极,发射极) 不同,晶体管是固体材料,称为固态组件。
几乎立即,晶体管就可以比尽可能小的继电器或真空管更小。这导致了更小、更便宜的计算机,例如 1957 年发布的 IBM 608——第一台完全由晶体管供电的商用计算机。它包含 3,000 个晶体管,每秒可以执行 4,500 次加法,或大约 80 次乘法或除法。 IBM 很快将其所有计算产品转换为晶体管,将基于晶体管的计算机带入办公室,并最终带入家庭。
今天,计算机使用尺寸小于 50 纳米的晶体管——作为参考,一张纸大约有 100,000 纳米厚。它们不仅非常小,而且速度非常快——它们每秒可以切换数百万次状态,并且可以运行数十年。
无论如何,Colossus 的第一个版本包含 1,600 个真空管,总共生产 10 个 Colossi 来帮助破解密码。
Colossus 被认为是第一台可编程的电子计算机。也搬到了那里,创立了肖克利半导体。肖克利的管理方法和怪异行为引起员工的不满,其中八人决定一同辞职,后来他们被肖克利称为"八叛逆"(The Traitorous Eight),八人接受位于纽约的仙童摄影器材公司(Fairchild Camera and Instrument)的资助,于1957年创办了仙童半导体公司),仙童半导体员工后来创立了英特尔——当今世界上最大的计算机芯片制造商。(“八叛逆”中的最后两位诺依斯和摩尔,他们创办的公司就是大名鼎鼎的英特尔(Intel)。
相关问答
什么是 电子计算 ?电子计算机是一种能自动、高速、正确地完成数值计算、数据处理、实时控制等功能的电子设备。一般来说,电子计算机可分为电子数字计算机、电子模拟计算机两大类...
【世界上第一台 电子计算机 诞生于哪年?至今有多少年了?】作业帮[最佳回答]1946年第一台电子计算机埃尼阿克第一台电子计算机是在第二次世界大战后不久制成的,那时,随着火炮的发展,弹道计算日益复杂,原有的一些计算机已不...
世界上的第一台 电子计算机 诞生于几年?世界上的第一台电子计...[最佳回答]埃尼阿克”最初是为了进行弹道计算而设计的专用计算机.但后来通过改变插入控制板里接线方式来解决各种不同的问题,而成为一台通用机.它的一种改型机...
电子 数是怎么 计算 ? - 懂得电子数是指原子或分子中电子的数量,在化学中是一项重要的指标。电子数的计算方法有多种,以下是其中几种常见的计算方法:1.找到元素的原子序数,原子...
电子 银行承兑汇票贴现利息是多少?-其他理财知识问答-我爱卡[回答]电子银行承兑汇票贴现利息与利率和存期有关。电子银行承兑汇票贴现利息的计算公式为:利息=存款本金*银行利率*存款时间。例如200万的承兑汇票,距离...
计算 机出现之前,有哪些神奇的 计算 工具?布莱兹·帕斯卡—就是我们物理上大气压单位的那个帕斯卡,也是pascal语言命名纪念的那个人,也是帕斯卡三角(中国的杨辉三角)的人,也是概率论的奠基人,为了减...布...
电子计算 机是通过按什麽来进行计算的?给它发一些指令,这些指令并不是直接发给您要控制的硬件,而是先通过前面提过的输入设备,如键盘、鼠标,接收您的指令,然后再由中央处理器(CPU)来处理这些指...
什么是破坏 电子计算 程序呢?破坏电子计算程序指有意或无意地对电子计算机程序进行修改、删除、破坏等行为,导致程序无法正常运行或产生错误结果的情况。原因是电子计算机程序是由一系列指...
电子计算 机使用方法?1.打开电子计算机:通常有一个电源按钮,按下即可开机。2.输入数据:在计算机屏幕上打开一个应用程序,比如文本编辑器或者电子表格,在程序中输入需要计算的...
电子计算 专业技校是学什么的电子计算机专业技校主要学习以下方面的知识和技能:1.计算机应用基础:学习计算机的基本概念、原理和应用领域,了解计算机硬件和软件的基本组成和功能。2.编...
扫一扫微信交流