登陆注册
46351000000012

第12章 计算机软件(1)

在日常工作和生活中,人们可以通过写各种各样的文章(书信、通知、报告等)向他人传递信息或通过语言取得别人的合作与帮助。同样地,我们要让计算机帮助我们做工作,通常也要向它输入一篇篇的“文章”,这种“文章”是用计算机的语言来写的,叫做程序。程序是为了完成某一个任务而编制的一系列指令,所谓计算机能够“自动地”完成某些工作,实际上是计算机按照人们事先给它输入进去的程序,连续地完成一个个基本操作,从而得到预期的结果。在计算机操作的过程中,它可以不要人的干预完成指定的工作。

出了什么毛病

1981年4月12日,美国航天飞机“哥伦比亚”号载着两名宇航员,从佛罗里达州卡纳维拉尔角被固体燃料助推火箭送上了空间轨道,经过54.5个小时的飞行绕地球36周后于4月14日安全着陆,航天飞机首航成功。然而,在很长一个时期内,为世人所不知的是,“哥伦比亚”号航天飞机的首航日期,本来应该是在这之前的另一个日子。

那一天,也是在卡纳维拉尔角的肯尼迪航天中心,也是那两位宇航员,他们已经安然地坐在“哥伦比亚”号航天飞机的驾驶舱中。在湛蓝的天空中,依稀可见点点晨星在闪烁。不到20分钟,他们将作为航天飞机的首批乘客飞向太空了。发射已经进入了倒计时,计数器正闪着荧光向零接近。

突然,警灯发出了刺眼的红光,计数器也停止了记数,航天控制中心顿时紧张起来。技术人员们很快查出原因,原来是控制中心的计算机系统出了毛病,而且毛病不是出在硬件系统上,而是出在软件上。

技术人员们立即意识到,他们面临的是一个严重的问题。控制航天飞机的计算机程序包括近50万条指令,要从中查出错误,无异于在一本厚厚的百科全书中查找一个拼错了的单词,在短时间内是无法排除软件故障的,这样一个经过长时间精心准备的航天计划不得不延期执行。

其实在美国的航天记录里,类似的事故以前就发生过多次。1965—1970年,美国范登堡基地发射火箭多次失败,控制系统故障是失败的主要原因,而控制系统的故障又主要是由应用程序的错误造成的,有时程序中一点点小错误就可以造成灾难性的后果。有一次美国发射了一枚火箭,火箭升至距离地面几十英里的高空就开始翻滚,地面控制中心不得不下令炸毁了这枚价值近2000万美元的火箭。事后查找事故的原因,发现这竟然是由控制程序中漏掉了一个连字符引起的。美国空军的一个运行了8年之久的应用软件,在经过了多次修改之后仍然检查出60条隐患,其中有27条可能酿成灾难性后果。

严格地说,计算机软件系统发生这些不可容忍的错误,也很难完全归罪于那些经过严格训练和审查的程序编写人员。IBM360系列计算机是一个成功的范例,它被誉为第三代计算机的杰出代表,IBM公司在这个系列的系统软件上投入了大量的财力和人力,研制费用花了2.5亿美元,在4年期间平均每年投入研制人员1000余人,编制出的指令达500万行。由于规模太大,可靠性很差,IBM公司不得不成立专门小组,负责查找和修改系统软件中的错误,并要求计算机用户解释反映运行中发现的问题。尽管采取了这些严密的措施,也不断地发行了修改软件的新版本,错误仍然无法杜绝,软件中的错误总保持在1000条左右,这反映了软件可靠性不高是一个相当普遍的严重问题。

计算机软件与硬件不匹配,始终是计算机发展进程中的一个突出的矛盾,这个矛盾成为推动计算机科学技术进步的一个内在动力。

早期的“冯·诺依曼机”,即“存储程序计算机”,设计算法和编写程序一般都由一个人进行,工作十分繁冗,加上不同型号的计算机指令代码也不一样,因此,程序没有通用性,不能进行交流。在这种情况下,虽然电子计算机把人们从繁冗、复杂、重复的数值计算中解放出来,却又把人们的智力禁闭到繁冗、复杂、重复的程序编制之中。计算机软件的这种生产方式,可以称为“个体手工业方式”。

个体手工业方式的程序编制是一件专业性很强的工作,专业性很强的原因就是那时人们对计算机发指令使用的是一种很原始的语言,即机器语言。对于一般人(包括非专业从事程序编制工作的数学家)来说,要读懂一条由0和1两个数码组合成的机器指令,其难度不亚于凭借词典和语法书来译读自己看不懂的外语文献。

计算机语言

如果说我们学习语文是为了提高读写文章的能力,那么,学习计算机语言则是为了提高读写程序的能力。

电子计算机的语言分为三大类:机器语言、符号语言(汇编语言)、高级语言。

机器语言是用二进制数0和1的不同排列来传递信息,这是电子计算机唯一能够直接接受的语言。这种语言程序虽然难编、难读、难记、难改,但是却能够充分发挥计算机的作用。

计算机语言是人与计算机“对话”的工具,懂得的人太少了,这限制了计算机的应用范围。20世纪50年代初,出现了汇编语言和汇编程序,汇编语言是用符号化的代码代替二进制码。汇编语言比机器语言容易掌握,它的出现为程序编制由个体手工业方式过渡到作坊手工业方式——形成专职的程序员工作班子创造了良好的环境。对初学者和一般使用计算机的人来说,他们可以不必学习机器语言和符号语言。

从历史上看,汇编语言是一种过渡性的计算机语言。它的优点是用人们比较容易理解的符号来代替机器语言所用的数字代码,这种语言具有直观性,但是它也与机器语言一样,与计算机的型号有关,计算机的型号不一样,所用的语言也不一样,同样一个问题,用这一种计算机上的汇编语言(或机器语言)编写的程序,拿到另外一种计算机上就不能够使用,还得重新编写。就是说汇编语言和机器语言都是“地方方言”,不是“普通话”,操作起来显得非常不便。

1954年,出现了第一种计算机的“高级语言”,即FORTRANⅠ,它是由美国IBM公司发布的。1966年,由美国标准局发布了标准FORTRANⅡ和标准FORTRANⅣ。

计算机高级语言比较接近人的自然语言,它大量采用人们习惯的英语字母和数字符号,比较直观、易编、易读,而且通用性强,因此,具有易于学习和掌握的特点,便于普及。同时,计算机高级语言不是面对具体的机器进行“对话”的“地方方言”,而是由人们面对所要解决的问题,用高级语言编写“发言稿”——控制程序,然后把“发言稿”交给计算机,通过计算机内事先存储的“编译程序”或“解释程序”,把用高级语言写成的“发言稿”翻译成计算机的操作指令,所以用高级语言编写的程序基本上可以在不同的计算机上通用,也就是说,计算机高级语言相当于计算机领域的一种“普通话”。

自20世纪50年代后期以来,计算机高级语言层出不穷,至今已经发表了不下400种高级语言,其中通用的也有近百种。目前使用得最广泛的,除了FORTRAN语言以外,还有ALGOL语言,它是欧美计算机科学家为了制定一个通用的标准语言,而在1958年召开的一次联合会议上提出来的。两年以后再次开会,发布了经过修订的ALGOL60,还有COBOL语言,这是一种面向商业的通用语言,BASIC则是一种适合于初学者的会话式高级语言等。各种高级语言异彩纷呈,有的在数值计算方面独占鳌头,有的在数据处理方面独领风骚,有的成为人工智能研究的常备工具,有的成为初学者的良师益友。这种状况也说明,高级语言虽然是计算机领域的“普通话”,但是标准和规范还远远没有统一。

计算机高级语言的形成和发展,扩大了人与计算机“对话”的渠道,使计算机的使用从狭小的专家范围普及到广大的工程技术人员、管理人员和中小学生之中。现在,对一般人来说,要学会使用电子计算机,关键不在于对电子计算机的原理、结构有多么深入的了解,只要能够比较熟练地掌握几种计算机的高级语言,并且正确地运用高级语言编写程序,大体上就有可能成为计算机的主人了。这有一点像使用电话的情况,现在几乎老老少少都会打电话,但是未必都了解电话的原理和内部结构,不过如果不懂得拨号——向电话发出指令的方法,那么电话机对他来说就是一位“陌生的朋友”了。计算机高级语言的出现为一般人轻松愉快地跨入计算机领域铺平了道路,极大地促进了计算机的发展和普及。它对计算机发展起到的作用,不亚于晶体管和集成电路对计算机发展起到的作用,因此它被人们称为“惊人的成就”。

计算机的翻译官

人们借助计算机语言与计算机沟通,其中的“高级语言”应用最广,这种语言不受机器的制约,它面向应用问题,接近人们的使用习惯,当然高级语言与自然语言还是有很大区别的。到目前为止,计算机使用的高级语言已经相当多,早期在DOS操作系统下常用的有BASIC、FORTRAN、PASCAL、COBOL、C等几种高级语言;现在在Windows操作系统下,高级语言进一步发展成为面向对象的高级语言,如VisualBASIC、VisualC等。尽管计算机很聪明,但是它只懂机器语言,不能直接识别高级语言,用高级语言编写的程序必须“翻译”成机器语言程序之后才能被机器接受,在计算机上运行。这样一来,使用高级语言就会使计算机损失大量的时间,但是这是我们有时不得不付出的代价。事实上,各种语言是内行人提供给外行人使用计算机的一种便利工具。这些内行人越高明,所花的劳动越多,计算机的语言智能就越高,外行人使用起来就越方便、省事。

扮演翻译角色的也是一种程序,叫做翻译程序。它的任务是把源语言程序改造成为目标语言程序。如果源语言程序是高级语言,而目标语言是低级语言——汇编语言或是机器语言,那么这样的翻译程序就称为编译程序。

计算机要执行一个高级语言程序一般分两步走,第一步把高级语言的源程序编译成低级语言的目标程序;第二步是运行目标程序。

同类推荐
  • 办公软件高级应用

    办公软件高级应用

    日新月异的信息技术使计算机的应用渗透到各行各业,融入到我们的工作、学习和生活中,特别是在办公领域中运用计算机技术,可以实现办公自动化,成倍地提高工作效率。在众多的办公软件中,微软公司的Office系列软件是办公自动化软件中的佼佼者,其强大的功能深受全世界广大用户的青睐。根据当前业界的需求以及办公软件的实际应用范围,本书针对Office2003系列产品,深入讲解其高级应用知识和操作技能。
  • 智能计算方法概论

    智能计算方法概论

    本书以智能计算领域的若干前沿技术为主线,内容包括数字水印技术在版权保护区和身份认证中的应用,量子算法在信号处理、图像处理中的应用,量子数据挖掘技术,小波方法在医学图像处理中的应用等。
  • Delphi程序设计教程

    Delphi程序设计教程

    本书为适应不同层次读者的需要,从Delphi的基本知识讲起,由浅入深,全面讲述了Delphi的集成开发环境、Delphi的编程语言——ObjectPascal、常用组件的使用、窗体的设计、菜单的设计、对话框的设计、多文档界面程序的设计、多媒体编程和数据库应用程序设计等内容。
  • 网络广告经纪人

    网络广告经纪人

    本书为网络广告经纪人培训认证的指定教材,该认证是商务部中国商务广告协会和信息产业部中国电子商会联合推出的,旨在为国家造就和培养出一大批网络广告梯队型人才。该教材包括网络广告经纪人的介绍和发展趋势,以及网络广告的原理、策划、设计、制作、发布与交换、效果评估、管理,以及网络广告营销的国内外最新的成功案例,还提供了一些常用的网络广告制作工具。本教材适合助理网络广告经纪人和网络广告经纪人层次使用。也可作为高校广告、电子商务等专业的教材。
  • 不懂PowerPoint就当不好经理

    不懂PowerPoint就当不好经理

    经理人如何用PowerPoint,来规划部门的发展,如何用PowerPoint来表达自己的经营主张?本书为各类经理人提供了从入门到提高,从原理到实战的一系列知识,相信本书将让演示文稿为经理人的管理效能加分!
热门推荐
  • 念念不舍勿相忘

    念念不舍勿相忘

    用史铁生的话说就是:我什么也没忘,但是有些事情只适合收藏
  • 夏薇

    夏薇

    囚禁在孤独星球五年的夏家庶女,原以为逃离了禁锢的牢笼,却不知一个早已布好的阴谋结网袭来。与生俱来的神级精神力,诡异的操纵力,还有渐渐苏醒的过去。是谁?她真实的自己,究竟是谁?寻找前世的她,在星际和过去中游走。就让世人恨她,忌她,信她,爱她。她毫不在意。他们称她,夏薇。版本二:我已经忘了我是谁。我游走在星际,穿越在过去。我醒来,当世界需要救赎。我沉眠,当世界一片清明。世人爱我,恨我,崇拜我,忌惮我。便是这样,我再也不想爱谁。他们称我,夏薇。
  • 青春纪语

    青春纪语

    青春的年少轻狂与少女心事记于此。当我拿起笔开始写文的那刻,我就没想过放弃。我开始写故事,关于青春的故事。青春——暗恋幻想疼痛坚持没心没肺……我开始将这些写成一个个微小说,以此祭奠我的青春。PS这里的故事大多是微小说,偶有中篇或中长篇。以为艾寻X还是学生,学业也比较重,所以可能更的不会很频繁,请见谅。
  • 一支黑玫瑰

    一支黑玫瑰

    一位乡村女子奋斗到女国土局长,膨胀的野心与物欲,终将她送上命运的不归之路。拆迁、国有土地规划、房地产开发以及国土资源管理部门与房地产开发商之间鲜为人知的权钱色交易内幕……读来跌汤起伏、惊心动魄。
  • 穿越之异世英雄联盟

    穿越之异世英雄联盟

    杨夜无意中穿越到了英雄联盟的世界,自己却是赵信的小兵。于是他在军营里磨练了一段时间后,脱离军营开辟自己的英雄之路了。
  • 丑颜惑君:丑女丑丑

    丑颜惑君:丑女丑丑

    相府千金痕丑丑,人如其名,丑丑本想过着平静安宁的生活,岂料世事无常,她招惹了不该招惹的人,她的心不再平静了,朋友的利用、背叛,爱人的怀疑、伤害,她决定离开,可谁知道,她的身世竟然是——
  • 忆清雪

    忆清雪

    若今生无缘,又怎会在冥冥中遇见。弱水三千,只为你如花笑颜。一朝变迁,追忆往昔,方大梦初醒,而你却早已不见。若有来生,我定执子之手永不放,陪你到地老天荒……
  • 孝经注疏

    孝经注疏

    本书为公版书,为不受著作权法限制的作家、艺术家及其它人士发布的作品,供广大读者阅读交流。
  • 奇零酒馆

    奇零酒馆

    千年古物,波云诡谲。拨开历史的迷雾,寻找迷离的真相……
  • 警事鬼言

    警事鬼言

    一片碎玉,一个警察,一段历史,一个未知的世界。一切似乎随缘而至,又仿若命中注定,在桩桩看似不起眼的案件另一头,等着他的终究还是命运的回归。