博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《计算机科学概论》—第1章1.2节计算的历史
阅读量:5873 次
发布时间:2019-06-19

本文共 14179 字,大约阅读时间需要 47 分钟。

本节书摘来自华章出版社《计算机科学概论》一书中的第1章,第1.2节计算的历史,作者[美]内尔·黛尔(Nell Dale)约翰·路易斯(John Lewis),更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.2 计算的历史

计算的历史十分悠久,计算系统为什么成为今天这个样子是可以解释的。这一节讲述的故事中的人物和事件为我们开创了现在的天地,为开启激动人心的未来奠定了基础。我们分别描述了计算硬件和软件的历史,因为它们对计算系统进化为我们所用的层次模型有着不同的影响。
我们介绍历史时采用的是叙述性方式,没有正式地定义任何概念。在接下来的几章中,我们将定义这些概念,并且详细地研究它们。
1.2.1 计算硬件简史
辅助人们进行各种计算的设备自古就有,迄今为止,它们还在不断进化中。让我们来简单浏览一下计算硬件的历史。
早期历史
许多人都相信位于英国的Stonehenge石群是早期的日历或星象观测台。公元前16世纪出现了算盘这种记录数值的工具,人们可以用它进行基本的数学运算。

**Stonehenge石群仍然是一个谜

英国Salisbury平原附近庄严耸立的石群Stonehenge数个世纪以来一直吸引着人们的注意。很多人相信Stonehenge从公元前2180年就开始竖立了,历时几个世纪,才形成现在的规模。尽管存在大量的理论基础,但是它的目的仍然是个谜。在夏至这天,朝阳将出现在一块主要巨石之后,这使人们猜想阳光在这块石头上被抵消了,也就出现了关于Stonehenge的早期理论,即它是一个神庙。另一种理论出现在20世纪中期,认为Stonehenge可能是一种天文历法,使月亮和太阳排成了一条直线。第三种理论则认为Stonehenge用于预言日食。
最新的研究显示Stonehenge的建造目的和实际用途都是墓地[2]。当第一块巨石被抬起,发现了在大约公元前3000年到公元前2500年的人类遗骸。无论为什么建造了Stonehenge,它所处位置的神秘特质足以挑战任何解释。
文字之前的记数法
人类花了4000年时间才把三维代币完全简化为书写符号。这个过程可以追溯至公元前7500年,当时农夫们利用很多块形状各异的土块作为计数器,帮助自己计算资产。例如,圆锥形的土块表示少量的谷物,球形的土块表示大量的谷物,圆柱形的土块表示一只动物。四块圆锥形的土块表示四份少量的谷物。从Palestine、Anatolia、Syria、Mesopotamia和Iran发现了大约8000块这样的代币。
约公元前3500年,古希腊城邦兴起后,执政者开始使用土球作为封套盛放代币,有些土球被盖上了印章,标识了它们盛放的代币。下一次变化发生在公元前3300到公元前3200年间,记录员开始只用土球上的印章进行计量,而忽略了代币本身。因此,把三维的代币简化成书写符号用了将近4000年的时间。
大约公元前3100年,开始使用铁笔绘制代币,而不再把代币符号盖在桌子上。这一变化打破了符号与对象之间的一一对应关系。十坛油用一坛油和一个代表10的符号表示。虽然没有创建新的符号表示抽象数字,但旧的符号有了新的含义。例如,圆锥形符号最初表示的是少量的谷物,当时变成了代表“1”的符号;球形(大量谷物)变成了“10”的代表。这样,33坛油就可以用10 + 10 + 10 + 1 + 1 + 1和油的代表符号来表示。
一旦创建了抽象数字,资产的符号和数字的符号就会发展成另一种形式。所以,文字是从记数法演化来的。**

17世纪中叶,法国数学家Blaise Pascal建造并出售了一种齿轮驱动的机械机器,它可以执行整数的加法和减法运算。17世纪末,德国数学家Gottfried Wilhelm von Leibniz建造了第一台能够进行四种整数运算(加法、减法、乘法和除法)的机械设备。遗憾的是,当时的机械齿轮和操作杆的水平有限,这使Leibniz机的结果不那么可信。

18世纪晚期,Joseph Jacquard发明了Jacquard织布机。这种织布机利用一套穿孔卡片来说明需要什么颜色的线,从而控制了纺织图案。尽管Jacquard织布机不是一种计算设备,但是它第一次使用了穿孔卡片这种输入形式。
未知的梦想

**“谁能预见这种发明的重要性?分析机编织的代数模式就像Jacquard织布机织出的花朵与树叶一样。这种机器也许还可以编写复杂精美的音乐片段,音乐的复杂度和音域都毫无限制呢。”

Ada,Lovelace伯爵夫人,1843年[3]。**

计算硬件的下一步重大进展直到19世纪才出现,这一次是由英国数学家Charles Babbage发明的,他称之为分析机。他的设计太过复杂,以至于当时的技术水平不能建造那样的机器,所以他的发明根本就没有实现。但是,在他构想的设计中,却包括许多现代计算机的重要部件。他的设计中第一次出现了内存,这使中间值不必再重新输入。此外,他的设计还包括数字输入和机械输入法,采用了与Jacquard织布机使用的穿孔卡片相同的方式。

Lovelace伯爵夫人Ada Augusta是计算历史上的传奇人物。Ada是英国诗人Lord Byron的女儿,是一位杰出的数学家。她对Babbage的分析机非常感兴趣,并扩充了他的想法(同时修改了他的一些错误)。Ada以第一位程序设计员著称,循环的概念(即一系列重复执行的指令)也归功于她。美国国防部广泛使用的Ada程序设计语言即是以她的名字命名的。
19世纪晚期和20世纪初,计算系统迅速发展起来。William Burroughs制造并销售了一台机械加法机。Herman Hollerith博士发明了第一台机电式制表机,从穿孔卡片读取信息。他的设备从根本上改变了美国每十年举行一次的人口普查。后来,Hollerith博士创建了当今著名的IBM公司。
1936年,一种理论得以发展,本质上它与硬件毫无关系,但它对计算机科学领域产生了深远的影响。英国数学家Alan M. Turing发明了一种抽象数学模型,即图灵机,为计算理论的主要领域奠定了基础。计算机科学这一领域荣誉最高的奖就是图灵奖(相当于数学领域的菲尔丁奖章或其他科学领域的诺贝尔奖),以Alan Turing的名字命名。最近有一部百老汇音乐剧演绎了他的一生。分析图灵机的功能是所有学习计算机科学的学生理论学习的一部分。

**第一位程序设计员Ada Lovelace[4]

1815年12月10日(George Boole也出生在这一年),Anna Isabella(Annabella) Byron和George Gordon(即Byron勋爵)的女儿Augusta Ada Byron出生了。当时,Byron以他的诗歌和疯狂的、离经叛道的行为闻名于英国。Byron夫妇的婚姻关系从开始就很紧张,Ada出生后不久,Annabella就离开了Byron。两人于1816年4月签署了离婚协议。Byron离开了英国,从此再没有回来。因为不能见到自己的女儿,他的余生充满了深深的遗憾。他在给Ada的一封信中写道:
我看不到你,我听不到你。
但是没有人像我这样关注着你。
他36岁时死于希腊,在去世之前,他大喊:
噢,我可怜可亲的孩子!我亲爱的Ada!
上帝啊,我能见到她吗?!
与此同时,Annabella最终成为一位女伯爵,身兼数学家和诗人的称号,她负责对Ada的抚养和教育。最初,Annabella自己指导Ada学习数学,但是,Ada的数学天赋很快显露出来,她需要更广博的辅导。Augustus DeMorgan这位布尔算术基本定理的发现者之一对Ada进行了进一步训练。8岁时,Ada表现出对机械设备的浓厚兴趣,并建造了复杂的模型船。
当Ada 18岁时,她拜访了Mechanics Institute,聆听了一场Dionysius Lardner博士关于“差分机”的讲座,差分机是Charles Babbage建造的一种机械计算机。据说,在见到Babbage的机器之前,Ada是教室中唯一一个立刻理解了这种机器的工作原理并且认识到它的价值的人。Ada和Charles Babbage从此成了终生的朋友。她与Babbage一起工作,帮助他记录设计方案,翻译他的工作记录,并且为他的机器开发程序。事实上,现在普遍认为Ada是历史上第一位计算机程序设计员。
当Babbage设计他的分析机时,Ada预见到这种机器的能力将远远超过算术计算,它将成为一种通用的符号操作装置。她甚至提出这种设备最终可以把和声与乐曲编写成程序,从而制作出“科学”之声。实际上,Ada是在150年前预见了人工智能这一领域。
1842年,Babbage在意大利的都灵举办了一系列有关分析机的讲座。一位参与者Luigi Menabrea被Babbage的讲座深深地打动了,于是编写了一份讲座记录。Ada于27岁时决定把这份记录翻译成英文,并且加入几点自己对这部机器的注释。最后,她的注释相当于原材料的两倍长,这份文献“分析机概要”成为这一领域的权威著作。
从Ada的信件中可以看出,这些“注释”完全出自Ada之手,Babbage有时志愿当她的编辑,但Ada并不领情。在Ada给Babbage的一封信中写道:
你更改了我的注释,这让我非常生气。我一直愿意自己对它进行必要的修改,但是我不能忍受其他人乱动我的文句。
当Ada嫁给了William Lovelace男爵后,她得到了Lovelace伯爵夫人的头衔。这对夫妇有三个孩子,都由Ada的母亲抚养,Ada则继续她的数学工作。尽管她的丈夫支持她的事业,但在那个年代,从事这种工作的妇女被看作是可耻的,就像她的父亲那样惹人厌烦。
Ada死于1852年,仅比按照Babbage的设计在瑞典建造出第一台可以运行的差分机早一年。和她的父亲一样,Ada只活了36岁,但即使如此,他们的生活是完全不同的,毫无疑问,Ada钦佩她的父亲,从他那些惊世骇俗和桀骜不驯的天性中汲取了灵感。最后,Ada要求把自己安葬在家族庄园中父亲的坟墓旁。**

到第二次世界大战爆发时,已经有几台计算机处于设计和建造中。Harvard Mark I和ENIAC是当时最著名的两台机器。图1-4所示的是ENIAC。John von Neumann是ENIAC这个项目的顾问,之后他开始致力于另一台著名机器EDVAC的建造,这台机器完成于1950年。1951年,美国人口普查局收到了第一台商业计算机UNIVAC I。UNIVAC I是第一台用于统计美国总统大选结果的计算机。

UNIVAC I的出现结束了以算盘为开端的计算的早期历史。UNIVAC I实现了建造能快速操作数字的设备的梦想。探索结束了吗?在那个年代许多专家预言只有少数计算机能够满足人类的计算需求,但他们没有意识到,快速运算大量数据的能力可以从根本上改变数学、物理、工程学和经济这些领域的本性。也就是说,计算机使这些专家对“需要计算什么”的看法变成了无稽之谈。[5]
1951年后,计算机被越来越广泛地用来解决各个领域中的问题。从那时起,探索的重点不仅在于建造更快、更大的计算设备,而且在于开发能让我们更有效地使用这些设备的工具。从这时开始,计算硬件的历史基于它们所采用的技术被划分为几个时代。
第一代(1951~1959)
第一代商用计算机使用真空管存储信息。图1-5展示了一个真空管,它会大量生热,不是非常可靠。使用真空管的机器需要重型空气调节装置以及不断的维修。此外,它们还需要巨大的专用房间。

3a0443566d94e28d25851437b72641f73564f1d4
第一代计算机的主存储器是在读/写头下旋转的磁鼓。当被访问的存储器单元旋转到
读/写头之下时,数据将被写入这个单元或从这个单元中读出。
输入设备是一台读卡机,可以阅读IBM卡(由Hollerith卡演化而来)上的孔。输出设备是穿孔卡片或行式打印机。在这一代将要结束时,出现了磁带驱动器,它比读卡机快得多。磁带是顺序存储设备,也就是说,必须按照线性顺序访问磁带上的数据。
计算机存储器外部的存储设备叫作辅助存储设备。磁带是第一种辅助存储设备。输入设备、输出设备和辅助存储设备一起构成了外围设备。
第二代(1959~1965)
晶体管(John Bardeen、Walter H. Brattain和William B. Shockley为此获得了诺贝尔奖)的出现标志着第二代商用计算机的诞生。晶体管代替真空管成为计算机硬件的主要部件。
图1-6展示了一个晶体管,它比真空管更小、更可靠、更快、寿命更长,也更便宜。
e03680f66170e965677c4b88533a080e9880cb45
第二代计算机中还出现了即时存取存储器。访问磁鼓上的信息时,CPU必须等待读/写头旋转到正确的位置。第二代计算机使用磁芯作为存储器,这是一种微小的环形设备,每个磁芯可以存储一位信息。这些磁芯由电线排成一列,构成存储单元,存储单元组合在一起构成了存储单位。由于设备是静止不动的,而且是用电力访问的,所以能够即时访问信息。
磁盘是一种新的辅助存储设备,也出现在第二代计算机硬件中。磁盘比磁带快,因为使用数据项在磁盘上的位置就可以直接访问它。访问磁带上的一个数据项时,必须先访问这个数据项之前的所有数据,而磁盘上的数据都有位置标识符,我们称之为地址。磁盘的读/写头可以被直接送到磁盘上存储所需信息的特定位置。
第三代(1965~1971)
在第二代计算机中,晶体管和其他计算机元件都被手工集成在印刷电路板上。第三代计算机的特征是集成电路(IC),这是一种具有晶体管和其他元件以及它们的连线的硅片。集成电路比印刷电路小,它更便宜、更快并且更可靠。Intel公司的奠基人之一Gordon Moore注意到从发明IC起,一个集成电路板上能够容纳的电路的数量每年增长一倍,这就是著名的摩尔定律。[6]
晶体管也被应用在存储器构造中,每个晶体管表示一位信息。集成电路技术允许用晶体管建造存储板。辅助存储设备仍然是必需的,因为晶体管存储器不稳定,也就是说,断电之后,所有的信息都将消失。
终端(带有键盘和屏幕的输入/输出设备)便是在这一代计算机中出现的。键盘使用户可以直接访问计算机,屏幕则可以提供立即响应。
第四代(1971至今)
大规模集成化是第四代计算机的特征。20世纪70年代早期,一个硅片上可以集成几千个晶体管,而20世纪70年代中期,一个硅片则可以容纳整个微型计算机。主存储设备仍然依赖芯片技术。在过去的40多年中,每一代计算机硬件的功能都变得越来越强大,体积则越来越小,花费也越来越少。Moore定律被改为芯片的集成度每18个月增长一倍。
20世纪70年代末,词汇表中出现了个人计算机(PC)这个词。微型计算机已经变得非常便宜,几乎每个人都可以有一个,孩子们也是玩吃豆人游戏长大的。
第四代计算机进入商业市场后出现了一些全新的名字。Apple、Tandy/Radio Shack、Atari、Commodore和Sun公司加入了早期计算机公司的行列,这些早期的计算机公司包括IBM、Remington Rand、NCR、DEC(Digital Equipment Corporation)、Hewlett-Packard、Control Data和Burroughs。在个人计算机革命的浪潮中,最为人称道的成功故事是关于Apple公司的。工程师Steve Wozniak(史蒂夫·沃兹尼亚克)和中学生Steve Jobs(史蒂夫·乔布斯)共同创建了一个个人计算机工具包,而且把它从车库推向了市场,这就是Apple Computer这个拥有数十亿资产的公司的起源。
IBM PC是1981年面世的,之后,其他公司迅速制造了许多与之兼容的机器。例如,Dell和Compaq公司在制造与IBM PC兼容的PC方面取得了巨大的成功。Apple公司在1984年创建了非常受欢迎的Macintosh微型计算机的生产线。
20世纪80年代中期,出现了更大型、功能更强大的机器工作站,它们通常用于商业用途,而不适用于个人。创建工作站的理念是为了把雇主自己的工作站放在一个桌面上。这些工作站由线缆连接在一起,或者说被连网了,以便它们彼此能够交互。引入了RISC(精简指令集计算机,Reduced-Instruction-Set Computer)体系结构后,工作站变得更加强大了。每台计算机都能理解一套指令,我们称这套指令为机器语言。传统机器(如IBM 370/168)的指令集有200多条指令。指令执行得非常快,但访问内存的速度却很慢,因此,特殊的指令更加有用。随着内存访问的速度越来越快,使用精简的指令集变得越来越诱人。Sun微系统公司于1987年制造出了采用RISC芯片的工作站。这种工作站的受欢迎程度说明了RISC芯片的可行性。我们通常称这些工作站为UNIX工作站,因为它们使用的是UNIX操作系统。

**从车库到财富500强

Steve Jobs和Steve Wozniak是少年时代的朋友,他们分别卖掉了自己的大众汽车和可编程的计算器,为他们的新计算机公司筹集资金。他们的第一单生意是销售50个Apple ls,即他们在车库中设计和建造的计算机。在短短的6年时间中,Apple公司跻身于世界财富500强。**

由于计算机仍在使用电路板,所以我们不能为这一代计算机画上休止符。但是,一些新事物已经出现了,对如何使用计算机造成了强烈的影响,它们必将开创一个新时代。摩尔定律被再次改写为下列说法:“每18个月,计算机的功率会在同样的价格水平下增长一倍,或者以一半的价格可以购买同样的计算机功率。”[7]

并行计算
20世纪80年代末,尽管使用单处理器的计算机仍然盛行,但是新的机器体系结构出现了。使用并行体系结构的计算机依靠的是一套互相连接的中央处理器。
一种并行机器的组织结构是所有处理器共享同一个存储单元。另一种组织结构是每个中央处理器具有自己的本地存储,与其他处理器通过高速内部网进行通信。
并行体系结构提供了几种加快执行速度的方法。例如,把程序中的一步操作分成多个片段,在几个独立的处理器上同时执行这些程序片段。这种机器被称为SIMD(单指令多数据流,Single-Instruction, Multiple-Data-stream)计算机。第二种机器可以同时运行程序的不同部分。这种机器被称为MIMD(多指令多数据流,Multiple-Instruction, Multiple-Data-stream)计算机。
虽然把上百甚至上千个处理器组织在一台机器中有巨大的潜能,但是为这种机器进行程序设计的难度也很高。并行计算机的软件设计不同于一个计算机序列的软件设计。程序设计员必须重新思考利用并行性进行程序设计和解决问题的方法。
连网
20世纪80年代,多用户大型机的概念被小型机器连接成的网络代替,这些小型机器通过连网共享打印机、软件和数据这些资源。1973年由Robert Metcalfe和David Boggs发明的以太网使用廉价的同轴电缆和一套能够让机器互相通信的协议。1979年,DEC、Intel和Xerox公司都参与到以太网标准的制定中。
工作站的设计是为了连网,但是,直到1985年生产出了更高级的Intel芯片才能够对个人计算机进行连网。到1989年,Novell Netware用文件服务器把PC连接在一起。文件服务器是一台具有大容量的存储器以及强劲输入/输出能力的PC。把数据和办公自动化软件放在服务器上,而不是在每个PC上放置一个副本,这样既达到了集中控制的目的,又给予了每台PC自主权。把工作站或PC连接成网络,就形成了LAN(局域网,Local Area Network)。
我们知道,Internet是从ARPANET演化来的,ARPANET是美国政府从20世纪60年代开始资助的网络,由11个节点构成,集中分布在Los Angeles和Boston地区。与ARPANET和LAN一样,Internet使用包交换的方法共享信息。但是,Internet由分布在世界各地的不同网络组成,这些网络之间采用通用的TCP/IP(传输控制协议/网际协议,Transmission-Control Protocol/Internet Protocol)协议通信。

**乔布斯和沃兹尼亚克不能放弃

“我们去了雅达利公司说,‘嘿,我们开发了一些有趣的东西,甚至在构建时用了一些你们的部分,你来资助我们怎么样?或者我们将它给你。我们只是想做这件事。付给我们工资,我们会为你工作。’他们说,‘不行。’然后我们去了惠普,他们说,‘嘿,我们不需要你们,你们大学还没毕业呢。’”
来源:mlgnn.com/?tag = steve - jobs (2009年9月14日)**

在《现代计算史》(A History of Modern Computing)一书中,Paul E. Ceruzzi对以太网和Internet的关系做了下列注解:

“如果20世纪90年代的Internet是信息高速公路,那么以太网就是支持它的慢车道,两者同等重要。Internet是由ARPA研究演化来的全球网络,在Xerox公司发明本地以太网前,Internet已经存在了。但是,在Internet盛行之前,以太网改变了办公室计算和个人计算的本性。”[8]
1.2.2 计算软件简史
虽然计算机硬件可以启动,但是如果没有构成计算机软件的程序的指引,它们什么也做不了。了解软件进化的方式对理解软件在现代计算系统中是如何运行的至关重要。
第一代软件(1951~1959)
第一代程序是用机器语言编写的。所谓机器语言,即内置在计算机电路中的指令。即使是对两个数字求和这样的小任务也要动用3条二进制指令(0和1),程序设计员必须记住每种二进制数字的组合表示什么。使用机器语言的程序设计员一定要对数字非常敏感,而且要非常细心,第一代程序员都是数学家和工程师毫不令人感到惊奇。然而,用机器语言进行程序设计不仅耗时,而且容易出错。
由于编写机器代码非常乏味,有些程序设计员就开发了一些工具辅助程序设计。因此,第一代人工程序设计语言出现了。这些语言被称为汇编语言,它们使用助记忆码表示每条机器语言指令。
由于每个程序在计算机上执行时采用的最终形式都是机器语言,所以汇编语言的开发者还创建了一种翻译程序,把用汇编语言编写的程序翻译成机器代码。一种称为汇编器的程序读取每条用助记忆码编写的程序指令,把它翻译成等价的机器语言。这些助记忆码都是缩写码,有时难以理解,但用起来它们比二进制数字串容易得多。
那些编写辅助工具的程序设计员简化了他人的程序设计,是最初的系统程序员。因此,即使在第一代计算机软件中,也存在编写工具的程序设计员和使用工具的程序员这样的区分。汇编语言是程序设计员和机器硬件之间的缓冲器。请参阅图1-7。即使是现在,如果需要高效代码,还是会使用汇编语言编写程序。第6章详细探讨了一个机器代码和它对应的汇编语言的例子。

4ad9beb52a9c6e63476ebd504f47b547f92389a8
第二代软件(1959~1965)
当硬件变得更强大时,就需要更强大的工具有效地使用它们。当然,汇编语言是向正确的方向前进了一步,但是程序设计员还是必须记住单独的机器指令。第二代软件见证了更强大的语言开发。使用高级语言,程序设计员就能够用类似于英语的语句编写指令。
第二代软件时期开发的两种语言目前仍然在使用,它们是FORTRAN(为数字应用程序设计的语言)和COBOL(为商业应用程序设计的语言)。FORTRAN和COBOL的开发过程完全不同。FORTRAN最初是一种简单语言,经过几年增加附加特性后才形成一种高级语言。而COBOL则是先设计然后再开发的,形成之后就很少改动。
这一时期设计的另一种语言是Lisp,目前仍然在使用。Lisp与FORTRAN和COBOL有极大的不同,而且没有被广泛接受,主要用于人工智能的应用程序和研究。Lisp的专用语是当今人工智能可用的语言之一,Scheme就是一种Lisp专用语,有些学校用它作为启蒙性的程序设计语言。
高级语言的出现加速了在多台计算机上运行同一个程序。每种高级语言都有配套的翻译程序,这种程序可以把高级语言编写的语句翻译成等价的机器码指令。最早时,高级语言的语句通常被翻译成汇编语言,然后这些汇编语句再被翻译成机器码。只要一台机器具有编译器这种翻译程序,就能够运行用FORTRAN或COBOL编写的程序。
在第二代软件末期,系统程序员的角色变得更加明显。系统程序员编写诸如汇编器和编译器这样的工具,使用这些工具编写程序的人被称为应用程序设计员。随着包围硬件的软件变得越来越复杂,应用程序设计员离计算机硬件越来越远了。请参阅图1-8。
a39f4564f0ee0547c393ad2dc72283b82a337e43
第三代软件(1965~1971)
在第三代商用计算机时期,很显然,人们使计算的处理速度放慢了。计算机在等待运算器准备下一个作业时,无所事事。解决方法是使所有计算机资源处于计算机的控制中,也就是说,要编写一种程序来决定何时运行什么程序。这种程序被称为操作系统。
在前两代软件时期,实用程序用于处理频繁执行的任务。装入器把程序载入内存,连接器则把大型程序连接在一起。第三代软件改进了这些实用程序,使它们处于操作系统的引导之下。实用程序、操作系统和语言翻译程序(汇编器和编译器)构成了系统软件。
用作输入/输出设备的计算机终端的出现使用户能够访问计算机,而高级的系统软件则使机器运转得更快。但是,从键盘和屏幕输入输出数据是个很慢的过程,比在内存中执行指令慢得多。这就导致了如何利用机器越来越强大的能力和速度的问题。解决方法就是分时,即许多用户用各自的终端同时与一台计算机进行通信(输入和输出)。控制这一进程的是操作系统,它负责组织和安排各个作业。
对于用户来说,分时好像使他们有了自己的机器。每个用户都会被分配到一小段中央处理时间,在中央处理器服务于一个用户时,其他用户将处于等待状态。用户通常不会察觉还有其他用户。但是,如果同时使用系统的用户太多,那么等待一个作业完成的时间就会变得很明显。
在第三代软件中,出现了多用途的应用程序,用FORTRAN语言编写的社会科学统计程序包(Statistical Package for the Social Science, SPSS)就是这样的程序。SPSS具有一种专用的语言,用户使用这种语言编写指令作为程序的输入。使用这种专用语言,即使不是经验丰富的程序设计员也可以描述数据,并且对这些数据进行统计计算。
起初,计算机用户和程序设计员是一体的。在第一代软件末期,为其他程序设计员编写工具的程序设计员的出现带来了系统程序设计员和应用程序设计员的区分。但是,程序设计员仍然是用户。在第三代软件中,系统程序员为其他人编写软件工具。计算机用户的概念骤然出现了,他们不再是传统意义上的程序员。

**恐怖组织探测软件

社交网络分析提供了一种对人们如何交互进行建模的方法,这种方法通过使用一种称为图论的数学分支实现。图论将人视为结点,将人与人之间的关系视为链接。现今,一些研究人员正在使用这种方法来对恐怖主义组织构建软件模型。当给出了已被逮捕的恐怖组织人员的数据时,软件就能够估算这个恐怖组织被瓦解的概率。这种通过软件进行的估算可能比由人进行判断得到的估算准确得多。**

用户与硬件的距离逐渐加大。硬件已演化成整个系统的一小部分。由硬件、软件和它们管理的数据构成的计算机系统出现了,如图1-9所示。虽然语言层还在加深,但是程序设计员们仍然在使用一些最内层的语言。如果要求一小段代码运行得尽可能快,占用的内存尽可能少,那么还是需要用汇编语言或机器语言编写这段代码。

7799829a07c207b3f8148fe4251844d058ea11b1
图1-9 包围硬件的软件分层仍然在增长
第四代软件(1971~1989)
20世纪70年代出现了更好的程序设计技术,即结构化程序设计方法,这是一种有逻辑、有规则的程序设计方法。Pascal语言和Modula-2都是采用结构化程序设计的规则制定的。BASIC这种为第三代机器设计的语言也被升级成了更具有结构性的版本。此外,还出现了C语言,使用这种语言,用户可以在高级程序中使用一些汇编语句。C++也是一种允许用户使用低级语句的结构化语言,它成为业界的选择。
更好、更强大的操作系统也被开发出来了。AT&T公司作为研究工具而开发的UNIX系统成了许多大学的标准设置。为IBM PC开发的PC-DOS系统和为了兼容而开发的MS-DOS系统都成了个人计算机的标准系统。Macintosh机的操作系统引入了鼠标的概念和点击式的图形界面,因此彻底改变了人机交互的方式。
即使在附近的小店,都可以买到高品质的、价格合理的应用程序软件包。这些程序可以让一个没有计算机经验的用户实现一项特定的任务。三种典型的应用程序包是电子制表软件、文字处理软件和数据库管理系统。Lotus 1-2-3是第一个商用电子制表软件,即使是一个新手,也可以用它输入数据,对数据进行各种分析。WordPerfect是第一个文字处理软件,dBase IV是让用户存储、组织和提取数据的系统。
第五代软件(1990至今)
第五代中有三个著名事件,即在计算机软件业具有主导地位的Microsoft公司的崛起、面向对象的设计和编程方法的出现以及万维网(World Wide Web)的普及。
在这一时期,Microsoft公司的Windows操作系统在PC市场占有显著优势。尽管WordPerfect仍在继续改进,但是Microsoft公司的Word成了最常用的文字处理软件。20世纪90年代中期,文字处理软件、电子制表软件、数据库程序和其他应用程序都被绑定在一个超集程序包中,这个程序包称为办公套件。
面向对象的程序设计方法成为大型程序设计项目的首选。结构化设计基于任务的层次划分,而面向对象的设计则基于数据对象的层次划分。Sun Microsystems公司为面向对象的编程方法设计的Java语言成为C++语言的竞争对手。

**从计算机到书本

前微软执行官约翰·伍德离开电脑转向教育行业,他离开了以前的工作转而建立了一个在发展中国家建立学校和图书馆的非营利组织。他说,“教育是摆脱贫困的门票,它能带来更好的家庭健康,能使妇女得到更好的待遇。每天,世界上2.5亿儿童无学可上,其中三分之二是女孩。”截止到2011年4月,该组织(Room to Read)已经建立了1443所学校和12?074所图书馆。
来源:“Newsmakers: Schools for the World”(Parade杂志,2009年4月5日)**

1990年,日内瓦的CERN物理实验室的英国研究员Tim Berners-Lee希望创建一个全球Internet文档中心——万维网(World Wide Web),他为之创建了一套技术规则。除了这套规则外,他还创建了格式化文档的HTML语言和让用户访问全世界站点上的信息的程序——浏览器,此时的浏览器还不成熟,只能显示文本。1993年,Marc Andreesen和Eric Bina发布了第一个能显示图形的浏览器Mosaic。美国《新闻周刊》的报道称,“Mosaic将成为最重要的计算机应用程序。”[9]

目前的浏览器市场由两种浏览器瓜分,即(由Mosaic衍生的)Netscape Navigator和Microsoft公司的Internet Explorer。Microsoft公司把Internet Explorer(IE)与Windows操作系统绑定在一起,这使IE成为浏览器战争中的赢家。这种捆绑导致美国政府提出了垄断的法律诉讼,2001年的解决方案中要求微软公司对其竞争对手更加开放。在1998年美国在线公司将其收购之后,Netscape的未来变得十分不确定。美国在线公司在十年之后停止了对Netscape产品的支持。保持了一些Mosaic味道的火狐(Firefox)浏览器于2004年11月发布并且在当年占据了25%的浏览器市场。
虽然Internet已经存在几十年了,但是万维网的出现让使用Internet在世界范围内共享信息变得容易了(参阅图1-10)。大约在2002年左右,网络开始发生变化,诸如Facebook和推特的社交网络变得大受欢迎,在线博客也将每个人都变成了作家和社会评论家。这些新网站的特点是由用户创建和编辑。例如,维基百科是一个在线的百科全书,任何人都可以输入或编辑内容。一些人使用“Web 2.0”这个词来描述这些网站的兴起和使用。

5208a89769cb01cae87a83b9e8811ad0624bf1e9
图1-10 在万维网上分享信息
第五代软件最重要的特征是用户概念的改变。首先出现的用户是程序设计员,他们编写程序来解决自己或他人的问题。接下来出现的用户是系统程序员,他们为其他程序员编写越来越复杂的工具。到20世纪70年代早期,应用程序员使用这些复杂的工具为非程序员编写应用程序。随着个人计算机、计算机游戏、教育程序和用户友好的软件包的出现,许多人成为计算机用户。万维网的出现使网上冲浪成了一种娱乐方式,所以更多的人成了计算机用户。计算机用户可以是在学习阅读的一年级小学生,可以是在下载音乐的青少年,可以是在写论文的大学生,可以是在制定预算的家庭主妇,可以是在查找客户信贷记录的银行职员。我们所有的人都是计算机用户。
在硬件和软件的历史简介中,我们把重点放在传统的计算机和计算系统上。与这些历史并驾齐驱的是使用集成电路(或芯片)来运行或控制烤面包机、汽车、重病特别护理监控器和卫星的历史。这种计算技术称为嵌入式系统。虽然芯片不是我们要在本书中研究的真正意义上的计算机,但它们确实是过去55年中技术革命的产物。
1.2.3 预言
我们用几个没有实现的关于计算机的预言来结束这段计算历史的简介:[10-12]
“我认为存在大概5台计算机的世界市场。”——Thomas Watson,IBM公司主席,1943
“ENIAC有18?000个真空管,重达30吨。未来的计算机将只有1000个真空管,重量只有1.5吨。”——Popular Mechanics,1949
“我已经走遍了这个国家并和最优秀的人交流,我可以向你保证,数据处理只是一种时尚,持续不了几年。”——Prentice Hall中负责商业书籍的编辑,1957
“这……有什么用吗?”——IBM高级计算系统部门的工程师对微芯片的评论,1968
“没理由人人都想在家摆一台计算机。”——Ken Olsen,DEC公司总裁、主席及创始人,1977
“把1亿交给Microsoft太多了。”——IBM,1982
“我预测Internet将成为一颗惊人的超新星,1996年则会彻底失败。”——Bob Metcalfe,3Com公司的创始人和发明家,1995
“朋友们,Mac平台将完全占领市场。”——John C.Dvorak,PC Maga

转载地址:http://bpenx.baihongyu.com/

你可能感兴趣的文章
Android硬件抽象层(HAL)深入剖析(二)
查看>>
CDays–4 习题一至四及相关内容解析。
查看>>
L3.十一.匿名函数和map方法
查看>>
java面向对象高级分层实例_实体类
查看>>
android aapt 用法 -- ApkReader
查看>>
[翻译]用 Puppet 搭建易管理的服务器基础架构(3)
查看>>
Android -- AudioPlayer
查看>>
Python大数据依赖包安装
查看>>
Android View.onMeasure方法的理解
查看>>
Node.js 爬虫初探
查看>>
ABP理论学习之仓储
查看>>
centos7下使用yum安装mysql
查看>>
How can I set ccshared=-fPIC while executing ./configure?
查看>>
2.移植uboot-添加2440单板,并实现NOR、NAND启动
查看>>
hadoop-2.6.5安装
查看>>
vmware虚拟机里的LINUX不能上网的原因一:虚拟网卡设置
查看>>
监控摄像机的区别和分类
查看>>
Java学习——对象和类
查看>>
ElasticSearch 组合过滤器
查看>>
HttpClient连接池的连接保持、超时和失效机制
查看>>