前言
本文是本人在软考复习阶段的写的只有重点摘要的笔记(纯属个人观点),相信大家在网上已经看到很多有详细介绍的关于程序设计语言基础的文章,所以大部分我只是提出,没有详细解释,只是为了更好复习。^ O ^
一、程序设计语言
1.1编译程序和解释程序
程序设计语言基本概念
人与机器交换信息的语言
编译与解释的共同点
都是高级程序语言,且都有词法分析、语法分析、语义分析的过程
编译与解释的不同点
编译型语言 | 解释型语言 | |
---|---|---|
翻译程序 | 编译器 | 解释器 |
转换过程 | 一次性转换成目标代码 | 不会生成目标代码 |
执行方式 | 目标代码直接执行 | 逐行翻译,立即执行 |
执行效率 | 高 | 低 |
灵活性 | 差 | 好 |
可移植性 | 差 | 强 |
1.2常见设计语言的特点
程序语言 | 特点 |
---|---|
C语言 | 语法简洁,可移植性高,高效 |
C++语言 | 面向对象,高性能,支持扩展性 |
Java语言 | 面向对象,可跨平台 |
python语言 | 面向对象,解释型,代码简洁 |
C#语言 | 面向对象,.Net |
Ruby语言 | 面向对象,可移植性高 |
PHP语言 | 脚本语言,语法混合了C、Java、Perl的特点 |
Fortran语言 | 科学计算,执行高效 |
Lisp语言 | 函数式,常用于人工智能 |
1.3程序设计语言的基本成分
数据类型(C/C++)
- 数字数据类型:int、double、float
- 布尔类型:bool
- 字符类型:char
- 枚举类型:enum
- 指针类型:typy
程序控制结构
- 顺序结构
- 选择结构
- 循环结构
二、语言处理程序基础
2.1编译过程概述
编译过程
- 源程序
- 词法分析
- 语法分析
- 语义分析
- 中间代码生成
- 代码优化
- 目标代码生成
- 目标程序
词法分析
将输入的源程序字符流转换为单词(Token)序列,这些单词是构成源代码的最小单位,如关键字、标识符、常数、运算符等
语法分析
根据语言的语法规则对词法分析器输出的单词序列进行结构分析,识别出各类语法成分(如表达式、语句、函数等),并检查语法错误
语义分析
对结构上正确的源程序进行上下文有关性质的审查,以检查源程序是否含有语义错误
2.2正规式与正规集
- 正规式是一种用于描述正则语言的表达式,它是由字母表中的字符、特定的操作符和空字符串组成的表达式。
- 正规集是由正规式描述的一类字符串的集合。它是正则语言的一种表达方式,由正规式生成.
2.3有限自动机
有限自动机由一个有限的内部状态集和一组控制规则组成,这些规则用于控制在当前状态下读入输入符号后应转向什么状态。具体来说,一个有限自动机M通常由五元组(X,Y,S,δ,λ)给定:
- X:非空有限集,称为输入集,包含所有可能的输入符号。
- Y:非空有限集,称为输出集,包含所有可能的输出符号。
- S:非空有限集,称为状态集,包含自动机所有可能的状态。
- δ:笛卡儿积集合S×X到S的映射,称为下一状态函数或转换函数。根据δ的性质,有限自动机可以分为确定型(DFA)和非确定型(NFA)。
- λ:S×X到Y的单值映射,称为输出函数,用于确定在给定状态和输入下的输出。
有限自动机能够识别的串:从初态出发可以到达终态且停留在终态
确定的有限自动机:当一个状态面对一个输入符号的时候,所转换到的是一个唯一确定的状态
不确定的有限自动机:当一个状态面对一个输入符号的时候,所转换到的可能不止一个状态,可以是一个状态集合
2.4表达式
前缀表达式:+ab
中缀表达式:a+b
后缀表达式:ab+