版权归原作者所有,如有侵权,请联系我们

[科普中国]-唯一程序设计语言

科学百科
原创
科学百科为用户提供权威科普内容,打造知识科普阵地
收藏

程序设计语言的概念

程序设计语言是人与计算机交流的工具。编写程序的过程也称为编程或编码,是根据软件分析和设计模型及要求,编写计算机理解的运行程序的过程。目前,已经有众多的程序设计语言,它们各具特点和适用环境与范围,而其中只有少量的程序设计语言得到广泛应用。因此,选择符合软件特征的程序设计语言是一项重工作。1

程序设计语言的发展(1)第一代语言。是与机器硬件密切相关的机器语言和汇编语言。从电子计算机出现时开始使用,因其与硬件操作相对应.所以其语言种类几乎与计算机种类相同。

(2)第二代语言。主要应用于各种计算,先后出现于20世纪50年代末至20世纪60年代初,包括FORTRAN、COBOL、Pascal和BASIC等。这些语言不仅容易被人们学习和使用,具有大量成熟的程序库.所以应用较为广泛,事实上成为现代或第三代程序设计语言的基础和前身。

(3)第三代语言。第三代语言直接支持结构化构件,并且具有很强的过程能力和数据结构能力,包括结构化语言和面向对象语言,如结构化程序语言有C等,面向对象的语言有C++、Java、Delphi等。它大致分为通用高级语言、面向对象的语言和专用语言。

(4)第四代语言。第四代语言属于超高级程序设计语言,虽然它与其他语言一样用其语法形式表示控制和数据结构,但不再涉及很多算法性细节。它具有如下特征:强大的数据管理能力,可对数据库进行有效的存取、查询和其他相关操作;提供一组高效的、非过程化的命令,组成语言的基本语句;可以满足多功能、一体化的要求。目前,使用最广泛的第四代语言是数据库查询语言SQL,它支持用户以复杂的方式操作数据库。另外,一些决策支持语言、原型语言、形式化规格说明语言,甚至计算机环境中的一些工具也被认为属于第四代语言的范畴。1

程序设计语言的分类程序设计语言种类很多,可从不同的角度对其进行分类。

1)以语言层次可分为面向机器的语言和面向问题的语言。

(1)面向机器的语言。依赖于具体的机器硬件结构,其语句和计算机的硬件操作相对应,包括机器语言和汇编语言。机器语言由二进制的0、1代码指令系统构成,它是计算机唯一可以直接识别和执行的语言。其指令系统因机器而异,不同机器具有不同的机器语言,这类语言难学难记。汇编语言是符号化的机器语言,语句符号与机器指令直接对应,虽然其易读性、易理解性相对机器语言已经有了很大的改善.但依然编写出的程序难读、难维护、易出错、通用性差,因此,一般不应用于上层应用软件开发。面向机器的语言具有可直接访问系统接口、程序运行效率高等优点,可在某些特殊领域或需要的环境中使用。

(2)面向问题的语言。面向问题的语言也称为高级语言,这类语言脱离了具体机器的硬件环境的限制,直接面向所要解决的应用问题。高级语言使用的概念和符号与自然语言比较相近,便于掌握和理解,并具有通用性强、编程效率高、代码可阅读性强、易于修改和维护等特点,因而在现代软件开发过程中被广泛使用。

2)以语言适用性可分为通用语言和专用语言

(1)通用语言。可以面向所有编程问题,不受专业和领域的限制,如BASIC、FORTRAN、ALGOL、C、Pascal等,均属这类语言。

(2)专用语言。专用语言是为了某种特殊应用而设计的具有独特语法形式的语言。它局限于某些特殊的应用领域,应用范围比较窄。如APL—Array Processing Language是为数组和向量运算设计的简洁而功能很强的语言,却几乎不提供结构化的控制结构和数据类型。

3)以语言面向分为面向过程的语言和面向对象的语言。

(1)面向过程的语言。面向过程的语言即传统的结构化程序设计语言,该类语言强调程序设计算法和数据结构,基本思想可概括为程序等于数据结构加上算法,如C语言等。

(2)面向对象的语言。面向对象的语言是目前最为流行的一类高级语言。它引入了现实生活中对象的观念,提供了封装、继承、多态、消息等机制。这类语言有Small Talk、C++、Java和C#等。

4)高级语言的常见分类

(1)从应用特点分,高级语言又可分为通用语言、现代语言和专用语言三类。

①通用语言。它们的特点是出现早、应用广泛。有大量软件库,为最广泛的人所熟悉和接受。属于这类语言的有BASIC、FORTRAN、COBOL和ALGOL等。这些语言创始于20世纪50年代或20世纪60年代,部分性能已老化。

②现代语言。现代语言也称为结构化语言。其特点是直接提供结构化的控制结构,具有很强的过程能力和数据结构能力。ALGOL是最早的结构化语言,同时它又是基础语言,由它派生出来的Pascal、C以及Ada等语言已应用在非常广泛的领域中。

③专用语言。专用语言是指为某种特殊应用而设计的独特语言。

(2)从语言的内在特点分.高级语言还可分为系统实现语言、静态高级语言、块结构高级语言和动态高级语言四类。

①系统实现语言。系统实现语言从汇编语言发展改进而来,可提供控制语句和变量类型检验等功能,但是同时也容许程序员直接对硬件进行操作。C语言就是著名的系统实现语言。

②静态高级语言。可给程序员提供控制语句和变量说明的机制,但是程序员不能直接控制由编译程序生成的机器操作。其特点是静态地分配存储。这种存储分配方法虽方便了编译程序的设计和实现,但对使用这类语言的程序员施加了较多限制。因为这类语言是第一批出现的高级语言.所以使用非常广泛.其中FORTRAN和COBOL仍然在某些领域使用。

③块结构高级语言。其特点是提供有限形式的动态存储分配,存储管理系统支持程序运行,每当进入或退出程序块时。存储管理系统分配存储或释放存储。程序块是程序中界限分明的区域,每当进入一个程序块时就中断程序执行,以便分配存储,如Pascal和ALGOL等。

④动态高级语言。其特点是动态地完成所有存储管理,即执行个别语句可能引起分配存储或释放存储。一般地说,这类语言的结构和静态的或块结构的高级语言的结构不同,实际上这类语言中任何两种语言的结构彼此间很少类似。这类语言一般是为特殊应用而设计的,不属于通用语言。1

常见编程语言常用编程语言具有其各自的特点。

(1)C语言。既具有高级语言的特征,又具有低级语言的功能,被广泛应用于系统软件、嵌入式应用软件。

(2)C++语言。在C语言基础上发展起来的一种面向对象编程,C++提供了类、多态、异常处理、模板、标准类库等。C++既融合了面向对象的能力,又与C语言兼容,保留了C语言的许多重要特性。维护了大量已开发的C库、C工具以及C源程序的完整性。

(3)Objective—C语言。它是在C语言的基础上.加入面向对象特性扩充而成的通用型高级编程语言。主要应用于Mac OS X和iOS系统及其相关API(如Cocoa、Cocoa Touch)的开发,目前主要支持的编译器有GCC与Clang。

(4)Java语言。作为一种面向对象编程,其语法结构与C++类似。Java在虚拟机上运行,通过为不同的平台提供虚拟机,实现了Java跨平台的特性。Java被广泛应用于服务器端程序和移动设备程序中。

(5)C#语言。C#语言是一种完全面向对象的语言,是主要应用在.NET平台上的编程浯言。

(6)PHP语言。PHP为Personal Home Page的缩写,最初只是一套简单的Perl脚

本,用于跟踪访问主页的用户的信息。目前PHP提供了大量用于构建动态网站的功能,成为Web服务器端的程序主流编程语言。

(7)Python。一种交互式的、面向对象、跨平台的解释语言。

(8)VB与VB.NET语言。VB是一种面向对象、可视化的编程语言。用于开发Windows桌面应用程序和Web应用程序。Visual Basic.NET是下一代的Visual Basic,它基于VB并被重新没计以便使更加容易开发基于网络的分布式应用。

(9)JavaScript是一种解释性的脚本语言,功能强大,主要用于实现Web页面客户端功能。1

选择程序设计语言的标准选择程序设计语言的准则选择程序语言主要考虑的因素和准则包括以下几个方面。

(1)适合软件应用领域。应尽量选取适合软件具体处理业务的应用领域的语言。

(2)适合软件运行环境。要选取机器上能运行且具有相应支持软件的语言。

(3)软件开发人员熟悉。主要知识水平以及心理因素包括:开发人员的专业知识,掌握程序设计的能力水平等;开发人员对某种语言或工具的熟悉程度。应特别注意选择语言时,尽量避免受外界的影响,一味追求新语言。

(4)有助于性能实现。主要结合软件T程具体性能要求考虑,如果实时系统对响应速度有特殊要求,就应选择C语言等。

(5)算法和计算复杂性简便。可根据不同语言的特点,选取能够适应软件项目算法和计算复杂性的语言,并尽量简便。

(6)数据结构的复杂性低。要根据不同语言构造数据结构类型的能力选取合适的语言。

优先选取高级语言由于一种程序语言无法满足软件的各种需求,所以在选择与评价时,先查看问题需求,权衡其要求及其重要性,然后有针对性地根据其特性选取程序设计语言。合适的程序设计语言可使编程简便、测试量少、阅读和维护容易。

通常优先选择高级语言,主要是因为高级语言明显优于低级语言。用高级语言编写程序比用汇编语言生产率提高几倍甚至十几倍。高级语言使用的符号和概念更符合人们的习惯。高级语言一般都允许用户给程序变量和子程序赋予含义鲜明的名字。通过名字很容易将程序对象与其所代表的实体进行联系。所以,用高级语言编写的程序更容易阅读、测试、调试和维护。只在以下一些特殊的应用领域才放弃选用:对程序执行时间和使用空间都有很严格限制的情况;需要产生任意的甚至非法的指令序列;体系结构特殊的微处理机,以致在这类机器上通常不能实现高级语言编译程序;执行高级语言编译的程序,执行时间效率非常关键的部分代码。

尽量选取面向对象语言面向对象编程方法是目前主流的且最有发展前景的程序设计方法。选择面向对象语言的关键是语言的一致表达能力、可重用性及可维护性。而且,便于实现面向对象技术。从面向对象的角度看,能够更完整、更准确地表达问题域语义的面向对象语言的语法是非常重要的开发人员在选择面向对象语言时,还应着重考虑以下实际因素。

(1)可重用性。采用面向对象方法开发软件的基本目的和主要优点,是通过重用提高软件生产率,因此,应优先选用能最完整、最准确地表达问题域语义的面向对象语言。

(2)代码重构是软件进化的重要手段。Martin Fowler将重构定义为对软件内部结构的修改,使之更易于理解和修改,但不改变软件的对外可见的行为。需要重构的代码主要包括如下:

①重复代码。重复的代码不仅影响运行速度,而且需要重复修改。

②函数过长。在面向对象的编程中,函数通常不需要超过一屏。如果出现这种情况,可能是因为使用了过程化编程方式。

③循环过长或嵌套过深。最好将过长循环体变成独立函数,可有效降低循环的复杂度。

④类的内聚性差。若发现某类是一些不相关的功能集合,可将此类分解成多个类,每个类包括一个逻辑桐关的功能集合。

⑤方法传递过多参数。通常很好抽象的函数应较简短,不应有过多参数。

(3)类库和开发环境。将语言、开发环境和类库3个因素综合,共同决定可重用性。考虑类库时,不仅应考虑类库的提供,还应考虑类库中提供了哪些有价值的类。在开发环境中,还应提供使用方便的具有强大联想功能的类库编辑工具和浏览工具。

(4)适应发展趋势。未来仍处于主导地位,不会很快被淘汰。

(5)其他因素。具有面向对象分析、设计和编程技术所能提供的培训服务;在使用面向对象语言期间能提供售后服务;能提供给开发人员使用的开发T具、开发平台、发行平台;对机器性能和内存的需求;集成已有软件的容易程度等。1