计算的发展:从算盘到电子计算机

0 评论 1588 浏览 0 收藏 14 分钟

这篇文章,我们来复盘一下计算的发展历史,从开始的扳手指到现在的电脑,以及整个过程的原因和解决方案。

从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协议

该文观点仅代表作者本人,人人都是产品经理平台仅提供信息存储空间服务。

更多精彩内容,请关注人人都是产品经理微信公众号或下载App
评论
评论请登录
  1. 目前还没评论,等你发挥!