1 / 28
文档名称:

研究生课程_程序语言设计原理教程_第02章.ppt

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

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

分享

预览

研究生课程_程序语言设计原理教程_第02章.ppt

上传人:3346389411 2013/3/27 文件大小:0 KB

下载得到文件列表

研究生课程_程序语言设计原理教程_第02章.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设计目标
定义一组能表示某种范型的特征集,每个特征有严格定义并可在机器上高效实现,程序员可灵活运用这些特征表达它所希望的任何计算。
模型有力 Model Power
语义清晰 Semantic Clarity
移植性好 Portability
可读性好 Readability
方便 Convenience
简单 Simplicity
高效 Efficiency
灵活性 Flexibility
5
设计准则
频度准则越常用越简单方便、可读
结构一致程序结构和计算的逻辑结构一致
可读、方便
局部性 Locality 只有全局变量Basic
不鼓励全局变量Pascal,C
无全局变量函数式 Java
词法内聚 Lexical Coherence 变量在使用处就近声明(Pascal声明和语句严格分开)
((lambda (x y) (let ((x ) (y (+ a 2)))
(+ (* x y) ((+ (* x y)
(- x y))) (- x y)))
(+ a 2))

.((x*y)+(x-y) (a+2)
6

语法一致性
GO TO (L1, L2, …, Ln), I I={1..n}
GO TO N, (L1, L2, …, Ln)
ASSIGN Li TO N N={L1...Ln}
安全性Security
语言—编译系统自动找出安全漏洞,不能弥补也要支持
安全性→强类型,即每个计算操作运算之前类型必须确定
C 留给程序员过程参数不检查一般不安全
7

正交性和正规性(Orthogonality & Regularity)
正交: 每个语言特征都是独立的, 增减不影响其它
正规: 每一约定或规则无一例外
不正规:数组不能作返回值, 不能赋值
函数不能做参数
不正交→不正规
8

数据隐藏(Data hiddening)
封装,以名字封装内部数据设计者可见使用者不可见
局部性不一定封装,如: Do l0 I=1,10,2
当I=7时 GOTO 20

10 CONTINUE
20 …...
R=I 可以,此时R=
.
.
.
9

抽象表达
抽取因子、递归表达、高层模块名、
常量名=常量表达式(易于维护)
先抽象再修饰具体(如同自然语言)
static const int maxlndex=MAX_LENGTH_1
COS(X)
可移植性力图不依赖环境
预定义机制、预处理程序
10