程序语言基础知识:编译程序和解释程序、程序语言的数据成分和控制成分(教材)、编译程序的过程、中缀、前缀与后缀表达式
2022/5/1 22:16:12
本文主要是介绍程序语言基础知识:编译程序和解释程序、程序语言的数据成分和控制成分(教材)、编译程序的过程、中缀、前缀与后缀表达式,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
程序语言概述:
1、低级语言:机器语言和汇编语言。是一种面向机器的语言。特点:难以理解,程序可读性差,程序设计效率低。
2、高级语言:面向各类应用的程序语言。如java,c,c++等;特点:与人类语言相近,便于理解,提高了程序设计的效率。
3、高级语言转换的方式:汇编、解释、编译。然后才可以被计算机硬件所理解。
汇编语言编写:需要汇编程序翻译成目标程序,然后执行目标程序;
高级语言编写:两种方式:一种是解释程序或编译程序进行翻译,然后再运行。
4、编译程序与解释程序:教材
(1)、解释程序(解释器):直接解释或者将源程序翻译成某种中间代码再执行。 按源程序中语句顺序逐条翻译并立即执行相关的功能;
(2)、编译程序(编译器):将源程序翻译成目标程序(目标代码),然后再在计算机上运行目标程序。
两个阶段:编译阶段和运行阶段
编译阶段:把源程序翻成目标程序。
运行阶段:执行目标程序。
解释:边翻译边执行
编译:先全部翻译,再执行
———————————————————————————————————————————————————————————————————
编译和解释的区别:
编译:一次编译,多次执行
源程序(翻译成)→目标程序 执行的时候就执行目标程序就可以了。。。。跟源程序和翻译程序都没有关系
解释:解释程序和源程序都要参加到程序的运行过程中,运行程序的控制权在解释程序。
编译和解释的比较:
编译比解释方式可能取得更高的效率:因为编译是一次编译,可以多次执行;(事先将源程序翻译,执行的时候执行已经翻译好的目标程序就可以了)
而解释方式是边解释边执行,效率更低。
解释方式比翻译方式更加灵活:
解释方式的可移植性更加好:
————————————————————————————————————————————————————————————————————
程序语言的数据成分:
1)、常量和变量:按是否可以修改来来判定;
2)、全局变量和局部变量:按数据的作用域范围,可以分为全局变量和局部变量。
全局变量:系统分配的储存空间在程序运行的过程中一般是不改变的,而为局部变量分配的储存单元是可以动态改变的。
3)、数据类型:基本类型:整形、字符型等;p46——52(摘抄一句话或点)
特殊类型:空类型;
用户定义类型:枚举型;
构造类型:数组、结构、联合
指针类型:type*
抽象数据类型:类类型
前四个:前端(高级)
后两个:后端(机器相关)
不同机器生成,就修改后端
有符号表的管理和出错处理
编译过程:
1、词法分析:从左到右逐词分析;(单词、标识符、常数、运算符、标点符号)
2、词法分析:分析单词串是否构成短语和句子,就是说检测是否合法;如果源程序没有语法错误,语法分析后就能够正常的构造其语法树;
3、词义分析:任务:分析各语法结构的含义,检查是否存在静态语义错误;
主要工作:进行类型分析和检查;
4、中间代码的生成:见最下图。
编译过程:
5、代码优化:由于源程序翻译后是机械的、按固定模式进行的,所以,生成的代码往往会在时间和空间方面的效率较差。所以当需要生成高效的目标程序时,就必须进行优化。
优化过程可以在中间代码生成阶段进行,也可以在目标代码生成阶段进行。
6、目标代码的生成:目标代码的生成是编译工作的最后的一个阶段;
任务:把中间的代码变成特定机器上的绝对指令代码、可重定位的指令代码和汇编代码;
这个阶段的工作与具体的机器密切相关。
7、符号表管理:就是看是否正确,能够在编译过程中对符号表进行快速有效的查找、插入、修改和删除等操作。
8、出错处理:分为静态错误和动态错误;
中缀、前缀与后缀表达式:
三种表达式的转换:
这篇关于程序语言基础知识:编译程序和解释程序、程序语言的数据成分和控制成分(教材)、编译程序的过程、中缀、前缀与后缀表达式的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26消息中间件源码剖析教程
- 2024-11-26JAVA语音识别项目资料的收集与应用
- 2024-11-26Java语音识别项目资料:入门级教程与实战指南
- 2024-11-26SpringAI:Java 开发的智能新利器
- 2024-11-26Java云原生资料:新手入门教程与实战指南
- 2024-11-26JAVA云原生资料入门教程
- 2024-11-26Mybatis官方生成器资料详解与应用教程
- 2024-11-26Mybatis一级缓存资料详解与实战教程
- 2024-11-26Mybatis一级缓存资料详解:新手快速入门
- 2024-11-26SpringBoot3+JDK17搭建后端资料详尽教程