|
知识路径: > 嵌入式系统软件基础知识 > 嵌入式系统程序设计 > 嵌入式程序设计语言 > 程序设计语言的分类和特点 >
|
相关知识点:2个
|
|
|
|
程序设计语言的分类没有统一的标准,从不同的角度可以进行不同的划分。从最初的机器语言、汇编语言、结构化程序设计语言发展到目前流行的面向对象语言,程序设计语言的抽象程度越来越高。根据程序设计的方法将程序设计语言大致分为命令式程序设计语言、面向对象的程序设计语言、函数式程序设计语言和逻辑型程序设计语言等范型。
|
|
|
|
命令式程序设计语言是基于动作的语言,在这种语言中,计算被看成是动作的序列。程序就是用语言提供的操作命令书写的一个操作序列。用这类语言编写程序,就是描述解题过程中每一步处理步骤,程序的运行过程就是问题的求解过程,因此也称为过程式语言。FORTRAN、ALGOL、COBOL、C和Pascal等都是命令式程序设计语言。
|
|
|
结构化程序设计语言本质上也属于命令式程序设计语言,其编程的特点如下:
|
|
|
|
|
(3)程序只包含顺序、判定(分支)及循环结构,而且每种结构只允许单入口和单出口。
|
|
|
结构化程序的结构简单清晰、模块化强,描述方式接近人们习惯的推理式思维方式,因此可读性强,在软件重用性、软件维护等方面都有所进步,在大型软件开发中曾发挥过重要的作用。目前仍有许多应用程序的开发采用结构化程序设计技术和方法。C、Pascal等都是典型的结构化程序设计语言。
|
|
|
|
面向对象的程序设计语言始于从模拟领域发展起来的Simula,在该语言中首次提出了对象和类的概念。C++、Java和Smalltalk都是面向对象程序设计语言,封装、继承和多态是面向对象编程的基本特征。
|
|
|
|
函数式语言是一类以λ-演算为基础的语言,其基本概念来自于LISP,这是一个在1958年为了人工智能应用而设计的语言。函数是一种对应规则(映射),它使定义域中每个元素和值域中唯一的元素相对应。例如:
|
|
|
|
函数定义2:Plustwo[x]:=Plusone[Plusone[x]]
|
|
|
函数定义3:fact[n]:=if n=0 then 1 else n*fact[n-1]
|
|
|
在函数定义2中,使用了函数复合,即将一个函数调用嵌套在另一个函数定义中。在函数定义3中,函数被递归定义。由此可见,函数可以看成是一种程序,其输入就是定义中左边括号中的量,它也可将输入组合起来产生一个规则,组合过程中可以使用其他函数或该函数本身。这种用函数和表达式建立程序的方法就是函数式程序设计。函数式程序设计语言的优点之一就是对表达式中出现的任何函数都可以用其他函数来代替,只要这些函数调用产生相同的值。
|
|
|
函数式语言的代表LISP在许多方面与其他语言不同,其中最为显著的是,该语言中的程序和数据的形式是等价的,因此数据结构就可以作为程序执行,程序也可以作为数据修改。在LISP中,大量地使用递归。
|
|
|
|
逻辑型语言是一类以形式逻辑为基础的语言,其代表是建立在关系理论和一阶谓词理论基础上的PROLOG。PROLOG代表Programming in Logic。PROLOG程序是一系列事实、数据对象或事实间的具体关系和规则的集合。通过查询操作把事实和规则输入数据库,用户通过输入查询来执行程序。在PROLOG中,关键操作是模式匹配,通过匹配一组变量与一个预先定义的模式并将该组变量赋给该模式来完成操作。以值集合S和T上的二元关系R为例,R实现后,可以询问:
|
|
|
|
|
|
|
逻辑型程序设计具有与传统的命令式程序设计完全不同的风格。PROLOG数据库中的事实和规则是一些Hore子句。Hore子句的形式为“P:-P1,P2,…,Pn.”,其中n≥0,Pi(1≤i≤n)为形如Ri(…)的断言,Ri是关系名。该子句表示规则:若P1,P2,…,Pn均为真(成立),则P为真。当n=0时,Hore子句变成“P.”,这样的子句称为事实。一旦有了事实与规则后,就可以提出询问。
|
|
|
PROLOG可以表达很强的推理功能,适用于编写自动定理证明、专家系统和自然语言理解等问题的程序。
|
|
|