登陆注册
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等。尽管计算机很聪明,但是它只懂机器语言,不能直接识别高级语言,用高级语言编写的程序必须“翻译”成机器语言程序之后才能被机器接受,在计算机上运行。这样一来,使用高级语言就会使计算机损失大量的时间,但是这是我们有时不得不付出的代价。事实上,各种语言是内行人提供给外行人使用计算机的一种便利工具。这些内行人越高明,所花的劳动越多,计算机的语言智能就越高,外行人使用起来就越方便、省事。

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

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

同类推荐
  • 中国3D打印的未来

    中国3D打印的未来

    自2012年以来,有关3D打印的报道屡见报端,这一新型制造技术引起了全世界的广泛关注。《中国3D打印的未来》作者、中国3D打印技术产业联盟秘书长罗军认为,中国从20世纪90年代初开始涉足3D打印技术,并取得了巨大进展,但与国外同行相比仍存在一定差距。特别是中国3D打印企业普遍存在“小而散”、各自为政的现象,如何发挥整合优势、抱团发展是目前亟需解决的问题。如果能够加强同行合作,抱团发展,形成合力,相信3D打印会成为唯一一项中国有可能赶超世界先进水平的技术。
  • 高校校园网管理与网上引导工作研究

    高校校园网管理与网上引导工作研究

    在当今的信息化潮流之下,我们不可否认互联网的出现,绝不仅仅是传送手段的变化,更重要的是它代表着一种新的社会形态——网络社会的来临。互联网已经以一种前所未有的方式渗透到现代社会的各个层面和领域,成为现代社会前进和发展的动力和工具,它推动了社会经济、文化政治实现所谓的“数字化转变”。
  • 组建家庭局域网与无线网

    组建家庭局域网与无线网

    该书是“快乐驿站”丛书之一,是一本精心为初级家庭电脑用户打造的局域网与无线网组建入门与提高的图书,同时还涉及一些办公网络的组建内容。《组建家庭局域网与无线网》以局域网和无线网的功能、设置以及实际应用为导向,用生动的实例、形象的图解和幽默的语言循序渐进地介绍了局域网和无线网的概念、产品、设计、组建、调试与维护的相关内容。
  • EDA技术

    EDA技术

    根据课堂教学和实验操作的要求,以提高实际工程设计能力为目的,深入浅出地对EDA技术相关知识作了系统和完整的介绍,相关知识作了系统和完整的介绍。
  • 创业在微软

    创业在微软

    身处软件巨擘微软之中,何来“创业”二字?本书详尽勾勒了微软亚洲工程院(ATC)的成长历程,披露了工程院人在“创业”过程中不为人知的种种酸甜苦辣,生动展现了工程院的独特文化,并从另一个角度展现了其领袖人物张宏江博士的心路历程和管理思想。
热门推荐
  • 卑微的我与高傲的她

    卑微的我与高傲的她

    男主是一个转学生,因为一次意外与女主相遇。并产生爱意,但男主不善于表达一直暗恋着女主。
  • 层层之上

    层层之上

    在宇宙中有一万种可能,比如……一个分层的世界……
  • 荡世欺天

    荡世欺天

    穿越年年有,今年到我家……可为什么别人能穿个富家公子永享富贵或是杀神证道长生永存……管穿越你给解释一下穿越成一只狗是几个意思?打个商量再穿一次呗……
  • 电竞职业经理人

    电竞职业经理人

    黄浦江旁煮酒论英雄,楚云临危受命,他接到的第一个任务是:不要保持世界纪录了!群:774644490
  • 王妃慢点吃

    王妃慢点吃

    现代食品专业女研究生陆甜甜立志游遍祖国大好河山,吃遍天下美食,却因通宵写论文疲劳过度磕在电脑上,穿越到一个架空时代天凤朝丞相府陆家的女儿,年仅十三岁的陆翎身上。对着满桌的清蒸和炖汤类,爱吃川菜的陆甜甜……抓狂了……
  • 天行

    天行

    号称“北辰骑神”的天才玩家以自创的“牧马冲锋流”战术击败了国服第一弓手北冥雪,被誉为天纵战榜第一骑士的他,却受到小人排挤,最终离开了效力已久的银狐俱乐部。是沉沦,还是再次崛起?恰逢其时,月恒集团第四款游戏“天行”正式上线,虚拟世界再起风云!
  • 流年咖啡馆

    流年咖啡馆

    -关于流年的情报-最后一条店规:身为普通人的你,在十一点后,可千万不要进入本店。否则,后果自负。捉摸不定的开店时间:从来不在正常时间点开门。神秘的店长:明明只是学生,却经营着装潢如此华丽的咖啡馆。奇怪的咖啡馆:最繁华街道上的最不起眼的店面,有着与其店面不符的超大内部空间。极棒的味道:虽然不仅仅出售普通咖啡馆应有的饮品和甜点,也有酒类——但味道都是极好的。店长的行为:问他有关咖啡馆的事情时,总是会将食指竖在唇前,浅笑,道“这是‘流年’的秘密。”-“欢迎来到!流年咖啡馆!”-
  • 天行

    天行

    号称“北辰骑神”的天才玩家以自创的“牧马冲锋流”战术击败了国服第一弓手北冥雪,被誉为天纵战榜第一骑士的他,却受到小人排挤,最终离开了效力已久的银狐俱乐部。是沉沦,还是再次崛起?恰逢其时,月恒集团第四款游戏“天行”正式上线,虚拟世界再起风云!
  • 豪门高校

    豪门高校

    这是一座拥有帝国各豪门世家一手创办的学校,其中南氏,宫氏,顾氏,是学校的顶级投资人。
  • 天行

    天行

    号称“北辰骑神”的天才玩家以自创的“牧马冲锋流”战术击败了国服第一弓手北冥雪,被誉为天纵战榜第一骑士的他,却受到小人排挤,最终离开了效力已久的银狐俱乐部。是沉沦,还是再次崛起?恰逢其时,月恒集团第四款游戏“天行”正式上线,虚拟世界再起风云!