结构推理 程序语言有哪些共同特征?
【正确答案】语言的心理特征对通信质量有主要的影响,语言的工程特性对软件开发的成功与否有重要的影响。此外,语言的技术特性也会影响软件设计的质量。
   (1)心理特性。语言的心理特性指影响程序员心理的语言性能。程序的实现最终要靠人来实现,因此人的因素对程序的实现质量会产生很大的影响。而程序语言的心理特点,主要是表现在编码实现时对人的影响,包括对程序代码的理解等。它在语言中的表现有以下几个方面:
   ①歧义性。程序设计语言通常是无二义性的,编译程序总是根据语法,按一种固定方法来解释语句,但有些语法规则容易使人用不同的方式来解释语言,这就产生了心理上的二义性。
   ②简洁性。这是指人们必须记住的语言成分的数量。人们要掌握一种语言,就要记住语句的种类、各种数据类型、运算符、内部函数和内部过程,这些成分越多,简洁性越差,人们越难以掌握。但太过简洁也不好,有的语言(如APL)为了简洁,提供形式简明的运算符,允许用最少的代码去实现很多的算术和逻辑运算。但这会使程序难以理解,一致性差。所以既要简洁又要易读易理解。
   ③局部性和顺序性。局部性是人的记忆的联想方式的表现。在编码过程中,由语句组合成模块,由模块组装成系统结构,并在组装过程中实现模块的高内聚、低耦合,使局部性得到加强,如果提供异常处理的语言特性,则会削弱局部性。若在程序中多采用顺序序列,则使人易理解;如果程序中存在大量分支或循环,则不利于人们的理解。
   ④传统性。人们习惯于已掌握的语种,而传统性容易影响人们学习新语种的积极性,若新语种的结构、形式与原来的类似,还容易接受,若风格根本不同,则难以接受。
   (2)工程特性。从软件工程的观点,程序设计语言的特性着重考虑软件开发项目的需要,因此对程序编码有如下要求:
   ①可移植性。它指程序从一个计算机环境移植到另一个计算机环境的容易程度。
   ②开发工具的可利用性。有效的软件开发工具可以缩短编码时间,改进源代码的质量。目前,许多编程语言都嵌入到了一套完整的软件开发环境里。
   ③软件的可重用性。编程语言能否提供可重用性的软件成分。
   ④可维护性。源程序的可读性、语言的文档化特性对软件的可维护性具有重大的影响。
   (3)技术特性。语言的技术特性对软件工程各阶段有一定的影响,特别是确定了软件需求之后,程序设计语言的特性就显得非常重要了,要根据项目的特性选择相应特性的语言,有的要求提供复杂的数据结构,有的要求实时处理能力强,有的要求能方便地进行数 据库的操作。软件设计阶段的设计质量一般与语言的技术特性关系不大(面向对象设计例外),但将软件设计转化为程序代码时,转化的质量往往受语言性能的影响,可能会影响到设计方法。如:Ada、Smalltalk、C++等支持抽象类型的概念,Pascal、C等允许用户自定义数据类型,并提供链表和其他数据结构的类型。这些语言特性为设计者进行概要设计和详细设计提供了相当大的方便。在有些情况下,仅在语言具有某种特性时,设计需求才能满足。如果想实现彼此通信和协调的并发的分布式处理,应使用并发Pascal、Ada、Modula2等语言。
   语言的特性对软件的测试与维护也有一定的影响,支持结构化构造的语言有利于减少程序环路的复杂性,使程序易测试、易维护。
【答案解析】