本节书摘来自华章出版社《计算机科学概论》一书中的第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展示了一个真空管,它会大量生热,不是非常可靠。使用真空管的机器需要重型空气调节装置以及不断的维修。此外,它们还需要巨大的专用房间。
**从车库到财富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章详细探讨了一个机器代码和它对应的汇编语言的例子。
**恐怖组织探测软件
社交网络分析提供了一种对人们如何交互进行建模的方法,这种方法通过使用一种称为图论的数学分支实现。图论将人视为结点,将人与人之间的关系视为链接。现今,一些研究人员正在使用这种方法来对恐怖主义组织构建软件模型。当给出了已被逮捕的恐怖组织人员的数据时,软件就能够估算这个恐怖组织被瓦解的概率。这种通过软件进行的估算可能比由人进行判断得到的估算准确得多。**
用户与硬件的距离逐渐加大。硬件已演化成整个系统的一小部分。由硬件、软件和它们管理的数据构成的计算机系统出现了,如图1-9所示。虽然语言层还在加深,但是程序设计员们仍然在使用一些最内层的语言。如果要求一小段代码运行得尽可能快,占用的内存尽可能少,那么还是需要用汇编语言或机器语言编写这段代码。
**从计算机到书本
前微软执行官约翰·伍德离开电脑转向教育行业,他离开了以前的工作转而建立了一个在发展中国家建立学校和图书馆的非营利组织。他说,“教育是摆脱贫困的门票,它能带来更好的家庭健康,能使妇女得到更好的待遇。每天,世界上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”这个词来描述这些网站的兴起和使用。