程序设计语言

程序设计语言

定义

一般地,程序设计语言的定义都涉及语法、语义和语用等方面。

语法是指由程序设计语言的基本符号组成程序中的各个语法成分(包括程序)的一组规则。其中由基本字符构成的符号(单词)书写规则称为词法规则,由符号构成语法成分的规则称为语法规则。

语义是程序设计语言中按语法规则构成的各个语法成分的含义,分为静态语义和动态语义。静态语义是指编译时可以确定的语法成分的含义,而运行时刻才能确定的含义是动态语义。

一个程序的执行效果说明了该程序的语义,它取决于构成程序的各个组成部分的语义。

语用表示了构成语言的各个记号和使用者的关系,设计符合的来源、使用和影响。

分类

(1) 低级语言 面向机器,用机器直接提供的地址码、操作码语义概念编程。机器语言和汇编语言,宏汇编虽然抽象层次逐渐提高仍属低级语言的汇编语言(如8086汇编,68000汇编)。

(2)高级语言 独立于机器,用语言提供的语义概念和支持的范型编程。如命令式(Pascal,C,Ada)、函数式(LISP,ML)、逻辑式(Prolog)、关系式(SQL)、对象式(Smalltalk,C++)。

(3) 中级语言 可以编程操纵机器的硬件特征但不涉及地址码和操作码。如字位运算,取地址,设中断,开辟空间、无用单元收回,用寄存器加速等。高级汇编,C,FORTH属此列。

高级编程语言介绍

    (1) 基础语言

基础语言也称通用语言。它历史悠久,流传很广,有大量的已开发的软件库,拥有众多的用户, 为人们所熟悉和接受。 属于这类语言的有 FORTRAN、COBOL、BASIC、ALGOL等。FORTRAN 语言是目前国际上广为流行、也是使用得最早的一种高级语言,从 20 世纪90 年代起,在工程与科学计算中一直占有重要地位,备受科技人员的欢迎。BASIC 语言是在 20 世纪 60 年代初为适应分时系统而研制的一种交互式语言,可用于一般的数值计算与事务处理。BASIC 语言结构简单,易学易用,并且具有交互能力,成为许多初学者学习程序设计的入门语言。
  (2) 结构化语言
  20 世纪 70 年代以来,结构化程序设计和软件工程的思想日益为人们所接受和欣赏。在它们的影响下,先后出现了一些很有影响的结构化语言,这些结构化语言直接支持结构化的控制结构,具有很强的过程结构和数据结构能力。PASCAL、C、Ada 语言就是它们的突出代表。
  PASCAL 语言是第一个系统地体现结构化程序设计概念的现代高级语言,软件开发的最初目标是把它作为结构化程序设计的教学工具。由于它模块清晰、控制结构完备、有丰富的数据类型和数据结构、语言表达能力强、移植容易,不仅被国内外许多高等院校定为教学语言,而且在科学计算、数据处理及系统软件开发中都有较广泛的应用。
  C 语言功能丰富,表达能力强,有丰富的运算符和数据类型,使用灵活方便,应用面广,移植能力强,编译质量高,目标程序效率高,具有高级语言的优点。同时,C 语言还具有低级语言的许多特点,如允许直接访问物理地址,能进行位操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作等。用 C 语言编译程序产生的目标程序,其质量可以与汇编语言产生的目标程序相媲美,具有“可移植的汇编语言”的美称,成为编写应用软件、操作系统和编译程序的重要语言之一。
  (3) 专用语言
  是为某种特殊应用而专门设计的语言,通常具有特殊的语法形式。一般来说,这种语言的应用范围狭窄,移植性和可维护性不如结构化程序设计语言。随着时间的发展,被使用的专业语言已有数百种,应用比较广泛的有 APL 语言、Forth 语言、LISP 语言。

并行程序设计

数据并行模型
数据并行(Data-Parallel)模型主要任务是局部计算和数据选路操作,通常应用于细粒度问题的求解[27]。该模型在SIMD计算机与SPMD计算机上均可以实现,这取决于粒度的大小。

数据并行具有以下特点:

1)单线程:从程序员角度看,这类程序具有单一控制线,即只有一个进程在执行;

2)并行操作于聚合数据结构上:一个单步语句,可以同时作用在不同数组元素的多个操作上;

3)松散同步:在每条语句之后,都有一个隐含的同步;

4)全局命名空间:数据并行程序中所有变量都存储于单一地址空间内,因而只要满足变量的作用域规则,任何语句可以访问任何变量;

5)隐式相互作用:由于每条语句之后隐式同步的存在,所以数据并行程序中不需要显示同步语句,通信也可以隐式完成;

6)隐式数据分配:数据可以自动分配,而不需要程序员干预。

消息传递模型
消息传递(Message Passing)模型中,不同处理器节点上的进程需要通过网络发送消息来实现通信。这里的消息包括数据、指令以及信号等。相比于数据并行模型,消息传递模型更加灵活,不仅可以在共享存储式多处理机上运行,也可以在分布存储式多处理机上运行[28],而且更加适合与开发粒度比较大的并行程序。

消息传递模型有以下特点:

1)多进程:在消息传递模型中,程序包含多个进程,而且各进程拥有独立的控制线,可以执行不同的程序代码,可以实现控制并行以及数据并行;

2)异步并行性:在此模型中,各进程异步执行,因此需要用户显示同步各个进程;

3)分开的地址空间:各个进程存于不同的地址空间内,每个进程的变量对于其他进程是不可访问的;

4)显示相互作用:各进程只能在其所拥有的数据上进行计算,通信、同步等相互作用问题需要程序员显示解决;

5)显示分配:数据和负载需要程序员显示分配给各个进程。

目前,消息传递模型已经成为MPP和COW的主要编程方式,标准库PMV和MPI的使用也增强了这种模型的可移植性。其中,MPI(Message Passing Interface)于1994年5月由美国国家实验室和几所大学共同开发成功,它实际上是一种消息传递函数库的标准,由于在开发过程中吸取了许多其它消息传递系统的优点,MPI目前已经成为最主流的并行编程环境之一。MPI具有以下优点:易用性和可移植性;异步通信功能完备;定义精确且详细。

在基于MPI的编程模型中,各进程通过调用库函数发送、接收消息,共同组成计算过程。通常,在程序初始化时就会生成一组固定的进程,一般一个处理器生成一个进程,这些进程所运行的程序可以相同也可以不同,在进程间的通信也可以是点对点通信或者是群组通信。MPI编程实际上就是计算与通信交织的过程。

共享存储模型
在共享存储模型中,各进程可以通过访问公共存储器中的共享变量而实现通信。和数据并行相比,相同点在于拥有全局命名空间;和消息传递模型相比,相同点在于多线程和异步。这种编程模式具有可编程性强和系统可用性高的优点,因而在科学和工程计算中被广泛应用。

OpenMP标准是共享存储体系结构上的一种编程模型,具有简单、移植性好以及可扩展等优点,目前已经成为共享存储系统编程的工业标准。OpenMP本质上来说,是对基本语言的扩展,其规范中定义了制导指令、运行库和环境变量,从而能够保证程序的可移植性,并且根据标准将程序并行化。其中,制导指令对程序语言进行了扩展,从而可以支持并行区域、工作共享以及同步构造,实现数据共享和私有化。而运行库和环境变量则支持用户对程序执行环境的调整。目前,已经有很多软件和硬件厂商支持OpenMP,可以应用于UNIX、Windows NT等多种平台,C、C++、Fortran等语言也都指定了相应的实现规范。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值