8. 程序设计语言和处理语言
在这一章中,我们可以看到如下的知识
其中重要的点有 正规式, 表达式, 传值和传址
接下来也主要讲下这些信息
- 编译和解释
这是由于一般的开发语言由解释性和编译型两种组成的
其中解释型的语言是动态的,在运行的时候直接解释语法运行,
编译型的则需要将源代码转换为运行代码之后才能运行
这里我们着重说下编译型这类代码
编译型的语言经常需要进行如下的流程方可执行
我们首先将源代码输入
首先进行词法分析,主要是针对代码中包含的词是否有不合规的进行检查
然后是语法分析,是针对代码是否符合语法规则进行检查
最后是语义分析,检查代码是否有死锁或者死循环这类不合规的语义
之后是中间代码的生成,可选项
然后是代码优化,最后目标代码的生成
- 文法
关于文法我们也简单的带过即可
一般来说文法是一个四元组,其中包含
直接看道例题
可以如此推导
- 自动机
对于自动机,其概念如上,
就比如下面这张图
其次是正规式,描述如下
这个概念很难解释,我们直接看下例题
对于一个选项,我们需要来代入进去一个个的球
比如 从S开始,可以换成a b
如果到了a,那么就可以到b,并可以选择是否回到S
那么就可以 ababab
依次带入进去可以看出只有D不符合
其次是第二个空正规式
对于A是可以选择a或者b 多次,可以
B是可以选择 ab多次
C是可以 选择ab或者ba多次
D是 ab多次接着ba多次
对于自动机,表现形式还可以如下
这个也是依次带入
0000则无法达到C
1111也无法达到C
0101 可以到达
1010 不行
- 表达式
分为了前缀表达式,中缀表达式,后缀表达式
比如一个树
前缀就是 +ab 中缀是 a+b, 后缀是 ab+
这里看下例题
我们需要先构建一个对应的树
首先是 a-b和c+5 最后是两者相乘,构建的树也如下
那么后缀转换下就是 ab- c5+ *
- 传值和传址
两者的区别可以如下图形容
这种是传值,得到的结果是 4 3 3 4
这种是传址,得到的结果是4 3 4 3
最后是简单说下不同程序语言的特点
其特点为
Fortran科学计算
Pascal 为教学而生
C 语言高效
Lisp 适合人工智能
C++ 高效 面向对象
Java 也是面向对象 中间代码
C# 和Java 一样
Prolog 主要体现逻辑推理