当前课程知识点:编译原理 >  第1章 编译原理概述 >  1.1 什么是编译原理 >  什么是编译原理

返回《编译原理》慕课在线视频课程列表

什么是编译原理在线视频

下一节:什么是编译程序

返回《编译原理》慕课在线视频列表

什么是编译原理课程教案、知识点、字幕

同学们

欢迎进入编译原理课堂

语言是人与人之间传递信息的媒体和手段

在计算机领域

程序设计语言充当了人与计算机之间的通信工具

自从计算机诞生以来

先后出现了许多程序设计语言

我们可以把语言划分为这么几类

机器语言 汇编语言 高级程序设计语言

机器语言是机器能直接识别的程序语言或指令代码

每一条指令

可以说都是用规定格式的0 1串来表示

在计算机内部都有相应的电路来完成它

不需要翻译

就可被机器直接理解

不同的计算机

它们都有各自的机器语言

也就是指令系统

机器语言是由0或1组成的机器指令

可读性非常差

不便于人们进行程序设计

为了改变这种现象

计算机专家考虑用适当的助记符

来表示这些难记难懂 难理解的0 1代码

这就是汇编语言

汇编语言

用一系列助记符代替一个特定的指令

用ADD

代表数字逻辑上的加

MOV呢

代表数据传递等等

通过这种方法

人们很容易去阅读

已经完成的程序

或者理解程序正在执行的功能

计算机的硬件自然不识别这些字母符号了

这个时候呢就需要一个专门的程序

把这些字符变成计算机能够识别的二进制数

这个程序就是汇编程序

比起机器语言

汇编语言特别便于记忆和书写

同时呢又保留了机器语言的高效性

但是汇编语言仍是面向机器的语言

很难从其代码上理解程序设计的意图

设计出来的程序也不易被移植

在编程语言经历了机器语言

汇编语言之后

为了更高效的使用计算机

人们设计出了高级编程语言

来满足人们对于高效且简单的编程语言的追求

在1956年

IBM公司推出第一个高级语言FORTRAN

之后呢出现了 BASIC

ALGOL、PASCAL、COLBOL、C、C++、JAVA等等

大家来看

这里是一个C语言编写的程序

高级语言是面向用户的

基本上独立于计算机

高级程序设计语言

最大的优点

就是形式上接近于算术语言和自然语言

使用非常的方便

但是计算机不认识他

他们必须被翻译为机器语言的程序才能被执行

这种翻译工作是由一个翻译程序来完成

那么什么是翻译程序

翻译程序就是将某一种语言描述的程序

这种程序我们通常称之为源程序

把它翻译成等价的另一种语言描述的程序

这个时候呢我们把这种语言的程序称之为目标程序

编译程序(Compiler) 是将高级程序语言

翻译为汇编程序设计语言

翻译程序有两类

一类是解释程序

一类是编译程序

解释程序

它是在翻译的过程中

不断地读取源程序中的语句

对每次读到的语句进行解释

同时读取执行此语句所需要的数据

然后执行这个语句

再根据执行结果读取下一条将要执行的语句

再次进行解释执行

重复这个过程

直到程序执行结束

这种一边解释一边执行的程序

我们把它称之为解释程序

类似于咱们的同声翻译

那么编译程序

就是接受全部的源程序

翻译之后输出与之等价的目标程序

然后再对其进行相应的处理

之后呢投入运行

这种将源程序完整地

转换成机器语言或者汇编语言程序

然后再处理 执行的翻译程序我们称之为编译程序

类似于自然语言翻译中的通篇翻译

编译程序是一种语言处理系统

它就是把高级程序语言

书写的各种程序

处理成可以在计算机上执行的程序

这个执行程序

可在一个源语言文件无关的环境下被执行

编译程序在程序执行之前

完成所有的翻译工作

所以可以看到

解释程序工作效率低

但是呢交互性和动态性特别好

可移植性强

编译程序呢工作效率高

但是交互性和动态性比较差

大多数程序设计语言都采取编译程序这个方法

从翻译的角度来看

解释程序和编译程序

所涉及的原理

方法 技术是类似的

编译程序要求编译出来的目标程序

必须是可重定位的

以适应并发和动态管理的需求

此外

通常编译程序

编译出来的目标程序是不能直接执行的

有的还需要连接装配

构成可执行程序

并在适当的支持之下进行运行

所以

编译程序和相应的运行系统一起构成了编译系统

编译原理这门课程

重点讲解编译程序的思想以及实现方法和技巧

希望大家通过这门课的学习

能够掌握编译原理中的

基本的概念基本理论以及基本方法

在系统层面上

再认识程序和算法

提升用计算机求解问题的水平

体验实现自动翻译的乐趣

这节课就讲到这里

谢谢大家

编译原理课程列表:

第1章 编译原理概述

-1.1 什么是编译原理

--什么是编译原理

--什么是编译程序

--讨论:翻译程序、汇编程序、编译程序、解释程序的区别和联系。

--练习1

-1.2 编译的基本过程

--编译的基本过程

--编译的基本过程

--讨论:表格管理和出错处理

--练习2

-1.3 编译程序的组织

--编译程序的组织

--编译程序的组织

--练习3

-编译原理概述

第2章 编译理论基础

-2.1 文法与语言

--文法与语言

--文法与语言

-2.2 文法和语言的形式定义

--文法和语言的形式化定义

--文法和语言的形式化定义

--讨论:高级语言的一般特点

--练习1

-2.3 文法的类型

--文法的类型

--文法的类型

--练习2

-2.4 上下文无关文法及语法树

--上下文无关文法及语法树

--上下文无关文法及语法树

--练习3

-2.5 上下文无关文法的句型分析

--上下文无关文法的句型分析

--上下文无关文法的句型分析

--练习4

-编译理论基础作业

-讨论:识别不同文法的实验方法

第3章 词法分析

-3.1 词法分析概述

--词法分析概述

--词法分析概述

--练习1

-3.2 正规文法和状态转换图

--正规文法和状态转换图

--正规文法和状态转换图

--练习2

-3.3 有限状态自动机

--有限状态自动机

--有限状态自动机

--讨论:有限状态自动机的应用

--练习3

-3.4 NFA与DFA的等价性

--NFA与DFA的等价性(上)

--NFA与DFA的等价性(下)

--NFA与DFA的等价性

--练习4

-3.5 正规表达式与正规集

--正规表达式与正规集

--正规表达式与正规集

--讨论:正规式的应用

--练习5

-3.6 正规文法与正规式

--正规文法与正规式

--正规文法与正规式

--练习6

-3.7 正规式与FA

--正规式与FA

--正规式与FA

--练习7

-词法分析作业

-讨论:如何实现词法分析器

第4章 自顶向下的语法分析

-4.1 自顶向下语法分析及其面临的问题

-- 自顶向下语法分析及其面临的问题

--自顶向下语法分析及其面临的问题

--自上而下语法分析中面临的问题

--练习1

-4.2 文法的等价转化

--文法的等价转化

--文法的等价转化

--讨论:什么样的文法才是等价的?

--练习2

-4.3 LL(1)文法与递归下降分析法

--LL(1)文法与递归下降分析法

--LL(1)文法与递归下降分析法

--LL(1)分析法和递归下降法的异同

--练习3

-4.4 构建FIRST集合FOLLOW集合

--构建FIRST集合FOLLOW集合

--构建FIRST集合FOLLOW集合

--讨论:FIRST集合FOLLOW集合的关系

--练习4

-4.5 LL(1)分析器工作原理

-- LL(1)分析器工作原理

--LL(1)分析器工作原理

-4.6 LL(1)分析表构造算法

--LL(1)分析表构造算法

--LL(1)分析表构造算法

--练习5

-讨论:自顶向下语法分析算法的实现方式

第5章 自底向上的语法分析

-5.1 自底向上的语法分析及优先分析

--自底向上的语法分析及优先分析

--自底向上的语法分析及优先分析

--练习1

-5.2 LR分析器

--LR分析器

--LR分析器

--练习2

-5.3 活前缀和LR(0)项目

-- 活前缀和LR(0)项目

--活前缀和LR(0)项目

--练习3

-5.4 构造识别活前缀的FA

--构造识别活前缀的FA

--构造识别活前缀的FA

--练习4

-5.5 LR(0)分析表构造算法

--LR(0)分析表构造算法

--LR(0)分析表构造算法

--练习5

-5.6 SLR(1)分析法

--SLR(1)分析法

--SLR(1)分析法

--练习6

-5.7 LR(1)分析法与LALR分析法

--LR(1)分析法与LALR分析法(上)

--LR(1)分析法与LALR分析法(下)

--LR(1)分析法与LALR分析法

--练习7

-讨论:比较四种LR分析法

第6章 语法制导翻译和中间代码生成

-6.1 语义分析和语法制导翻译概述

--语义分析和语法制导翻译概述

--语义分析和语法制导翻译概述

--练习1

-6.2 常见中间语言简介

--常见中间语言简介

--常见中间语言简介

--讨论:为什么要引入中间代码

--练习2

-6.3 简单算术表达式和赋值语句翻译

--简单算术表达式和赋值语句翻译

--简单算术表达式和赋值语句翻译

--练习3

-6.4 布尔表达式和复制语句翻译

--布尔表达式和复制语句翻译

--布尔表达式和复制语句翻译

-6.5 拉链和回填

--拉链与回填

--拉链与回填

--练习4

-6.6 程序控制语句翻译

--程序控制语句翻译

--程序控制语句翻译举例

--程序控制语句翻译

--练习5

-6.7 for循环语句的翻译

--for循环语句的翻译

--for循环语句的翻译

-6.8 GOTO语句和情况语句的翻译

--GOTO语句和情况语句的翻译

--GOTO语句和情况语句的翻译

--练习6

-6.9 含数组元素的算术表达式的翻译

--含数组元素的算术表达式的翻译

--含数组元素的算术表达式的翻译

--练习7

-6.10 数组元素赋值语句的翻译

--数组元素赋值语句的翻译

--数组元素赋值语句的翻译

--练习8

-讨论:三元式和四元式

第7章 符号表

-7.1 符号表概述

--符号表概述

--符号表概述

--练习1

-7.2 符号表的建立

--符号表的建立

-- 符号表的建立

--练习2

-讨论:符号表

第8章 运行时存储空间组织

-8.1 运行时存储空间组织概述

--运行时存储空间组织概述

--运行时存储空间组织概述

-8.2 运行时分配策略

--运行时分配策略

--运行时分配策略

--练习

第9章 中间代码优化

-9.1 线性窥孔优化

--线性窥孔优化

--线性窥孔优化

-9.2 基本块及其优化方法

--基本块及其优化方法

--基本块及其优化方法

-9.3 循环概念

--循环概念

--循环概念

-9.4 循环优化

--循环优化

--循环优化

-代码优化作业

-讨论:代码优化

什么是编译原理笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。