程序设计语言
1.程序设计语言的基本概念
低级语言:汇编语言。
高级语言:Java、C、C++、Python等。
翻译形式:汇编、解释、编译。
定义:语法、语义、语用。
分类:
过程式(命令式和结构化):C、Pascal等等。
面向对象:Java、C++、Smalltalk、Python等等。
函数式:lisp、scala等等。
逻辑型:Prolog等。
脚本语言:shell、bat、js、python等等。
2.程序设计语言的基本成分
程序语言的基本成分包括数据、运算、控制和函数等。
数据:常量和变量;全局量和局部量;数据类型。
运算:算术式运算;关系运算;逻辑运算。
控制:顺序结构;选择结构;循环结构。
函数:定义、声明、调用(值调用,引用调用)。
3.汇编程序的基本原理
3.1、汇编语言
汇编语言是为特定的计算机或计算机系统设计的面向机器的符号化的程序设计语言。用汇编语言编写的程序称为汇编语言源程序。因为计算机不能直接识别和运行符号语言程序。所以要用专门的翻译程序——汇编程序进行翻译。
汇编语言源程序由若干条语句组成,一个程序中可以有三类语句:指令语句、伪指令语句和宏指令语句。
3.2、汇编程序
汇编程序是指将汇编语言所编写的源程序翻译成机器指令的程序。汇编程序一般需要两次扫描源程序才能完成翻译过程。
第一次扫描:检查语法错误,确定符号名字;建立使用的全部符号名字表;每一符号名字后跟一个值(地址或数值)。
第二次扫描:在第一次扫描的基础上,将符号地址换成真地址(代真);利用操作码表将助记符转换成相应的目标码。
4.编译程序的基本原理
4.1、编译程序
编译程序的工作过程分为六个阶段,如下图:
4.2、文法
G={Vt,Vn,S,P}
Vt是一个非空有限集合,它的每个元素称为终结符号;
Vn也是一个非空有限集合,它的每个元素称为非终结符号;
S称为文法G的开始符号;
P是一个非空有限集合,它的元素称为产生式。
1型文法:又称为上下文有关文法。
2型文法:又称为上下文无关文法。
3型文法:又称为正规文法,使用最多。
0型文法:又叫短语文法。
4.3、有限自动机
计算机控制系统的控制程序具有有限状态自动机(FA)的特征,可以用有限状态机理论来描述。
确定有限自动机(DFA)。自动机的每个状态都有对字母表中所有的符号的转移。一个确定的有限自动机是个五元组(S,∑,f,s0,Z),其中:
S是一个有限集,其每一个元素称为一个状态。
∑是一个有穷字母表,其每一个元素称为一个输入字符。
f是一个S*∑→S上的单值部分映像。f(A,a)=Q表示当前状态为A,输入a时,将转换到下一状态Q,Q被称为A的一个后继状态。
s0∈S,是唯一的一个开始状态。
Z是非空的终止状态集合,Z⊆S。
一个DFA可以用两种直观的方式表示:状态转换图和状态转换矩阵。状态转换图简称为转换图,是一个有向图。DFA中的每个状态对应转换图中的一个结点,DFA中的每个转换函数对应图中的一条有向弧,若转换函数为f(A,a)=Q,则该有向弧从结点A出发,进入结点Q,字符a是弧上的标记。
4.4、非确定有限自动机
非确定有限自动机(NFA)。自动机的状态对字母表中的每个符号可以有转移,也可以没有转移,对一个符号甚至可以有多个转移。一个不确定的有限自动机也是一个五元组,它与确定有限机的区别如下。
f是S*∑→2S上的映像。对于S中的一个给定状态及输入符号,返回一个状态的集合,即当前状态的后继状态不一定是唯一确定的。
有向弧上的标记可以是ε。
4.5、正规表达式
对于字母表∑,其上的正规式及其表示的正规集可以递归定义如下。
(1)ε是一个正规式,它表示集合L(ε)={ε}。
(2)若是a是∑上的字符,则a是一个正规式,它所表示的正规集为{a}。
(3)若是正规式r和s分别表示正规集L(s)和L(s),则:
r|s是正规式,表示集合L(r)∪L(s)。
r●s是正规式,表示集合L(r)L(s)
r*是正规式,表示集合(L(r))*。
(r)是正规式,也表示L(r)。
仅由有限次地使用上述三个步骤定义的表达式才是∑上的正规式,其中运算符“|”、“●”、“*”分别称为“或”“连接”和“闭包”。正规式的书写中,连接运算符“●”可以省略。
运算符的优先级从高到低的顺序排列为“*”、“●”、“|”。
正规式和正规集的运算:
正规式和正规集运算的性质:
4.6、正规式与有限自动机之间的转换
5.解释程序基本原理
解释程序是另一种语言处理程序,在词法、语法和语义分析方面与编译程序的工作原理基本相同,但是在运行用户程序时,它直接执行源程序或源程序的中间代码。
因此,它和编译程序的主要区别是:解释程序不产生源程序的目标程序。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现