1 / 61
文档名称:

【精品】PPT课件 第二章 程序设计语言设计概述.ppt

格式:ppt   页数:61
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

【精品】PPT课件 第二章 程序设计语言设计概述.ppt

上传人:wz_198614 2014/12/8 文件大小:0 KB

下载得到文件列表

【精品】PPT课件 第二章 程序设计语言设计概述.ppt

文档介绍

文档介绍:第二章程序设计语言设计概述
表示与抽象
设计目标
设计准则
规格说明
1
表示与抽象
表示是人为制造的符号组合以表达我们需要表达的意思。
程序是程序设计语言表示的计算
float n; //n 是浮点数变量
sqrt(n) ; //对n取平方根
同一程序的高级语言表示、经翻译后的汇编码表示、机器码表示就是该程序在不同抽象层次上的表示。
2
表示与抽象
程序在不同抽象层次表示的关系
例:x = x + 1在机器码上就有两种方法。
从内存代表x的地址中取出
值放在运算器中。
加1,将结果放于某临时单元。
将临时单元内容做类型检查(必要时转换)并放入x中。
从内存代表x的地址中取出
值放在运算器中。
加1,将结果放入x地址中。
3
表示与抽象
儿子10岁女儿8岁母亲35岁
几年后儿女岁数之和大于等于母亲?
u=m-s-d
每人每年增1岁每增
一年比较一次,满足
条件即所求。
read(m,s,d);
u=m-s-d;
print(u)
read(m,s,d);
u=0;
while(m+u>s+d+2u)
u++;
print(u);
m
s
d
u
指令集
客观世界
问题抽象
模型世界
数学模型
模拟模型
程序世界
以程序世界术语
表示描述模型
机器世界
以机器的术语
实现程序
图2-1 计算机解题的四个世界
4
PL设计目标
定义一组能表示某种范型的特征集,每个特征有严格定义并可在机器上高效实现,程序员可灵活运用这些特征表达它所希望的任何计算。
5
语言设计:目标演化
第6页
Fortran 设计中最主要的考虑是易用性(与机器和汇编语言比较)和高效实现,特别关注程序能翻译成高效执行的代码,因为这样才可能被接受(今天Fortran 仍高效) 。
随着计算机变得越来越快,越来越便宜,效率问题虽然还是很重要,但重要性已大大下降。易用性方面的考虑仍非常明显:
提高程序设计工作的效率
帮助人们提高程序(软件)的质量,可靠性
设法支持某些高级的软件设计技术
语言最主要作用是用于描述所需要的计算过程。为此需要:
清晰,简洁的形式(例子:C,Pascal,APL )
清晰简单的语义(易理解,易验证)
正交性(避免重复的可相互替代的特征,人们对此有些不同意见)
可读性(人容易阅读理解的东西,计算机也容易处理)
6
语言设计:目标演化
第7页
随着程序设计语言的发展,语言的设计目标也发生了很大变化
语言的初始设计目标就是更方便地为计算机写程序
后来人们认识到,程序设计语言也是人的工具,用于描述算法、交流算法,用于服务于交流、教学和科研的需要
随着计算机应用发展,程序变得越来越复杂,开发程序变成代价高昂的工作。为支持复杂程序开发,提高开发工作的效率,语言设计有了许多新目标:
支持对基本语言的扩充,提供各种扩充定义和抽象机制,过程、函数定义机制,扩充语言的基本操作,数据类型定义机制(及OO机制),扩充数据描述方式和功能。
例:C++ 在语言机制扩充方面有许多考虑(如运算符重载)
可扩充语言(Extendable Languages),允许程序形式的改变(Lisp)
7
语言设计:目标演化
第8页
2. 提供支持复杂程序所需的高级组织的机制,支持大型程序开发模块机制(信息隔离和屏蔽),支持分别编译的机制,支持程序的物理组织
3. 支持软件重用,包括软件中的部分的重用,支持通用的基本程序库。Pascal 失败之处之一就是忽略了库的开发。C/Fortran 都做得很好。Ada、C++ 和Java 的设计都特别考虑了对库的支持。许多新语言定义了功能非常丰富的标准程序库。
支持库开发:库是最基本的重用方式。是否支持库开发,决定了语言能否大范围使用。支持用户和第三方供应商开发各种扩充的和专用的库
支持某些层次或者方式的软件部件概念
问题:库开发或者部件是否需要本语言之外的功能?
OO 概念可能在上面许多方面起作用,因此成为复杂软件开发的重要方法
8
语言设计:目标演化
第9页
语言设计中需要考虑的另外一些重要问题:
正常处理的异常/错误处理的良好集成(在产品软件的程序里,处理错误和各种特殊情况的代码占很大的比例,可能达70%)
对于程序的易修改可维护性的支持
对于并发程序设计的支持,用什么样的机制支持并发程序设计。这方面的问题将长期成为语言研究和设计的热点问题
安全性设计:是否有助于程序员写出安全可靠的程序?这一问题在未来许多年都会是语言设计的一个重要关注点
由于语言承载的功能越来越多,设计时需考虑的问题越来越多,新语言正在变得越来越复杂,语言的实现需要做的