当前位置: 首页 > Web前端 > HTML

几十年计算机的历史浩瀚无边,细数那些影响时代的人和事

时间:2023-03-28 19:11:03 HTML

本系列文章可以算是计算机科学的入门课,编程学习的入门课。目标人群主要是计算机专业的大学生。补充自己专业课程以外的内容,以及那些非计算机专业的大学生或者已经步入社会的想了解计算机科学和编程知识的人。您可能想知道计算机领域中众所周知的0和1是什么?如何操作它们?别着急,我们的系列将从算盘这个最原始的计算设备开始,然后讲巴贝奇的差分机、莱布尼茨的步进计算机和分析机、赫尔曼霍莱里的打孔卡系统第二篇可能涵盖更现代的哈佛Mark1、真空管计算机以及目前使用的晶体管计算机和集成电路计算机。构成计算机的必要元素,如内存、寄存器、CPU、指令和程序、编译器、算法和数据结构、操作系统相关内容,以及建立在计算机之上的计算机网络、软件工程、互联网和现在已经达到顶峰的人工智能,我们也会在这个系列中逐渐提及,深入了解计算机各个部分的作用。您可能还想知道谁是计算之父?谁是计算之父?谁是计算机科学之父?谁是第一个程序员?整个计算机开发生涯是各种驱动因素、人、数学和机器的结合。通过本系列,您将看到人类如何运用想象力,结合知识做出伟大的创造。繁荣的现在在我们谈论早期历史之前,我们可以先谈谈现在。手机的发展已经到了顶峰,移动互联网也走到了尽头。与此同时,人工智能、机器人、虚拟现实、增强现实、物联网等技术蓬勃发展。科幻电影中的一些场景已经开始变成现实。我们现在正在进入一个计算机增强人类能力、活动场景和环境能力的时代。在更远的未来,或许会迎来真正的“奇点”,以电脑为大脑的机器人拥有类人的智能和思考能力,最终会代替人类去探索无边无际的宇宙,最终迁移到其他星球吗?其实,现在能看到、听到、感觉到的各种高科技,都是一层层抽象出来的,就像人体可能由很多器官组成,器官又可能由很多细胞组成一样。你能想象一下,在现在简单易用的手机中,你无时无刻不在进行的操作,比如点击发布朋友圈等,其实是一系列01马不停蹄地进行着各种操作?事实上,过渡到计算机底层执行的01操作需要相当长的时间。接下来,让我们来探究一下这个转变的历史。在社会初期,一切都是出于需要而诞生的。人命贫寒,温饱一只手都数不过来。那个时候不需要“复杂的计算”。随着时间的推移,人类逐渐掌握了制造工具的能力,生活也开始趋于稳定。他们不再频繁迁徙,而是长期居住在某个地方。缺乏可持续狩猎的食物,于是自然而然地产生了圈养动物的想法。随着圈养动物数量的增加,各类动物开始频繁受到各种问题的困扰,比如我一年需要养多少头牛才能维持生命?等等。当然,一个贫穷的家庭只有几头牛,一只手就能数过来,只要有人类聚集在一起,就会形成一个小社会,社会必然面临不平等和分化,最其中突出的是贫困。富人是有区别的。富人可能拥有成百上千头牛。随着数量的增加,人的心算和记忆能力逐渐跟不上。这时,由于第一次缺乏计算和存储能力,第一代计算设备——算盘诞生了。根据维基百科,算盘可能起源于公元前2400年的巴比伦。珠算文字理解键盘最简单的形式如下:有很多格子,每个格子有很多珠子。如果每个珠子代表一个计数1,那么我们在一个格子里设置10个珠子,那个格子可以数1-10,每上一个格子,数字就翻倍10次,也就是每进一个珠子移动第二个格子,计数会增加10,每移动第三个珠子,计数会增加100。理解如下。当2个珠子在第1格移动时:当2个珠子在第1格移动时:当一个珠子在第2格移动时:当两个珠子在第1和第2格移动时:当第1、第2和第2格移动时当有是珠子在7个格子里移动:可以看到算盘提供了一套算法,每增加一个格子,里面的珠子就可以容纳上一个格子的技术容量(图中我们只画了5个,由于一个格子的限制)),计算时会存储每个格子中珠子的运动状态,方便人们直观的了解当前计算到哪里。算盘的出现,增强了人们的计算能力和存储能力,也被称为“手动”计算机。上面提到的简单键盘可以计算出5555555这样一个大数,当时社会几乎可以计算出任何物体的数量,因此被用作计算工具。工具已经存在多年。算盘可以看作是现代计算机的雏形。计算过程和进位过程是计算机中算术逻辑单元的职责,存储计算的状态与内存、内存、硬盘等有一定的关系。自从有了算盘,人类为了解决各行各业的问题,逐渐发明了许多其他的计算设备。这些设备大多是为了解决特定领域的问题而出现的,比如星盘,在航海中用来指引方向;计算尺用于更快的乘法和除法;时钟专注于计算和校准时间。这些设备使以前费力的事情变得更快、更容易、门槛更低,增强了人类各行各业的能力。历史需要不断铺垫。在历史的早期,无论是算盘、星盘、计算尺,还是时钟,这些设备都不叫“计算机”。事实上,最早使用“计算机”一词的文献来自理查德·布雷斯韦特(RichardBraithwaite)于1613年出版的一本书。书中是这样描述的:“我听过的最强大的计算器,可以大大缩短几天的工作量”。那时候的计算机指的不是机器,而是一种职业,“计算机”就是做计算的人。虽然“计算机”有时会用机器来帮忙,但大多数时候是靠手工来完成的。这种占领一直持续到1880年代。随着工业革命的发展,机器开始代替人力,大规模的工厂化生产开始代替个体工厂的手工生产,“机器”也开始在人们心中生根发芽,“计算机”这个词也逐渐开始流行起来。与“机械”有关。建立联系。多面手莱布尼茨的传统算盘计算速度慢,计算内容相对简单。当时,社会所需要的计算内容已经超过了珠算的能力。因此,社会迫切需要更强大的计算能力和更广的计算范围。广大的群众、社会的需要和天才的思维,机械式计算机应运而生。一个标志性的例子就是德国著名数学家和博学者:戈特弗里德·莱布尼茨在1694年制造的“步进计算机”,它立即用浓重的机器颜色标出了“Computer”和“Computer”的字样。上图是保存在德意志博物馆的步进计算器的复制品。--来自维基百科17世纪伟大的通才莱布尼茨认为“让一些聪明的头脑像奴隶一样耗费时间在计算工作上是不值得的”,所以一台能自动进行四次算术运算的机器——发明了步进计算机。上图引用CSDN博主标注https://blog.csdn.net/ssdlear...如有侵权,可联系删除。从图中可以看出,步进电脑的上半部分是显示数字,下半部分是设置数字。上部有16位,也就是说步进电脑可以表示16位的大小。下部有8个数字设置按钮,每个设置数字按钮为0-9,代表数字0-9,8个位置数字按钮最多可设置一个8位数字和另一个8位数字进行执行一次四次算术运算;而shifthandle用于更广泛的加法运算,在重新计算乘法时,分解为加法运算;计算句柄用于实际计算;控制/显示圈数的大圆盘用于设置基准,可设置0到9。可以在8所在的位置插入钉子,避免计数时圈数过多。其实,步进电脑类似于汽车的里程表。会自动连续累计里程,达到一位数临界值会自动携带。让我们看一个使用步进计算机进行加法和乘法的例子。减法和除法是相反的。基于文中介绍的四种算术运算,我们先来看看加法。我们要计算8+8,那么相应的步进电脑就会分解为以下步骤:首先设置被加数,将数字设置按钮中的最后一个按钮旋转到8顺时针旋转计数手柄一圈。这时步进电脑上部的显示列表会显示当前数字为8。然后设置计数按钮,旋转到8,设置加数,然后顺时针转动计数手柄一圈。这时候显示列表会显示计算结果16,如果我们要计算乘法,我们先有一个简单的,比如8*8,那么对应的步进计算机就会分解为以下几步:首先设被乘数,旋转数设置按钮为8,将计算手柄顺时针旋转一圈,显示列表显示8。此时,当乘数为个位数时,只需继续旋转计算手柄即可。如果是8*2,则再旋转1圈。也就是说,一共旋转2圈后,显示列表会显示我们这个地方对应的16个,也就是在旋转1圈的基础上,再继续旋转7圈,就会达到8*8和显示list会显示64,右边的两个指标栏分别显示6和4。如果比较复杂的话,在计算80*8的时候,对应步进电脑,会分解成以下几个步骤:首先,设置被乘数,将设置按钮顺时针旋转到8,将计算手柄旋转一圈,然后显示列表显示8。接下来设置乘数,因为80不是个位数,计算手柄旋转80次是不可能的,所以这里轮到移位手柄了;我们需要旋转一次移位手柄,将机器的输入部分向左移动一位,输入位置的数字位朝向计数部分的十位,然后旋转8圈,即8的上一个最接近的数字:80显示列表显示640,在最后右侧的三个指示器列分别显示6、4和0。四种算术运算以图解说明。很多人看了文字可能会头晕。接下来,我们还是会尝试通过画图的方式来表达上述的运算机制。下面是我们的步进电脑。我们使用一组类似于汽车里程表的滑动表来组成每组的内容和显示部分。加法首先我们计算8+8的加法。步骤1:将数字设置旋钮设置为8,并设置被加数:步骤2:转动计算手柄,并设置要添加到指标的数字:步骤3:转动数字设置旋钮,并将被加数设置为8:第四步:旋转计算手柄将两个数字相加:简单乘法。下面我们来计算8*8。第一步:将数字设置旋钮设置为8,设置被乘数:第二步:旋转计算手柄,将被乘数设置为指针:第三步:再次旋转计算手柄,显示8*2:第4步:总共旋转计算手柄8次,表示8*8:复数乘法接下来我们计算80*8。第一步:将数字设置旋钮设置为8,设置被乘数:其实任何复杂的乘法如8080也可以写成8008的形式,第一个数字尽量简单。第二步:转动运算柄,将被乘数设置为指针:第三步:转动移位柄,向左移动一位:第四步:再次转动运算柄,相当于2,进位一位为20,然后乘以8:20*8第五步:继续旋转计算柄直到8次,完成80*8。可以看到随着计算的发展,如果我们需要计算更复杂的数,那么使用计数的设备越复杂,人类的发明就越伟大、越奇妙。步进计算机是最著名的机械计算机,可以自动计算四种算术运算。它可以计算16位数字,几乎可以完成当时的任何表格。的计数,只要给出公式,就可以自动计算出结果。这台机器非常成功,已经使用了三个世纪,影响了一代又一代的数学家和未来的“计算机科学家”。是人让时代和社会不断进步。步进计算机满足基本计算后,许多新问题接踵而至。首先,步进电脑纯手工制作,设备复杂,导致生产成本高,阻碍了步进电脑走进民间,走进千家万户;其次,在交通运输和工业领域,需要对机器进行更精确的控制。校准,这通常需要大量的计算和快速的计算。步进计算机虽然可以处理这四种算术运算,但对于复杂的运算,尤其是多项式运算,通常需要拆成很多步,甚至需要数小时甚至计算。几天时间,这种依靠机械运转的计算机已经难以满足当时社会的生产和经济需要。以上计算表为坦克世界火炮射程表,引用自http://wot.17173.com/content/...,侵权删。例如,在战场上,军队要根据风速、湿度、温度、气压等多种因素综合计算炮弹的发射方式,特别注重计算速度和精度。这时候,步进电脑就很难派上用场了。在当时的社会,一种新型的计算方式应运而生:“算表”,它并不是一种新型的计算机,而是大量的数据由人来计算,类似于我们的9*9乘法表,比如某A型的A炮弹取各种因素的各种值,炮弹的弹射参数表,让军队在特定的位置,统计对应的依赖因素后,将其带入shell计算表,大概一分钟就能查出参数,实际投入使用。但是,这种计算表对特定设备的依赖很大。另一种设备需要重新计算一个表,非常耗费人力且不可扩展。人们越来越渴望找到一种通用的、自动的、快速的计算方法。计算之父——巴贝奇上图是1860年的巴贝奇,这个时候,一些注定与众不同的人开始崭露头角。从1828年到1839年,担任剑桥大学卢卡斯教授的巴贝奇有了一些想法。巴贝奇在数学、经济学和政治学等领域都取得了一定的成就,使他名垂青史,为后人所赞颂。确实是他在计算机领域的贡献。对于每更换一个设备都要重新计算一张表的重复性劳动,虽然繁琐、费时、费力,但当时的社会和政府也没有什么好办法日复一日地处理。巴贝奇认识到这存在严重问题,并在1822年的论文“应用于天文学和计算表的机制”中向皇家学会指出了这一点。巴贝奇认为:“随着知识的增长和新工具的诞生,体力劳动会越来越少,让高技能的人来处理一些容易出错和劳动密集型的工作是一种资源浪费。”基于这个观点,巴贝奇构思了一种计算机——差分机,主要利用N次多项式求值中常见N次差分的特性,驱动十进制值的加减运算齿轮。携带。差分机可以逼近多项式,多项式可以逼近对数函数和三角函数。这些函数用手计算起来相当麻烦,但用步进电脑等普通机器几乎不可能做到。注:这里我们不去探究更数学化的解释,比如N次多项式求值中常见的N阶差分是什么?如果您有兴趣,可以自行查看相关资料或点击此链接了解更多。差分机是第一代机械计算机。目的是用“机器”实现从计算到打印的全过程自动化,彻底杜绝人为错误。由于差分机的宏伟愿景,估计需要25000个零件才能完成,重达4吨,最多可存储16位数字(与目前的千兆级别相近)。即使有英国政府的资助,巴贝奇也只完成了1/7的内容。由于成本巨大,而且短时间内得不到任何好处,英国政府最终放弃了对巴贝奇的资助。然而,差分机运算的精妙程度令当时的人们惊叹不已,至今仍是人类进入科学技术的重大开端。下图是差分机1的1/7成品。值得一提的是,1991年,历史学家根据巴贝奇的草稿做了一个差分机,而且还在运行。不得不说,在当时的社会条件下,巴贝奇能有这样的天才概念。虽然政府停止补贴巴贝奇继续打造差分机,但巴贝奇并没有停下脚步继续做下去,并在思考的过程中提出了一种新的更复杂的机器形式——分析机,第一个通用目的计算机构想,包含存储器和打印机,能够按给定数据和操作的顺序执行一系列操作。上图显示了分析机的实验部分。分析引擎不仅可以执行特定的计算,还可以执行通用的计算机程序,如“条件”、“循环”等语句。它是一台真正的自动化和通用计算机。这种计算机可以自动完成一系列操作,是一个跨时代的概念,预示着计算机程序的诞生。巴贝奇一生虽然建树不断,但在差分机和分析机的实现上却未能如愿。1871年,巴贝奇在怨恨和失望中离世,连《泰晤士报》都在讣告中嘲笑他的失败。但我们应该牢记他的贡献。巴贝奇的思想成功开启了计算机时代,启发了一代又一代的科学家在这一领域进行研究和探索。因此,巴贝奇也被称为计算之父。应得的。第一位程序员——AdaLovelaceBabbage的AnalyticalEngine基本上奠定了现代计算机的雏形。在给定程序的前提下,机器可以自动计算并完成各种运算。而巴贝奇的好友兼学生阿达·洛夫莱斯当时也在研究分析机,并详细解释了使用分析机计算伯努利数的方法,被公认为第一个假想的计算机程序,因此阿达也被称为第一个程序员。艾达知识渊博,心胸开阔。当巴贝奇的同时代人还在关注计算机的数学计算能力时,艾达已经预见了计算机广泛使用的未来。在Ada的笔记中,她描述了诗意的科学“研究分析机器,探索个人和社会如何通过技术协同工作。为了纪念Ada对计算机领域的杰出贡献,美国产生了新的计算机编程语言——AdaDepartmentofDefense1980年12月10日,以Ada命名。1890年,美国政府开始面临严重的人口普查问题。宪法要求每10年进行一次人口普查,以便分配联邦资金、国会代表等。相传在1790年的第一次美国人口普查中,17位美国司法区行政长官委派200名助手骑马穿越全美各地统计居民人数,并用鹅毛笔在他们能找到的所有纸片上记录结果,人口普查项目总共花费了45000美元!到1890年,美国人口增长迅速,大量移民涌入。人口普查不是不仅成本高,而且还需要长达7年的时间来手动编译,并且在完成时数据已经过时。这时,政府意识到必须通过科学技术来提高效率和降低消耗,于是一种真正能够投入使用、能够真正提高普查效率的工具成为必然趋势。上图为HermanHoller,参考维基百科。HermanHoller在麻省理工学院任教时完成了他的第一个穿孔卡片实验,并受美国人口普查局邀请,参与提高人口普查效率,何乐礼在实际普查中使用了他研究的穿孔卡片制表机,帮助美国政府在一年内完成人口普查,而这个数据是在1880年的人口普查中。8年!穿孔卡片制表机的问世,极大地提高了人类社会大规模计算任务的效率。上图引用简书:https://www.jianshu.com/p/49f...侵权删除。那么这样一台大大提高效率的打卡制表机是如何工作的呢?穿孔卡片制表机由指示装置、打孔机、读卡装置和整理箱组成。显示装置由4行10列共40个表盘组成,每个表盘有100个格子的统一氛围,每个表盘有两个计数指针,一个类似于分针,一个类似于时针。100,时针转一圈可以数10000,相当于一个刻度盘可以刻度10000*100=100000个数据,而且每个刻度盘都是在上一个刻度的基础上加倍,可见打卡制表机可以统计出多么庞大的数据量。打孔机类似于现代键盘。打孔机负责对打孔的卡片进行打孔。当时的穿孔卡设计成和美国纸币一样大,所以可以放在纸币收纳盒里,因为穿孔卡很小。所以要在卡片上找到需要打孔的位置会很麻烦,而打孔机是模拟卡片的大型操作板。上图是一张打孔卡,实际上只有当时美钞那么大。见下图中“正在打卡”的标签。卡控卡右下角缺的部分是标记正反面的,类似于二维码,总缺一个角。上图引用简书:https://www.jianshu.com/p/49f...侵权删除。上图中的操作面板类似于现代键盘。复制了穿孔卡中的所有可操作位置。在卡片上打相应的孔,类似于我们在键盘上输入“字母”,屏幕上就会出现相应的字母。同时,穿孔卡片制表机还带有读卡装置。读卡器的主要原理是将打孔后的卡片放入,根据卡片上的孔进行操作。将读卡器的上下电路接通,男的计数位置自动加1。上图参考简书:https://www.jianshu.com/p/49f...侵权删除。读卡器就是上图。将穿孔卡放在金属针和水银之间。如果卡上有孔,金属针会接触到水银来激活电路。排序框用于对不同类别的卡片进行分类,方便后续操作。由于打卡统计机的打孔和计数速度非常快,而且计数是自动的,大大改善了以往需要人工计算、心算、大量纸张统计的低效普查方式。民营企业开始繁荣。从那时起,霍利斯就认识到了穿孔卡片制表机的巨大价值,于是成立了制表机公司,将他的产品销往世界各地的人口普查局,于是英国、意大利、德国、俄罗斯、澳大利亚、加拿大、法国、挪威、波多黎各、古巴和菲律宾都使用了他发明的制表机。由于政府和社会的需求,企业如雨后春笋般涌现,并意识到计算机带来的巨大价值:可以用来处理计算密集型任务,减少劳动力,从而增加利润。它们在会计、保险评估和库存管理等行业尤其有需求。1911年制表机公司并入计算机制表记录公司,1924年更名为国际商业机器公司(IBM),公司在其后的几十年中崭露头角,开启了电子计算机竞争时代,并为后来千家万户使用的大型机、小型机、微型机(个人电脑)的出现奠定了基础。注:本系列大量参考了CrashCourse:ComputerScience这门课程,结合自己的理解和大量资源总结成一个条理分明、分支清晰的系列科普文章。参考CPU是如何知道代码的?-知乎(zhihu.com)高级语言编译:链接和加载过程介绍-美团技术团队(meituan.com)ccceye/computer-book:计算机书籍合集(github.com)jwilber/roughViz:可重用JavaScript库在浏览器中创建草图/手绘风格的图表。(github.com)技术文章映射指南——面向信仰的编程(draveness.me)设计师和艺术家的调色板——ColorHunthttps://zh.wikipedia.org/wiki/%E6%9F%A5%E5%B0%94%E6%96%AF%C2%B7%E5%B7%B4%E8%B4%9D%E5%A5%87https://blog.csdn.net/ssdlearnerused/article/details/103272724http://wot.17173.com/content/2012-04-17/20120417164247315.shtmlhttp://www.stats.gov.cn/ztjc/zdtjgz/zgrkpc/dlcrkpc/dlcrkpcz50000/t20100526_69996.htmhttps://www.jianshu.com/p/49f23b77dced??/感谢大家的支持/以上就是本次分享的全部内容,希望对大家有所帮助^_^喜欢的话别忘了分享,点赞,收藏三联~欢迎关注to公众号ProgrammerBus,字节跳动、虾皮、兆银的三端兄弟,分享编程经验、技术干货和职业规划,助你少走弯路,进大厂。