前言:下面和大家分享一下第二章的知识点,希望对大家有帮助。
(一)程序设计语言概述
1.编译程序和解释程序
基本方式:汇编、解释、编译
【1】
①用某种高级语言或汇编语言编写的程序称为【源程序】,不能直接在计算机上执行。
②如果源程序是用【汇编语言】编写的,则需要一个【汇编程序】将其【翻译】成目标程序后才能执行。
如果源程序是用某种【高级语言】编写的,则需要对应的【解释程序和编译程序对其进行翻译】,然后在机器上运行。
【2】
解释程序(解释器)或者直接解释执行源程序,或者将源程序翻译成某种中间代码后再加以执行。
编译程序(编译器)则是将源程序翻译成目标语言程序,然后再计算机上运行目标程序。
根本区别:
【编译】方式下,机器上运行的是与源程序等价的目标程序,源程序和编译程序都【不能】再参与目标程序的执行过程。(效率更高)
【解释】方式下,解释程序和源程序都要【参与】到程序的运行过程。
(解释方式下,翻译源程序时不生成独立的目标程序,而编译器则将源程序翻译成独立保存的目标程序。)
2.语法、语义、语用
【1】语法:由程序设计语言的基本符号组成程序的各个语法成分的一组【规则】
【2】语义:按照语法规则构成的各个语法成分的含义,包含静态语义(编译时确定)和动态语义(运行时刻取得含义)
【3】语用:构成语言的各个记号和使用者的关系,设计符号的来源、使用和影响。(语境:编译&运行环境)
3.程序设计语言分类
【1】命令式和结构化程序设计语言
结构特征:自顶向下逐步精华的编程方法;按模块组织的方法;程序只包含顺序、判定及循环构造
典型:【Fortran,PASCAL和C语言】
【2】面向对象的程序设计语言
支持程序设计的技术,如数据隐藏、数据抽象、用户定义类型、继承、多态
典型:【C++、JAVA、Smalltalk】
【3】函数式程序设计语言
典型:【LISP(递归)、Haskell、Scala、Scheme、APL】
【4】逻辑型程序设计语言
典型:建立在谓词基础上的【PROLOG(Programming in Logic)】
4.函数
函数定义:函数的【首部】和函数【体】
函数声明:先声明后引用
函数调用:值调用(实参的值传递给形参);引用调用
(二)语言处理程序基础
1.汇编语言
指令语句(机器指令语句):将其汇编后生成相应的机器代码,能被CPU直接识别并执行的操作。
伪指令语句:汇编后不产生机器代码
宏指令语句:允许用户多次重复使用
2.编译过程:
源程序→词法分析→语法分析→语义分析→中间代码生成→代码优化→目标代码生成
(中间代码生成、代码优化:可省略)(逻辑上前端:词法分析→中间代码生成)
3.文法
定义:描述语言语法结构的规则
分类:0型(短语文法,功能相当于图灵机)、1型(上下文有关文法)
2型(上下文无关文法)、3型(正规式)
4.自顶向下语法分析方法
消除文法的左递归、提取公共左因子、LL(1)文法、递归下降分析法、预测分析法
5.自底向上语法分析方法
移近-归约分析法(一步一规约),采用算符优先分析表,称为算符优先分析器;LR(核心:分析表的构造)成为LR分析器。
6.中间代码
常用的有:后缀式(逆波兰式)、三元式、四元式、树
(树和后缀适用于解释器,四元式编译器)
7.高级语言与解释方式比较
【效率】编译更高
【灵活性】解释程序更灵活
【可移植性】解释器更好
总结:软考的学习也是一个不断重复不断总结的过程,越重复越总结越清晰。在总结中不断地完善和提高。