我们人类无时无刻不想着,自己能够创造一个世界。
什么是计算机?
计算社会
我们人类已经步入了计算社会。
纵览人类社会的计算历史,从“结绳记事”中的绳结到算筹、算盘计算尺、机械计算机,再到我们今天的电子计算机,说不定还有未来的光子计算机、量子计算机等等,计算在人类的不同历史时期,发挥了各自的历史作用——用马克思的话总结来说就是提升了“生产力”。
又不知过了多久,许多国家的人开始使用”筹码“来计数,最有名的就要数咱们中国商周时期出现的算筹了。古代的算筹实际上是一根根同样长短和粗细的小棍子,大约二百七十几枚为一束; 多用竹子制成,也有用木头、兽骨、象牙、金属等材料制成的。数学家祖冲之计算圆周率时使用的工具就是算筹。算筹的缺点:使用算筹计算太麻烦了,很不方便——计算时需要慢慢摆放。
于是,人们发明了更好的计算工具——算盘,算盘最早可能在汉代萌芽,在南北朝时期定型,利用进位制计数。使用时需要配合一套口诀——好比计算机的软件。算盘本身还可以存储数字,使用时很方便。至今,算盘还在被使用。
轮子的历史
计算机简史
15世纪,随着天文和航海的发展,计算工作越来越繁重,计算工具急需改进。
1630年,英国数学家奥特雷德在使用当时流行的对数刻度尺做乘法运算时,突然想到,如果用两根相互滑动的对数刻度尺,不久省去了用两脚规度量长度了么。他的这个想法导致了机械化计算的诞生,但奥特雷德对这件事情并没有在意,此后200年里,他的发明也就没有被实际应用。
18世纪末,发明蒸汽机的瓦特成功制作了第一把计算尺,在尺座上增加了一个滑标,用来“存储”计算的中间结果,这种滑标很长时间一直被后人所沿用。
1850年以后,计算尺迅速发展,成为工程师随身携带的”计算器“,一直到20世纪五六时年代,计算尺仍然是工科大学生的一种身份标志。
第一台真正计算机的出现
1623年,法国数学家帕斯卡出生,三岁丧母,后由担任税务官的父亲养大。在帕斯卡小时候,看到父亲费力的计算税率税款的时候,就想帮父亲做点事情。
19岁时(1642年),帕斯卡发明了人类有史以来第一台机械计算机——帕斯卡加法器。它是一种系列齿轮组成的装置,外形像一个长方盒子,用儿童玩具那种钥匙旋紧发条后才能转动,只能够做加法和减法。然而,即使只做加法,也有个“逢十进一”的进位问题。聪明的帕斯卡采用了一种小爪子式的棘轮装置。当定位齿轮朝9转动时,棘爪便逐渐升高;一旦齿轮转到0,棘爪就“咔嚓”一声跌落下来,推动十位数的齿轮前进一档。
1662年帕斯卡去世,不久后,在德国的大数学家莱布尼茨看到了帕斯卡关于加法计算机的论文,勾引起了他的发明欲。莱布尼茨早年经历坎坷,后来获得了一次去法国的机会,在巴黎的时候,他聘请了一些著名的机械专家和能工巧匠,终于在1674年制造出了一台更完美的机械计算机。
连续重复的计算加减法
莱布尼茨发明的新型计算机约有1米长,内部安装了一系列齿轮机构,除了体积较大之外,基本原理继承于帕斯卡。不过,莱布尼茨技高一筹,他为计算机增添了一种名叫“步进轮”的装置。步进轮是一个有9个齿的长圆柱体,9个齿依次分布于圆柱表面;旁边另有个小齿轮可以沿着轴向移动,以便逐次与步进轮啮合。每当小齿轮转动一圈,步进轮可根据它与小齿轮啮合的齿数,分别转动1/10、2/10圈……,直到9/10圈,这样一来,它就能够连续重复地做加法。
连续重复的计算加法是现代计算机做乘除法采用的办法,莱布尼茨的计算机加减乘除四则运算一应俱全。
在介绍莱布尼茨的时候还有一个小插曲。(传说大约在1700年左右的某天,莱布尼茨的朋友送给他一副中国的”易图“,其实就是八卦图,在看八卦图的时候,发现八卦的每一种卦象都有阴阳两种符号组成,这不就是有规律的二进制数字么,于是他就由此,率先系统提出了二进制的运算法则,直到今天,我们用到的计算机还是使用的二进制。)
提花编织机
计算机发展到现在还是人去操作机器,还没有实现人与机器的对话,或者会所是把人类的思想告诉机器,让机器按照人的想法去自动执行。说到实现人机对话,就要说一下另外一个行业——纺织业。
提花编织机是具有升降纱线的提花装置,是一种能使绸布编织出图案花纹的织布机器。
最开始编织机编织图案相当费事。所有的绸布都是用经线(纵向线)和纬线(横向线)编织而成。若要织出花样,织工们必须细心地按照预先设计的图案,在适当位置“提”起一部分经线,以便让滑梭牵引着不同颜色的纬线通过。机器当然不可能自己“想”到该在何处提线,只能靠人手“提”起一根又一根经线,不厌其烦地重复这种操作。
1725 年:法国纺织机械师布乔发明了“穿孔纸带”的构想。布乔想出了一个“穿孔纸带”的绝妙主意。布乔首先设法用一排编织针控制所有的经线运动,然后取来一卷纸带,根据图案打出一排排小孔,并把它压在编织针上。启动机器后,正对着小孔的编织针能穿过去钩起经线,其它则被纸带挡住不动。于是,编织针自动按照预先设计的图案去挑选经线,布乔的“思想”“传递”给了编织机,编织图案的“程序”也就“储存”在穿孔纸带的小孔中。
1790年 的时候法国机械师杰卡德,基本形成了改进提花机的构想,由于当时正是法国大革命时期,杰卡德为了参加革命,无暇顾及发明创造,直到1805年才真正完成”自动提花编织机“的制作。杰卡德为他的提花机增加了一种装置,能够同时操纵 1200 个编织针,控制图案的穿孔纸带后来换成了穿孔卡片。
在后来电子计算机开始发展的最初几年中,在多款著名计算机中我们均能找到自动提花机的身影。
18世纪末,法兰西发起了一项宏大的工程——人工编制《数学用表》,由于当时没有先进的计算工具,导致这项工作极其艰巨。发足数学界调集和大批的数学家,组成人工计算的流水线,算的昏天暗地才完成了17卷大部分的书稿,即便如此,计算出的《数学用表》仍有大量错误。
巴贝奇的差分机
巴贝奇在他的自传《一个哲学家的生命历程》里写到,大约在1812年的,“有一天晚上,我坐在剑桥大学的分析学会办公室里,神志恍惚地低头看着面前打开的一张对数 表。一位会员走进屋来,瞧见我的样子,忙喊道:‘喂!你梦见什么啦?’我指着对数表回答说:‘我正在考虑这些表 也许能用机器来计算!’”
巴贝奇的第一个目标是制作一台差分机。所谓“差分”的含义,是把函数表的复杂算式转化为差分运算,用简单的加法代替平方运算。那一年,刚满20岁的巴贝奇从法国人杰卡德发明的提花编织机上获得了灵感,差分机设计闪烁出了程序控制的灵光──它能够按照设计者的旨意,自动处理不同函数的计算过程。巴贝奇耗费了整整十年光阴,于1822年完成了第一台差分机,它可以处理3个不同的5位数,计算精度达到6位小数,当即就演算出好几种函数表。由于当时工业技术水平极低,第一台差分机从设计绘图到机械零件加工,都是巴贝奇亲自动手完成。当他看着自己的机器制作出准确无误的《数学用表》,高兴地对人讲:“哪怕我的机器出了故障,比如齿轮被卡住不能动,那也毫无关系。你看,每个轮子上都有数字标记,它不会欺骗任何人。”以后实际运用证明,这种机器非常适合于编制航海和天文方面的数学用表。
成功后,巴贝奇连夜上书皇家学会,要求政府资助他建造第二台运算精度为20位的大型差分机。政府看到巴贝奇的研究有利可图,破天荒地与科学家签订了第一个合同。
然而,第二台差分机在机械制造工厂里触上了“暗礁”。第二台差分机大约有25000个零件,主要零件的误差不得超过每英寸千分之一,即使用现在的加工设备和技术,要想造出这种高精度的机械也绝非易事。
由于进度缓慢,到1842年的时候,政府宣布停止对巴贝奇的一切资助,连科学界的有人都用一种怪异的目光看他。
然而在这个时候,巴贝奇收到了一封信,写信人不仅对他表示理解而且还希望与他共同工作。娟秀字体的签名表明了她不凡的身份——伯爵夫人。收到信函不久后,写信的女士来到了巴贝奇的实验室,巴贝奇感觉与这位女士似曾相识,却有想不起在哪里见过。直到这位女士说”您还记得我吗?十多年前,您还给我讲过差分机原理。”看到巴贝奇迷惑的眼神,她又笑着补充说:“您说我像野人见到了望远镜。”巴贝奇恍然大悟,想起已经十分遥远的往事。 原来这位女士是大名鼎鼎的英国诗人拜伦之独生女——阿达·奥古斯塔。
在大型差分机进军受挫的1834年,巴贝奇提出了一个更新更大胆的设计——通用的数学计算机。巴贝奇称它为“分析机”,它能够自动解算100个变量的复杂算题,每个数字可以达25位,速度每秒1次。
巴贝奇首先为分析机构思了一种齿轮式的“存贮库”,每一齿轮可贮存10个数,总共能够储存1000个50位数。分析机的第二个部件是所谓“运算室”,其基本原理与帕斯卡的转轮相似,但他改进了进位装置,使得50位数加50位数的运算可完成于一次转轮之中。此外,巴贝奇也构思了送入和取出数据的机构、以及在“存储库”和“运算室”之间运输数据的部件。他甚至还考虑到如何使这台机器处理依条件转移的动作。一个多世纪过去后,现代电脑的结构几乎就是巴贝奇分析机的翻版,只不过它的主要部件被换成了大规模集成电路而已。仅此一说,巴贝奇就当之无愧于计算机系统设计的“开山鼻祖”。
阿达非常准确地评价道:“分析机'编织’的代数模式同杰卡德织布机编织的花叶完全一样”。于是,为分析机编制一批函数计算程序的重担,落她的肩头。阿达开天辟地第一回为计算机编出了程序,其中包括计算三角函数的程序、级数相乘程序、伯努利函数程序等等。阿达编制的这些程序,即使到了今天,电脑软件界的后辈仍然不敢轻易改动一条指令。人们公认她是世界上第一位软件工程师。众所周知,美国国防部据说是花了250亿美元和10年的光阴,把它所需要软件的全部功能混合在一种计算机语言中,希望它能成为军方数千种电脑的标准。1981年,这种语言被正式命名为ADA语言,使阿达的英名流传至今。当然这些都是后话了。
在当时,两人为把分析机的图纸变成现实,耗尽了全部财产,搞得一贫如洗,在此期间,两人为筹措研究经费,两人还商量“下海创收”,比如制作国际象棋玩具、赛马游戏机等等。但这并没有带来什么改变,为此,阿达还两次把丈夫家中的祖传珍宝拿去当铺换钱,不过后来又被阿达的母亲赎了回来。在经历了贫困交加和无休止的脑力劳动,阿达的身体状况急剧恶化,1852年,年仅36岁的阿达怀着对分析机美好的梦想去世了。
阿达去世后,巴贝奇又默默的独自坚持了20年,晚年的他已经不能准确发音 和有条理的表达自己的意思,但仍坚持工作。1871年巴贝奇去世。最终分析机没有被制造出来。巴贝奇和阿达设想的分析机超出了他们所处时代至少一个世纪。
1890年,德国侨民霍列瑞斯博士在美国做人口普查(上一次人口普查人工花了7年),人口普查需要做大量工作,如年龄、性别等用调查表做采集的项目,还要计算每个社区有多少老人、小孩,男人、女人等。霍列瑞斯博士就想用机器自动统计这些数据。几年后
他根据巴贝奇的发明和杰卡德的穿孔纸带设计了机器。结果花了6周就得出了准确的数据。
杰卡德和霍列瑞斯分别用开创了程序设计和数据处理之先河。以历史的目光审视他们的发明,正是这种程序设计和数据处理,构成了电脑“软件”的雏形。
1896年霍列瑞斯博士创办了IBM公司的前身。
到了现在,制造出来的计算机都是机械的,机械计算机向电子计算机发展的过渡时期发生的主要事件。
1906年,美国的德福雷斯特发明了电子管,为计算机的发展奠定了基础。
1907年,德福雷斯特向美国专利局申报了真空三极管(电子管)的发明专利。真空三极管可分别处于“饱和”与“截止”状态。“饱和”即从阴极到屏极的电流完全导通,相当于开关开启;“截止”即从阴极到屏极没有电流流过,相当于开关关闭。其控制速度要比艾肯的继电器快成千上万倍。
1924年,IBM——一个有划时代意义的公司成立了。
1936年,美国青年霍德华·艾肯去哈佛共度物理学博士学位,由于博士论文设计设计空间电荷传导理论,需要计算非常复杂的非线性微分方程。艾肯想发明一种机器代替人工计算,幻想有一台计算机帮他解决数学难题。三年后,艾肯在图书馆里发现了巴贝奇和阿达的论文。 博士毕业后,艾肯进入了美国海军军械局做了一名小小的海军中尉。为了实现计算机的梦想,他想到了IBM。正好艾肯的一位老师正在IBM出资创办的“哥伦比亚大学统计局”里任职,艾肯从这位老师这里听说了IBM董事长沃森的大名。这位老师为艾肯写了一封推荐信。艾肯拿到推荐信后,准备好了一份可行性报告,就去找沃森。沃森听完了艾肯的话以后,直接给艾肯划了100W美元。有了钱,艾肯开始了“MARK I”(马克1号)的研发。马克1号借助电流进行运算,最关键的部件采用继电器组成,马克1号上安装了大约3000个继电器。继电器接通电路表示“1”,继电器断开则表示“0”。继电器能在大约1/100秒内接通或断开电路。为马克1号编制计算程序的也是一位女数学家格雷斯·霍波(G.Hopper)。有一天,她在调试程序时出现了故障,拆开继电器后,发现有只飞蛾被夹扁在触点中间,从而“卡”住了机器的运行。于是,霍波恢谐地把程序故障统称为“臭虫”(bug,现在表示电脑系统或程序中的一些缺陷或问题)
1944年2月,马克1号计算机在哈佛大学正式运行。从外表看,它的外壳用钢和玻璃制成,长约15米,高约2.4米,自重达到31.5吨,他可以每分钟进行200次以上的运算。可以作23位数加23位数的加法,一次仅需要0.3秒;而进行同样位数的乘法,则需要6秒多的时间。
马克1号被称为最后一台“史前”计算机——机械/电动方式。
时间向前一年,也就是1943年,此时正是二战时期,美国为了实验新式火炮,需要计算火炮的弹道表。需要进行大量计算。一张弹道表需要计算近4000条弹道,每条弹道需要计算750此乘法和更多的加减法,工作量巨大。 你可以想象这样一个场景:一发炮弹大出去,100多人用一种手摇计算机算个不停,还经常出错,费力不讨好。当时任职宾夕法尼亚大学莫尔电机工程学院的莫希利(John Mauchly)于 1942年提出了试制第一台电子计算机的初始设想——“高速电子管计算装置的使用”,期望用电子管代替继电器以提高机器的计算速度。
美国军方得知这一设想后,拨款成立了一个以莫希利、埃克特(John Eckert)为首的研制小组。终于在1946年2月14日,世界上第二台电子计算机,世界上第一台通用计算机 (多个行业都可以使用)埃历阿克”(ENIAC,译成中文是“电子数字积分和计算机”)诞生于美国宾夕法尼亚大学。
ENIAC长30.48米,宽6米,高2.4米,占地面积约170平方米,30个操作台,重达30英吨,耗电量150千瓦,造价48万美元。它包含了17,468根真空管(电子管)7,200根晶体二极管,1,500 个中转,70,000个电阻器,10,000个电容器,1500个继电器,6000多个开关。
每秒能进行5000次加法运算(据测算,人最快的运算速度每秒仅 5次加法运算),每秒400次乘法运算,是使用继电器运转的机电式计算机的1000倍、手工计算的20万倍。。它还能进行平方和立方运算,计算正弦和余弦等三角函数的值及其它一些更复杂的运算。
以我们的眼光来看,这当然很微不足道。但这在当时可是很了不起的成就!原来需要20多分钟时间才能计算出来的一条弹道,现在只要短短的30秒!
第一台电子计算机:
阿塔纳索夫-贝瑞计算机(Atanasoff–Berry Computer,通常简称ABC计算机)在1937年设计,不可编程,仅仅设计用于求解线性方程组,并在1942年成功进行了测试。然而,这台计算机用纸卡片读写器实现的中间结果存储机制是不可靠的。而且,在发明者约翰·文森特·阿塔纳索夫因为二战任务而离开爱荷华州立大学之后,这台计算机的工作就没有继续进行下去。ABC计算机开创了现代计算机的重要元素,包括二进制算术和电子开关。但是因为缺乏通用性、可变性与存储程序的机制,将其与现代计算机区分开来。这台计算机在1990年被认定为IEEE里程碑之一。
阿塔纳索夫和克利福德·贝瑞的计算机工作直到1960年才被发现和广为人知,并且陷入了谁才是第一台计算机的冲突中。那时候,ENIAC普遍被认为是第一台现代意义上的计算机,但是在1973年,美国联邦地方法院注销了ENIAC的专利,并得出结论:ENIAC的发明者从阿塔纳索夫那里继承了电子数字计算机的主要构件思想。因此,ABC被认定为世界上第一台计算机。
埃历阿克虽然威力强大,但是它毕竟还很不完善,比如存在着耗电多、费用高的缺点。它的耗电量超过174千瓦,据说那些年,只要埃历阿克一开动,整个费城城市的所有灯光顿时黯然失色。那些个电子管发光又发热,平均每隔7分钟要损坏一只。虽然当初只花了军械部40万元的研制费用,可谁能料到,维护它的费用后来竟超过200万之巨!埃历阿克最致命的缺点是程序与计算两分离。指挥埃历阿克2万只电子管工作的程序指令,被存放在机器的外部电路里。需要计算某个题目前,埃克特必须分派几十员精兵强将,把数百条线路用手接通,像一群电话接线员那样手忙脚乱地忙活好几天,才能进行几分钟运算。
这时,冯·诺依曼用高超的理论和技术方法,一举攻克了巨大的难关。
冯·诺依曼通用计算机模型
在埃历阿克尚未投入运行前,冯·诺依曼就已开始着手起草一份新的设计报告,要对这台电子计算机进行脱胎换骨的改造。他把新机器的方案命名为 “离散变量自动电子计算机”,英文缩写译音是“埃德瓦克”(EDVAC)。
1946年冯·诺依曼于提出通用计算机模型,由运算器、控制器、存储器、输入设备、输出设备组成:
运算器:简单的来说可以做些加减乘除的运算,还有逻辑运算,是CPU来实现此功能的
控制器:协调各个硬件相互工作的设备,但是现在的控制器已经结合在CPU中了,所有CPU里面由于运算器也有控制器
存储器 :存储器是计算机记忆或暂存数据的部件,即规定对输入数据如何进行加工处理的一系列指令也都存放在存储器中
输入设备:输入数据
输出设备:输出数据
CPU: 中央处理单元。
冯·诺依曼体系还定义了计算机的一些基本特性:所有的计算机里面都使用二进制信息来做相应的计算和处理。
First Draft of a Report on the EDVAC, John von Neumann, 1945, June
1945年6月,冯·诺依曼与戈德斯坦、勃克斯等人,为埃德瓦克方案联名发表了一篇长达101页纸洋洋万言的报告,即计算机史上著名的“101页报告”。这份报告奠定了现代电脑体系结构坚实的根基,直到今天,仍然被认为是现代电脑科学发展里程碑式的文献。报告明确规定出计算机的五大部件(输入系统、输出系统、存储器、运算器、控制器),并用二进制替代十进制运算,大大方便了机器的电路设计。
埃德瓦克方案的革命意义在于“存储程序”──程序也被当作数据存进了机器内部,以便电脑能自动依次执行指令,再也不必去接通什么线路。
人们后来把根据这一方案思想设计的机器统称为“诺依曼机”。自冯·诺依曼设计的埃德瓦克始,直到今天我们用“奔腾”芯片制作的多媒体计算机为止,电脑一代又一代的“传人”,大大小小千千万万台计算机,都没能够跳出诺依曼机的掌心。在这个意义上,冯·诺依曼是当之无愧的“电脑之父”。
-
第一代电子管计算机(1946~1958):
特点: 操作指令是为特定任务而编制的,每种机器有各自不同的机器语言,功能受到限制,速度也慢。另一个明显特征是使用真空电子管和磁鼓储存数据。 -
第二代晶体管计算机 (1956-1963):
特点: 晶体管代替了体积庞大电子管,使用磁芯存储器。体积小、速度快、功耗低、性能更稳定。还有现代计算机的一些部件:打印机、磁带、磁盘、内存、操作系统等。在这一时期出现了更高级的COBOL和FORTRAN等编程语言,使计算机编程更容易。新的职业(程序员、分析员和计算机系统专家)和整个软件产业由此诞生。 -
第三代集成电路计算机 (1964-1971):
以中小规模集成电路,来构成计算机的主要功能部件。主存储器采用半导体存储器。运算速度可达每秒几十万次至几百万次基本运算。在软件方面,操作系统日趋完善。 -
第四代大规模集成电路计算机 (1971-至今):
By the 1970s science and technology were in the ascendancy as astronauts landed on the Moon, and fertility experts produced the first test-tube baby. Meanwhile advances in electronics and computing enabled almost instant global communication—and people started to talk about the Information Age.
从1970年以后采用大规模集成电路(LSI)和超大规模集成电路(VLSI)为主要电子器件制成的计算机,重要分支是以大规模、超大规模集成电路为基础发展起来的微处理器和微型计算机。
现代计算机组成原理
计算机的核心是中央处理器(CPU)。CPU本质上是一个数学机器。CPU对数字进行加法、减法和其他算术运算。当你操作你的计算机时,或者使用你的手机时,你所看到的一切都是建立在一个每秒处理数百万次数据的CPU之上的。
仅仅从01这样的数字中,就产生了文字、图片、音视频、电商购物、金融支付等等虚拟数字世界,不是很神奇吗?
CPU将其作用的数字存储在称为寄存器的小内存单元中。中央处理器能够将数字从计算机的主存(被称为随机存取存储器(RAM))读入寄存器。它还能够将存储在寄存器中的数字写回RAM。这使得CPU可以处理大量的数据,这些数据不能全部放入寄存器中。以下是其工作原理的图表:
当CPU从RAM中取出值到它的寄存器中时,它在它的数学单元中使用这些值,并将结果存储到另一个寄存器中。
每次CPU做加法,减法,从RAM中读取或写入时,它只执行一条指令。每个计算机程序通常由数千到数百万条指令组成。
一个复杂的计算机程序,比如你的操作系统,不管是iOS、Android、macOS、Windows还是Linux(是的,它们也是计算机程序!),可能总共有数百万条指令。
编写单独的指令来告诉计算机该做什么是完全可能的,但对于除最简单的程序之外的所有程序来说,这将是非常耗时和乏味的。这是因为大多数计算机程序的目的不仅仅是做简单的数学——计算机程序可以让你上网冲浪,操纵图像,让你和你的朋友聊天。
您不用编写单独的指令,而是用一种特定的编程语言编写代码(例如,C,C++,Java,Go,JavaScript等等)。这些代码通过一个叫做编译器的计算机程序,编译器将这些代码转换成CPU知道如何执行的指令。您编写的每一行代码都将变成许多指令——有些行可能最终变成几十条指令!
网友评论