国防科技大学 编译原理 第2讲 高级程序设计语言概述
课程主页:
https://www.icourse163.org/course/NUDT-1003101005?tid=1460976445
这次回顾第2讲:高级程序设计语言概述。
第2讲 高级程序设计语言概述
常用的高级程序设计语言
| 语言 | 特点 | 
|---|---|
| FORTRAN | 数值计算 | 
| COBOL | 事务处理 | 
| PASCAL | 结构化程序设计 | 
| LISP | 函数式程序设计 | 
| PROLOG | 逻辑程序设计 | 
| C | 系统程序设计 | 
| Smalltalk | 面向对象程序设计 | 
| Java | Internet应用,可移植性 | 
| Python | 解释型 | 
高级程序设计语言的优点
- 相对机器语言或汇编语言,高级程序设计语言- 更接近于数学语言和工程语言,更直观、自然和易于理解
- 更容易验证其正确性、改错
- 编写程序的效率更高
- 更容易移植
 
程序设计语言的定义
程序设计语言的定义包括以下几个方面
- 语法
- 语义
- 语用
这里只讨论前两者。
语法
- 程序本质上是一组字符集上的字符串 
- 语法:一组规则,用它可以形成和产生一个合式(well-formed)的程序 
- 词法规则:单词符号的形成规则 - 单词符号是语言中具有独立意义的最基本结构
- 一般包括:常数、标识符、基本字、算符、界符等
- 描述工具:有限自动机
 
- 语法规则:语法单位的形成规则 - 语法单位通常包括:表达式、语句、分程序、过程、函数、程序等; 
- 描述工具:上下文无关文法 
- 语法例子,表示算数表达式: 
 
- 语法规则和词法规则定义了程序的形式结构 
- 定义语法单位的意义属于语义问题 
语义
- 语义- 一组规则,用它可以定义一个程序的意义
 
- 描述方法- 自然语言描述- 二义性、隐藏错误和不完整性
 
- 形式描述(从略)- 操作语义
- 指称语义
- 代数语义
 
 
- 自然语言描述
程序语言的基本功能和层次结构
- 程序,本质上说是描述一定数据的处理过程
- 程序语言的基本功能- 描述数据和对数据的运算
 
- 层次结构
高级程序设计语言的一般特性
高级语言的分类
- 强制式语言(Imperative Languge)/过程式语言- 命令驱动,面向语句
- FORTRAN、C、Pascal,Ada
 
- 应用式语言(Applicative Language)- 注重程序所表示的功能,而不是一个语句接一个语句地执行
- LISP、ML
 
- 基于规则的语言(Rule-based Language)- 检查一定的条件,当它满足值,则执行适当的动作
- Prolog
 
- 面向对象语言(Object-Oriented Language)- 封装、继承和多态性
- Smalltalk,C++,Java
 
程序结构
这部分介绍了FORTRA,PASCAL,JAVA的程序结构,细节从略。
数据结构与操作
- 数据类型通常包括三要素- 用于区别这种类型数据对象的属性
- 这种类型的数据对象可以具有的值
- 可以作用于这种类型的数据对象的操作
 
标识符与名字
- 标识符- 以字母开头的,由字母数字组成的字符串
 
- 名字- 标识程序中的对象
 
这里老师举了一个很形象的例子:

Jordan这个单词只是个标识符,绑定之后可以指运动员乔丹或者国家约旦。
名字
- 名字的意义和属性- 值:单元中的内容
- 属性:类型和作用域
 
- 名字的说明方式- 由说明语句来明确规定- int score
 
- 隐含说明- FORTRAN 以I,J,K,…N为首的名字代表整型,否则为实型
 
- 动态确定- 走到哪里,是什么,算什么
 
 
- 由说明语句来明确规定
标识符
- 标识符- 以字母开头的,由字母数字组成的字符串
 
- 标识符与名字两者有本质区别- 标识符是语法概念
- 名字有确切的意义和属性
 
数据结构
这部分简介了基本的数据结构,这里只回顾一个不太熟悉的概念、
- 内情向量- 登记维数,各维的上、下限,首地址,以及数组(元素)的类型等信息
 
 
语句与控制结构
- 表达式 - 表达式由运算量(也称操作数,即数据引用或函数调用)和算符(运算符,操作符)组成 
- 形式:中缀、前缀、后缀 
 
- 表达式形成规则 - 变量(包括下标变量)、常数是表达式。- 若$\mathrm E_1,\mathrm E_2$为表达式,$θ$是一个二元算符,则$\mathrm E_1 θ\mathrm E_2$是表达式。
- 若$\mathrm E$是表达式,$θ$为一元算符,则$θ\mathrm E$(或$\mathrm Eθ$)是表达式。
- 若$\mathrm E$是表达式,则$(\mathrm E)$是表达式。
 
 
- 变量(包括下标变量)、常数是表达式。
算符的优先次序
- 一般的规定- PASCAL:左结合A+B+C=(A+B)+C
- FORTRAN:对于满足左、右结合的算符可任取一种,如A+B+C就可以处理成(A+B)+C,也可以处理成A+(B+C)
 
- 注意两点- 代数性质能引用到什么程度视具体的语言而定
- 在数学上成立的代数性质在计算机上未必完全成立- A + B = B + A
 
 
语句
- 赋值语句 - A := B
- 名字的左值:该名字代表的存储单元的地址
- 名字的右值:该名字代表的存贮单元的内容
 
- 控制语句 - 无条件转移语句 - goto L
- 条件语句 - if B then S if B then S1 else S2
- 循环语句 - while B do S repeat S until B for i:=E1 step E2 until E3 do S
- 过程调用语句 - call P(X1, X2, ... ,Xn)
- 返回语句 - return (E)
 
语句的分类
- 按功能分类 - 执行语句:描述程序的动作
- 说明语句:定义各种不同数据类型的变量或运算,定义名字的性质
 
- 形式 - 简单句:不包含其他语句成分的基本句 - A = B + C ; goto 105 ;
- 复合句:句中有句的语句 - while (i >= 0) { j = i * 10; i++; }
 
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Doraemonzzz!
 评论
ValineLivere