本章导图:
2.1 程序设计语言概述
2.1.1 程序设计语言的基本概念
1 低级语言与高级语言
低级语言:机器语言、汇编语言
高级语言:面向各类应用的程序设计语言,如Java,C,C++,PHP,Python,Delphi,PASCAL等
2 编译程序和解释程序
“语言处理程序”的翻译方式有:汇编、解释和编译。
3 程序设计语言的定义
语法、语义、语用
❤❤补充
源程序错误类型
词法错误:非法字符,拼写错关键字、标识符
语法错误:语法结构,如少分号,begin/end不配对等
语义错误:
静态语义:类型不一致,参数不匹配(编译错误)
动态语义:如死循环,除数为0(逻辑错误)
4、程序设计语言的分类
- Fortran语言(第一个高级程序设计语言,科学计算,执行效率高)
- Pascal语言(结构化程序设计语言,表达能力强,Delphi)
- C语言(通用、结构化程序设计语言,指针操作能力强,高效)
- Lisp语言(函数式程序语言,符号处理,人工智能)
- C++语言(C语言基础上增加了类机制,面向对象,高效,与C兼容)
- Java语言(面向对象,中间代码,跨平台,通用的程序设计语言)
- Python(面向对象,解释型程序设计语言,胶水语言,通用的脚本语言)
- PHP(服务器端脚本语言,制作动态网页)
- Ruby(简单快捷、面向对象、脚本语言)
- Delphi(快速应用程序开发工具,可视化编程环境)
- COBOL(数据处理领域最为广泛的程序设计语言,高级编程语言)
- XML(可扩展标记语言,标准通用标记语言的子集)
- PROLOG(逻辑式语言,间接性,表达能力强,建造专家系统、数据库、自然语言理解、智能知识库等)
注:C/C++常被用于操作系统开发;脚本语言是解释性语言。
2.1.2 程序设计语言的基本成分
这部分主要靠平时积累,知识点很少。
1 程序设计语言的数据成分
(1)常量和变量
(2)全局量和局部量
(3)数据类型
2 程序设计语言的运算成分
算术运算、关系运算和逻辑运算等
逻辑与:两数都为1,则结果1,否则0。
逻辑或:两数中一个为1,结果1,否则0。
逻辑异或:两数不同,结果1,否则0。
&&:都为真时为真,其余为假,
||:都为假时为假,其余为真,
!:表否定
算术左移,就是在原有的基础上*2
算术右移,就是在原有的基础上/2
3 程序设计语言的控制成分
顺序
选择
循环
4 程序设计语言的传输部分
传输方式:如赋值、数据输入和输出等。
5 函数
定义
声明
调用❤❤❤
(1)值调用
形参取的是实参的值,形参的改变不会导致调用点所传的实参的值发生改变
(2)引用调用
形参取的是实参的地址,即相当于实参存储单元的地址引用,因此其值的改变同时就改变了实参的值
2.2 语言处理程序基础
2.2.1 汇编程序基本原理
1 汇编语言
组成:指令语句、伪指令语句、宏指令语句。
2 汇编程序
2.2.2 编译程序基本原理
1 编译过程概述 ❤
- 符号表
符号表的作用是记录源程序中各个符号的必要信息,以辅助语义的正确性检查和代码生成,在编译过程中需要对符号表进行快速有效地查找、插入、修改和删除等操作。符号表的存在可以贯穿编译所有阶段。 - 错误管理
静态错误:编译时所发现的程序错误,分为语法错误和静态语义错误。
语法错误包含:单词拼写错误、标点符号错误、表达式中缺少操作数、括号不匹配等有关语言结构上的错误。
静态语义分析:运算符与运算对象类型不合法等错误。
动态错误:发生程序运行时,也叫动态语义错误。包括死循环、变量取零时做除数、引用数组元素下标越界等错误。
2 文法和语言的形式描述
一般的程序设计语言属于上下文无关文法。
(1)字母表、字符串、字符串集合以及运算
(2)文法和语言的形式描述
3 词法分析
词法规则使用正规文法,表示的语言集合是正规集,正规集的规律可以用正规式表示。
4 正规式与有限自动机的转换
正规式:❤❤
有限自动机:❤❤
这个部分文字描述太麻烦了……我们多做几次题就明白了
5 词法分析器的构造
6 语法分析
自下而上:递归下降分析法、预测分析法
自底而上:移进-规约分析法
7 语法制导翻译和中间代码生成❤❤
中间代码是一种简单且明确的记号系统,与具体的机器无关。常见的有逆波兰记号(后缀式)、四元式、三元式。
8 中间代码优化和目标代码生成
树与后缀式形式适用于解释器,编译器多采用四元式格式。
2.2.3 解释程序基本原理
1 解释程序的基本构成
2 高级语言编译和解释方式的比较❤❤❤❤
- 编译方式下【生成中间代码】机器上运行的是与源程序等价的目标程序,源程序和编译程序都不再参与目标程序的执行过程,因此执行时效率较高;
- 解释方式下解释程序和源程序(或某种等价表示)要参与到程序的运行过程中,边解释边执行,执行效率较低。
即:解释方式,翻译程序不生成独立的目标程序,而编译方式则生成独立保持的目标程序。