第1章引论原稿.docx
《第1章引论原稿.docx》由会员分享,可在线阅读,更多相关《第1章引论原稿.docx(18页珍藏版)》请在冰豆网上搜索。
第1章引论原稿
·第1章引论
本章要点:
1.计算机与网络发展简史;2.计算机软件发展简史;3.计算机应用;4.计算机发展趋势。
1.1计算机发展简史
1.1.1早期计算工具
在早期计算工具中,算盘是一个具有特殊意义的计算器。
算盘上的珠子可以记(计)数,按照口诀拨动珠子可以进行四则运算。
与现代计算机相比,算盘的结构和功能还太简单,它只能存储计算结果,所有的操作都要靠人的大脑和手完成。
但即使这样,对于简单的加减运算,至今算盘还扮演着非常活跃的角色。
在漫长的计算历史中,许多计算工具都消失了,但算盘还在使用。
图1.1算盘图1.2第一台机械计算机
1623年,德国科学家契克卡德(W.Schickard)制造了人类有史以来第一台机械计算机,这台机器能够进行六位数的加减乘除运算。
1642年法国科学家帕斯卡(B.Pascal)发明了著名的帕斯卡机械计算机,首次确立了计算机器的概念。
它是一个齿轮传动装置的机械计算机,只能做加法运算,但能够自动完成逢9进1的进位操作。
1674年,大数学家莱布尼茨在对帕斯卡的计算机进行了改进之后,发明了能够进行加减乘除运算的手摇计算机。
这台计算机在进行乘法运算的时候,采用了进位-加的方法,后来演化为二进制,被现代计算机普遍采用。
至此,计算机已经初步实现了机械化,或者说半自动化,但距离自动计算尚有很大的差距。
有趣的是,缩短这个差距的竟是两个纺织机械师。
1725年,法国纺织机械师布乔(B.Bouchon)发明了“穿孔纸带”技术。
在织布上编织图案,如同画画,需要有的地方着色,有的地方不着色。
对织布来说,就是有的地方织线,有的地方不织线。
准备一卷与织布同样宽幅的纸带,按照图案——就像作画一样——在上面一排一排地打上小孔,然后铺在织布上,当编织机开始编织的时候,就会在有孔的地方织线,在没有孔的地方不织线,于是图案就编织出来了。
布乔想出了这个绝妙的想法,但真正的应用还是在80年后,另一位法国机械师杰卡德(J.Jacquard)利用“穿孔纸带”技术,发明了“自动提花编织机”,由此奏响了19世纪机器自动化的序曲。
杰卡德编织机“千疮百孔”的穿孔卡片,蕴含着程序控制思想的萌芽,在早期的电子计算机中,就是用这种穿孔纸带和穿孔卡片来存储程序和数据的。
1822年,30岁的巴贝奇(C.Babbage)受杰卡德编织机的启迪,花费10年的时间,设计并制作出了差分机。
这台差分机能够按照设计者的旨意,自动处理不同函数的计算过程。
它可以处理3个不同的5位数,计算精度达到6位小数,巴贝奇用它制作出精确无误的数学用表。
其后近
50年的岁月里,巴贝奇把全部的精力投入到制作精度更高的差分机和设计分析机的工作中。
1834年,巴贝奇设计出具有堆栈、运算器、控制器的分析机,阿达为之编写了人类历史上第一个程序。
因为当时科技发展水平的限制,巴贝奇的第二个差分机和分析机均未能制造出来。
直到巴贝奇去世70多年之后,MarkⅠ在IBM的实验室制作成功,巴贝奇的夙愿才得以实现。
而这个时候,电子计算机已经呼之欲出了。
保存数据为目的,更是以利用数据为目的。
图1.3巴贝奇差分机
1.1.2电子计算机
在巴贝奇提出分析机设想后近100年的时间里,电子科学与工程技术取得了长足的进展,数学、物理等自然科学领域的成果也为电子计算机的诞生奠定了坚实的基础,而社会的迫切需求最终催生了电子计算机。
1946年2月,ENIAC在宾夕法尼亚大学制作成功,这是世界上公认的第一台电子计算机。
ENIAC完全采用电子线路执行算术运算、逻辑运算和信息存储,其运算速度是当时继电器计算机的1000倍。
ENIAC使用了18000个电子管,占地1800英尺,采用10进制,程序是外挂式的,存储容量太小,每次运行一个新的程序都要重新连接线路,接线的时间甚至远比运行时间长得多。
尽管如此,5000次/秒的运算速度在当时是巨大的成就。
从硬件的角度来划分,电子计算机的发展经历了四个阶段。
1.电子管时代(1946~1959)
1883年,爱迪生在为电灯泡寻找最佳灯丝材料的时候,发现了一个奇怪的现象:
在真空电灯泡内部碳丝附近安装一截铜丝,结果在碳丝和铜板之间产生了微弱的电流。
英国的电器工程师弗莱明博士对这个“爱迪生效应”进行了深入的研究,于1904年研制出真空二极管。
弗莱明的电子管标志着人类开始进入了电子时代,但是电子管成为真正实用的器件,还是在真空三极管发明之后。
1907年,美国人德福雷斯发明了真空三极管,他的这一发明为他赢得“无线电之父”、“电视始祖”和“电子管之父”的称号。
其实,德福雷斯所做的就是在二极管的灯丝和板极之间加了一块栅板。
ENIAC开启了电子计算机时代,它的主要器件就是电子管。
电子管计算机体积大,要产生很多热量,容易损坏。
存储设备最初使用汞延迟线和静电存储器,容量很小。
后来采用磁鼓(磁鼓在读/写臂下旋转,当被访问的存储器单元旋转到读/写臂下时,数据被写入这个单元或从这个单元中读出),有了很大改进。
输入设备是读卡机,可以读取穿孔卡片上的孔,输出设备是穿孔卡片机和行式打印机,速度都很慢。
在50年代末,出现了磁带驱动器(磁带是顺序存储设备,也就是说,必须按线性顺序读取磁带上的数据),它比读卡机快了很多。
1950年,第一台冯.诺依曼结构计算机诞生。
冯.诺依曼提出了由运算器、控制器、存储器和输入输出设备构成的计算机模型,并提出用二进制替代十进制,将数据和指令统一存储的思想,奠定了现代计算机发展的基础。
这个时期的计算机非常昂贵,而且不易操作,只有一些大的机构,如政府和一些主要的银行才买得起,这还不算容纳这些计算机所需要的可控制温度的机房和能够进行计算机编程的技术人员。
图1.4电子管图1.5三极管
2.晶体管时代(1959~1964)
电子管的诸多缺陷使人们急于找到性能更佳的替代品。
1947年,贝尔实验室的肖克莱和巴丁、布拉顿发明了点接触晶体管,两年后肖克莱进一步发明了可以批量生产的结型晶体管(1956年他们三人因为发明晶体管共同获得了诺贝尔奖),1954年德州仪器公司的迪尔发明了制造硅晶体管的方法。
1955年之后,制造晶体管的成本以每年30%的速度下降,到50年代末,这种廉价的器件已经风靡世界,以晶体管为主要器件的计算机也迈入了新的时代。
与电子管计算机相比,晶体管计算机具有体积小、重量轻、发热少、耗电省、速度快、价格低、寿命长等优点,使计算机的结构与性能都发生了很大改变。
存储设备使用麻省理工学院研制的磁芯存储器,稳定而且可靠。
辅助存储设备开始使用磁盘,磁盘上的数据都有位置标识符——称为地址,磁盘的读/写头可以直接被送到磁盘上的特定位置,因而比磁带的存取速度快很多。
这个时期的计算机广泛应用在科学研究、商业和工程应用等领域,典型的计算机有IBM公司生产的IBM7094和CDC(ControlDataCorporation,控制数据公司)生产的CDC1640等。
但是,第二代计算机的输入输出设备很慢,无法与主机的计算速度相匹配。
这个问题在第三代计算机中得到了解决。
3.集成电路时代(1964~1972)
尽管晶体管代替电子管有很多优点,但还是需要使用电线将各个元件逐个连接起来,由于元件数量众多,计算机的重量依然太大。
对于电路设计人员来说,能够用电线连接起来的单个电子元件的数量不能超过一定的限度。
对于手持焊枪和小镊子的工人来说,每天干足8个小时又能连接多少个元件?
何况,焊枪再小也也有个限度。
1958年,最先进的计算机1640就包含25000个晶体管、10万个二极管、成千上万个电阻和电容,其错综复杂的结构使其可靠性大为降低。
1958年,费尔柴尔德半导体公司的诺伊斯和德州仪器公司的基尔比提出了集成电路的构想:
用同一种材料(硅)制造晶体管、二极管、电阻、电容,然后在一层保护性的氧化硅下面把这些元件互相连接起来,这样几千个元件就可以紧密地排列在一小块薄片上。
采用氧化硅绝缘层的平面渗透技术,以及将细小的金属线直接蚀刻在这些薄片表面上的方法,使得用机器完成这些元件的连接成为一件轻松的事情,集成电路得以大规模生产,人类由此进入了微电子时代。
在几个平方毫米的硅片上,刻上几十个甚至上百个微型晶体管,计算机的体积一下减小了许多,计算机开始向小型化发展。
这个时期的内存储器用半导体存储器淘汰了磁芯存储器,使存储容量和存取速度有了大幅度的提高。
输入设备出现了键盘,使用户可以直接访问计算机。
输出设备出现了显示器,可以向用户提供立即响应。
图1.6集成电路图1.7Intel4004芯片
4.超大规模集成电路时代(1972~)
1964年,Intel公司的摩尔提出摩尔定律,预测晶体管集成度将会每18个月翻一番,而实际的情况几乎就是按照这个定律发展的。
1971年,Intel推出1kb动态随机存储器(DRAM),标志着大规模集成电路的诞生。
1978年,64kb动态随机存储器诞生,不足0.5平方厘米的硅片上集成了14万个晶体管,标志着超大规模集成电路(VLSI)时代的来临。
但这段时期最大的成就还是微处理器的诞生。
1969年末的一天,一家生产桌面计算器的日本公司走进了Intel公司的大门,他们要定制11个集成电路,其中部分存储器芯片用来存储数字,其他的电路用来控制电源、键盘、显示器和打印机。
从斯坦福大学过来的霍夫接受了这项任务,他为此想到了一个解决方案:
用一块芯片生产出一个中央处理器,就是把一台计算机的基本电路系统压缩到一块芯片上。
1971年,Intel公司的费德里哥费格金采用新的硅门电路工艺造出了芯片原型,同年年底Intel推出了以4004命名的芯片,这是世界上最早的微处理器之一。
1979年,Intel推出5MHz8088微处理器,IBM基于8088推出全球第一台个人电脑(PC)。
其后计算机的发展历史演变为中央处理器(CPU)的发展历史,确切地说就是CPU的晶体管集成度每18个月翻一番。
4004采用10微米工艺生产,包含2300多个晶体管,时钟频率为108KHz。
2007年,Intel推出首款0.045微米Penryn处理器,其双核心版本集成了4.1亿个晶体管,四核心则有8.2亿个晶体管。
目前,Intel已经成功完成了0.032微米芯片的研发工作,并计划在2009年底开始投产第一批0.032微米的Westmere处理器。
微处理器的发明使计算机在外观、处理能力、价格以及实用性等方面发生了深刻的变化。
20世纪70年代后期出现的微型计算机体积小、重量轻、性能高、功耗低、价格便宜,这使得计算机逐渐走进了办公室,走进了家庭,计算机开始渗透到社会的各个角落。
1.1.3计算机网络
1.远程终端连接
计算机的I/O设备的操作速度总是跟不上CPU的频率,这使得CPU经常处于等待状态。
在计算机出现的早期,计算机还是非常宝贵的资源,这种等待是难以容忍的。
操作系统的分时技术为解决这个问题提供了方法,这就是实行远程终端连接。
一台主机与若干个终端相连,或者说很多个终端连接到一台主机上,共享主机资源。
所谓终端,就是只有显示器和键盘,没有硬盘、内存、CPU。
典型的例子是上世纪五十年代美国的全国机票系统,一台机器与分布在全国各地的2000多个终端相连,最终发展成了一个3万多家旅行社、300万在线客户的网络。
2.ARPAnet
世界上第一个计算机网络是由美国国防部高级研究计划局(ARPA)建立的,称为ARPAnet。
上世纪60年代正是东西方冷战时期,出于防御考虑,美国军方设想建立一个分散的指挥系统:
当其中的某些指挥点被摧毁后,其他点仍能正常工作,并且能绕过那些被摧毁的点而继续保持联系。
为了验证这个设想,于1969年建立了ARPAnet,最初只有4个节点,到1972年网点数达到了40个。
围绕ARPAnet的研究,促成了E-mail和FTP的诞生,二者都是当今Internet的主要应用。
而ARPAnet最大的贡献是TCP/IP,这成了后来构建Internet的基石。
3.以太网
1972年,施乐公司(Xerox)的罗伯特•梅特卡夫(RobertMetcalfe)和他的同事研制出一个实验型网络,实现了几台计算机、激光打印机之间的互联,数据传输率达到2.94Mb/s。
这就是世界上第一个以太网:
比特流通过物理介质(如电缆)传输到各个站点。
1980年,数字设备公司、Intel公司和施乐公司联合发布了第一个以太网协议标准建议书,该建议书的核心思想是在一个10Mb/s的共享物理介质上把最多1024个计算机和其他数字设备进行连接(设备间距最大2.5千米)。
正是在这个建议书的基础上,以太网技术逐渐得以成熟和完善,逐渐占据了局域网的主导地位。
4.Internet
70年代末到80年代初,出现了很多计算机网络,这些网络使用不同的通信协议,这使得网络之间的联系异常困难。
这时候一个叫VintonCerf的美国人提出了一个想法:
在每个网络内部各自使用自己的通讯协议,在和其它网络通信时使用TCP/IP协议。
这个设想导致了Internet的诞生,确立了TCP/IP在网络互联上的核心地位。
80年代中期,美国国家科学基金会(NationalScienceFoundation,NSF)建立了用于科学研究和教育的骨干网络NSFnet,很多大学、政府资助的研究机构,甚至私营的研究机构纷纷把自己的局域网并入NSFnet中,从1986年至1991年,并入Internet的计算机子网从100个增加到3000多个,几乎每年都以百分之百的速度增长。
1990年NSFnet取代ARPAnet成为国家骨干网,并且走出大学和研究机构,进入社会。
1991年,在连通Internet的计算机中,商业用户首次超过了学术界用户,这是Internet发展史上的一个里程碑,正是这种商业化促成了Internet的腾飞。
1993年,WWW(万维网)和浏览器的应用给Internet带来了崭新的面貌,人们在Internet上看到的不只是文字,还有图片、声音和动画,甚至电影。
Internet演变成了一个文字、图像、声音、动画、影片等多种媒体交相辉映的新世界,开始以前所未有的速度席卷世界。
随着计算机技术和通讯技术的发展,Internet获得了巨大的扩张,这种扩张带来的不仅是量的变化,同时也带来了某些质的变化。
Internet的使用者涵盖了世界上几乎所有的行业,使用Internet的目的不再仅仅是为了共享NSF巨型计算机的运算能力,而是为了交流、通信、购物、娱乐、获取信息,等等,在Internet上可以做更多的事情。
1.2计算机软件发展简史
计算机的一大特点就是它能够自我控制、自动完成各种操作,“电脑”就是因此送给它的一个美称。
其实跟其他工具一样,计算机也是需要人来操纵才能工作的,只是对于计算机来说这种操纵与众不同罢了。
计算机能够根据人发出的指令做相关的动作,而且可以先接受一个指令串(指令集),然后逐条执行,这就是程序或软件。
软件的出现始于机械计算机时代,杰卡德的编织机、巴贝奇的计算机都体现了程序的思想。
但是软件真正的发展是在电子计算机时代,尤其是高级语言出现之后。
计算机硬件技术的发展,需要相应的软件支持,才能发挥其应有的性能,这使得软件的发展成为必需而且可能。
1.2.1软件发展的几个阶段
第一阶段,1949——1959年,为大客户定制解决方案。
这个发展过程是由几个大软件项目推进的,这些项目先由美国政府,后来由几家美国大公司认购。
开发于1949年到1962年间的SAGE系统,以及开发于1954年到1964年间的SABRE飞机预订系统,都成了程序员的大学,为第一批独立的美国软件公司提供了重要的学习机会,并使美国在软件业中成了早期的主角。
第二阶段,1959——1969年,软件开发出来重复销售给不同的客户。
为防止XX的软件复制,软件开发商发明了软件专利申请和软件使用许可证协议,这成为今天软件行业的基础。
第三阶段,1969——1981年,IBM宣布为软件与硬件分开定价,宣告免费使用软件的时代结束,促成了软件业的独立和崛起。
越来越多的独立软件公司破土而出,为所有不同规模的企业提供新产品,它们超越了硬件厂商所提供的产品。
最终,客户开始从硬件公司以外的卖主那儿寻找它们的软件来源,并确定为其付钱。
第四阶段,1981——1994年,个人计算机的出现,引发了面向大众的软件市场。
这个时期的代表是IBM和Microsoft,他们分别是硬件和软件的标准。
Microsoft的MSDOS,以及后来的Windows,成为领先的市场标准,为其提供了殷实的收入,强化了其在个人计算机领域的地位。
20世纪80年代,软件业以激动人心的每年20%的增长率发展。
1982年美国公司的年收入增长到100亿美元,1985年则为250亿美元,比1979年的数字高10倍。
第五阶段,1994年以后,Internet和Web为软件业提供了全新的应用和服务机遇。
Web浏览器,电子商务软件,等等,许多企业家抓住了这个机会,并成立新公司以提供这种软件。
这个时期最著名的两个案例是网景浏览器和亚马逊网上书店。
1993年,美国伊利诺州的伊利诺大学的NCSA组织发表了第一个可以显示图片的浏览器,命名为Mosaic。
1994年,这个项目开发的核心人物安德烈森(MarcAndreesen)和SiliconGraphic公司的的创始人克拉克(JamesH.Clark)创立了网景公司,并在16个月后上市,安德烈森藉此一夜成为亿万富翁。
1995年7月,贝佐斯成立了亚马逊网上书店(Amazon)。
这个以世界上流域最广、流量最大的河流命名的“书店”,在十多年后的今天,全球客户已达4000万,在网络上销售的商品已达430万种,营业额已超过10亿美元,公司市值超过300亿美元,跨入全球财富500强之列,成为全球电子商务的一面旗帜。
1.2.2程序设计语言
程序设计语言与操作系统都属于系统软件,是软件开发和运行的基本工具。
程序设计语言经历了机器语言、汇编语言、高级语言三个发展阶段。
最初的程序都是用机器语言编写的,打孔纸带就是用机器语言编写的程序。
纸带上那一行行的有孔或无孔的排列,就是一组组的0、1编码(有孔对应1,无孔对应0),代表着各种数据和指令。
通过特定的转换装置,这些信息就可以转换为对应的电路信号,被计算机接受并执行。
20世纪50年代初期,出现了汇编语言。
用若干个英文字母构成的助记符来表示那些指令,可以帮助工程师更好地去记忆那些指令。
与机器语言相比,汇编语言更容易掌握和使用,但是同机器语言一样,汇编语言也是面向机器的语言,不同的机器有不同的机器指令系统,因而使用的机器语言和汇编语言也因机器而各不相同。
随着编译器技术的发展和成熟,高级语言应运而生。
1951年IBM开始研发高级语言,意在创建一种独立于机器、能在不同的计算机上兼容的语言。
1956年10月IBM推出了FORTRANⅠ,标志着高级语言的诞生。
高级语言类似自然语言,使用数学公式和英文表示,但是因为是在跟机器交流,所以在语法上要遵循严格的规定,毕竟机器是不能像人那样识别模糊表达的。
与机器语言和汇编语言相比,高级语言是面向人类的,容易掌握和使用。
另外高级语言独立于机器系统,用高级语言编写的程序可以在不同的机器上运行,这使得软件开发可以脱离机器进行,由此催生了软件业,催生了诸如微软那样的众多专业软件公司。
高级语言的出现,并没有让机器语言和汇编语言消失。
与高级语言相比,机器语言和汇编语言具有执行效率高、使用灵活等优点,所以在许多特定的地方还在广泛使用。
高级语言有上百种,但流传下来的并不多。
下面是几个有代表性的高级语言。
1.FORTRAN语言
FORTRAN语言的名称来自formula和translator两个词,意思是公式转换器,实际上FORTRAN最广泛的应用领域就是科学与工程计算。
作为最早出现的高级程序设计语言,它对程序设计语言的研究和发展产生了极其深刻的影响。
1951年,IBM公司的JohnBackus从汇编语言的缺点入手,开始研发FORTRAN语言,于1956年正式推出了FORTRANⅠ。
1957年第1个FORTRAN编译器在IBM704计算机上实现,并首次成功运行了FORTRAN程序。
1958年,对FORTRANⅠ进行了扩充和完善,引进子函数等概念,推出了商业化的FORTRANⅡ。
1962年,推出了FORTRANⅣ。
这个时候出现了一个问题:
用FORTRANⅡ编写的程序不能在FORTRANⅣ系统上运行,这个问题称为语言的兼容性问题。
1966年美国标准化协会(简称ANSI)公布了美国国家标准FORTRAN66,解决了语言的兼容性和标准化问题。
1978年4月ANSI公布了FORTRAN77,采用结构化程序设计的理念,同时扩充了字符处理功能,得到了广泛的应用。
1991年5月,ANSI公布了FORTRAN90,采纳了我国计算机和信息处理标准化技术委员会提出的多字节字符集数据类型及相应的内部函数,为非英语国家使用计算机提供了极大的方便。
2.BASIC语言
BASIC语言全称是Beginner’sallPurposeSymbolicInstructionCode,意为“初学者通用符号指令代码”。
1964年,美国达特茅斯学院的JohnKemeny和ThomasKurtz发明了BASIC语言,经过不断丰富和发展,成为一种功能全面的中小型计算机语言。
BASIC易学、易懂、易记、易用,是初学者的入门语言,也可以作为学习其他高级语言的基础,在普及计算机程序设计语言方面发挥了巨大的作用。
3.C语言
C语言是一种功能极强的高级语言,它既有高级语言的特性,又有汇编语言的特点,换句话说,C语言即面向人类,又面向机器。
因而C语言既可以作为一般的高级语言,用来开发各种应用程序,也可以作为系统设计语言,用来开发系统软件,如Unix、Windows,这是其他语言做不到的。
C语言的历史可以追溯到ALGOL60。
1958年美国计算机协会(ACM)和联邦德国的应用数学与力学协会(GAMM),把他们关于演算法的表示法的建议综合为一,形成了ALGOL58。
1960年1月,图灵奖获得者AlanJ.Perlis发表了“演算法语言ALGOL60报告”,推出了程序设计语言ALGOL60。
1963年,英国剑桥大学在ALGOL60基础上推出了CPL(CombinedProgrammingLanguage)语言,这个语言更接近硬件,但因规模大而难以实现。
1967年,剑桥大学的MatinRichards对CPL语言做了简化,推出了BCPL(BaseCombinedProgrammingLangurage)语言。
1970年,贝尔实验室的KenThompson以BCPL语言为基础,又作了进一步的简化,设计出了B语言(取BCPL的第一个字母),并用B语言和汇编语言写出了第一个Unix操作系统。
B语言非常简单,而且很接近硬件,同时功能也很有限。
1973年,贝尔实验室的DennisM.Ritchie为B语言增加了数据类型和结构的支持,推出了C语言(取BCPL的第二个字母)。
C语言即保持了BCPL语言和B语言的优点(精练、接近硬件),又克服了他们的缺点(过于简单,数据无类型等)。
1977年,Ritchie发表了不依赖于具体机器系统的C语言编译文本“可移植的C语言编译程序”,这就是著名的ANSIC。
4.C++语言
上世纪80年代初,贝尔实验室的本贾尼·斯特劳斯特卢普(BjameStroustrup)博士发明并实现了C++(最初这种语言被称作“CwithClasses”)。
一开始C++是作为C语言的增强版出现的,从给C语言增加类开始,不断的增加新特性,因而得名CPlusPlus(CPP)。
C++语言的发展大概可以分为三个阶段。
第一阶段从80年代到1995年。
这一阶段C++语言基本上是传统类型上的面向对象语言,并且凭