6.1.1 程序设计语言
程序设计语言是软件开发人员在编码阶段所使用的基本工具,程序设计语言所具有的特性不可避免地会影响编程者处理问题的方式和方法。为了能够编写出高效率、高质量的程序,根据具体问题和实际情况选择合适的程序设计语言是编码阶段中一项非常重要的工作。
一、程序设计语言的分类
随着计算机技术的发展,目前已经出现了数百种程序设计语言,但被广泛应用的只有几十种。由于不同种类的语言适用于不同的问题域和系统环境,因此了解程序设计语言的分类可以帮助我们选择出合适的语言。通常可将程序设计语言分为面向机器语言和高级语言两大类。
1.面向机器语言
面向机器语言包括机器语言(Machine Language)和汇编语言(Assemble Language)两种。
机器语言是计算机系统可以直接识别的程序设计语言。机器语言程序中的每一条语句实际上就是一条二进制形式的指令代码,由操作码和操作数两部分组成。由于机器语言难以记忆和使用,通常不用机器语言编写程序。汇编语言是一种符号语言,它采用了一定的助记符来替代机器语言中的指令和数据。汇编语言程序必须通过汇编系统翻译成机器语言程序,才能在计算机上运行。汇编语言与计算机硬件密切相关,其指令系统因机器型号的不同而不同。由于汇编语言生产效率低且可维护性差,所以目前软件开发中很少使用汇编语言。
但面向机器语言易于实现系统接口,运行效率高。一般在设计应用软件时,应当优先选择高级程序设计语言,只有下列三种情况选用面向机器语言进行编码:
①软件系统对程序执行时间和使用空间都有严格限制。
②系统硬件是特殊的微处理机,不能使用高级程序设计语言。
③大型系统中某一部分,由于其执行时间非常关键,或直接依赖于硬件,因此这部分用面向机器语言编写。其余部分用高级程序设计语言编写。
2.高级语言
高级语言中的语句标识符与人类的自然语言(英文)较为接近,并且采用了人们十分熟悉的十进制数据表示形式,利于学习和掌握。高级语言的抽象级别较高,不依赖于实现它的计算机硬件,且编码效率较高,往往一条高级语言的语句对应着若干条机器语言或汇编语言的指令。高级语言程序需要经过编译或解释之后,才能生成可在计算机上执行的机器语言程序。
高级语言按其应用特点的不同,可分为通用语言和专用语言两大类。
(1)通用语言。通用语言是指可用于解决各类问题、可广泛应用于各个领域的程序设计语言。从较早出现的基础语言BASIC、FORTRAN等,到后来出现的结构化语言Pascal、C等,再到现在被广泛使用的面向对象语言C++、Ja-va等都属于通用语言的范畴。
(2)专用语言。专用语言是为了解决某类特殊领域的问题而专门设计的具有独特语法形式的程序设计语言。如,专用于解决数组和向量计算问题的API语言;专用于开发编译程序和操作系统程序的BLISS语言;专用于处理人工智能领域问题的LISP语言和PROLOG语言等。这些语言的共同特点是可高效地解决本领域的各种问题,但难以应用于其他领域。
二、程序设计语言的选择
程序设计语言的选择将影响人们思考问题、解决问题的方式,影响软件的可靠性、可读性和可维护性。因此,选择一种适当的程序设计语言进行编码非常重要。在开发软件系统时,必须确定使用什么样的程序设计语言来实现这个系统。恰当的程序设计语言对成功实现从软件设计到编码的转换,提高软件质量,改善软件的可测试性和可维护性是极为重要的。为某个特定开发项目选择程序设计语言时,可以按照以下标准对程序语言进行比较选择,尽量同时兼顾理想标准和实用标准。
1.理想标准
(1)理想的模块化机制是易于阅读和使用的控制结构及数据结构。模块化、良好的控制结构和数据结构可以降低编码工作的难度,增强程序的可理解性,提高程序的可测试性和可维护性,从而减少软件生存周期中的总成本,并缩短软件开发所需的时间。
(2)完善、独立的编译机制。完善的编译系统可尽可能多地发现程序中的错误,便于程序的调试和提高软件的可靠性,并且可以使生成的目标代码紧凑、高效;独立的编译机制便于程序的开发、调试和维护,可以降低软件开发和维护的成本。
2.实用标准
(1)软件的应用领域。从应用领域角度考虑,各种语言都具有各自的特点和适合自己的应用领域。如,在事务处理方面COBOL和BASIC有较大优势;科学工程计算领域由于需要大量的标准库函数,来处理复杂的数值计算,所以常选择的语言有FORTRAN、Pascal、C等;在信息管理、数据库操作方面,可以选用COBOL、SQL、FoxPro、Oracle、Access或Delphi等语言;在系统软件开发方面,C语言占优势,汇编语言也常被使用;在实时系统中或很特殊的复杂算法、代码优化要求高的领域,可选用汇编语言、Ada语言或C语言;在网络编程应用中,选择Java语言较为合适;在人工智能领域,如知识库系统、专家系统、决策支持系统、推理工程、语言识别、模式识别、机器人视角、自然语言处理等,应选择PROLOG、LISP语言。只有充分考虑软件的应用领域,并熟悉当前使用较为流行的语言的特点和功能,程序员才能更好地发挥语言各自的功能优势,选择出最有利的语言工具。
(2)系统用户的要求。由于用户是软件的使用者,因此软件开发者应充分考虑用户对开发工具的要求,特别是当用户要负责软件的维护工作时,用户理所应当地会要求采用他们熟悉的语言进行编程。
(3)工程的规模。语言系统的选择与工程的规模有直接的关系。例如,FoxPro与Oracle及Sybase都是数据库处理系统,但FoxPro仅适用于解决小型数据库问题,而Oracle和Sybase则可用于解决大型数据库问题。特别是在工程的规模非常庞大,并且现有的语言都不能完全适用时,为了提高开发的效率和质量,就可以考虑为这个工程设计一种专用的程序设计语言。
(4)软件的运行环境。软件在提交给用户后,将在用户的机器上运行,在选择语言时应充分考虑到用户运行软件的环境对语言的约束。此外,在运行目标系统的环境中可以提供的编译程序往往也限制了可以选用的语言的范围。
(5)可以得到的软件开发工具。由于开发经费的制约,往往使开发人员无法任意选择、购买合适的正版开发系统软件。此外,若能选用具有支持该语言程序开发的软件工具的程序设计语言,则将有利于目标系统的实现和验证。
(6)软件开发人员的知识。软件开发人员采用自己熟悉的语言进行开发,可以充分运用积累的经验使开发的目标程序具有更高的质量和运行效率,并可以大大缩短编码阶段的时间。为了能够根据具体问题选择更合适的语言,软件开发人员应拓宽自己的知识面,多掌握几种程序设计语言。
(7)软件的可移植性要求。要使开发出的软件能适应于不同的软、硬件环境,应选择具有较好通用性的、标准化程度高的语言。
在实际选择语言时,往往任何一种语言都无法同时满足项目的所有需求和各种选择的标准,这时就需要编程者对各种需求和标准进行权衡,分清主次,在所有可用的语言中选取最合适的一种进行编程。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。