程序语言基础知识

224 阅读6分钟

程序语言概述

程序设计语言的基本概念

  1. 低级语言和高级语言

    低级语言:机器语言和汇编语言,机器语言指0和1组成的机器指令序列,是最基本的计算机语言;汇编语言指用符号表示指令的语言

    高级语言:从人类的逻辑思维角度出发、面向各类应用的程序语言

  2. 编译程序和解释程序

    源程序:某种高级语言或汇编语言编写的程序,源程序不能直接在计算机上执行。

    编译程序:编译器,将源程序翻译成目标语言程序然后在计算机上运行目标程序。将源程序翻译成独立保存的目标程序。

    解释程序:解释器,直接解释执行源程序,或者将源程序翻译成某种中间代码后再加以执行。不生成独立的目标程序

  3. 程序设计语言的定义

    语法:基本字符构成的符号(单词)书写规则称为词法规则;由符号(单词)构成语法成分的规则称为语法规则。

    语义:程序语言中按语法规则构成的各个语法成分的含义,可分为静态语义(编译时可以确定的语法成分含义)和动态语义(运行时才能确定的语法成分含义)。

    语用:构成语言的各个记号和使用者的关系,涉及符号来源、使用和影响。

    语境:理解和实现程序设计语言的环境,包括编译环境和运行环境。

  4. 程序设计语言的分类

    命令式程序设计语言:基于动作的语言,计算被看作是动作的序列。命令式语言族开始于Fortarn、Pascal和C语言

    面向对象的程序设计语言:在很大程度上归功于从模型领域发展而来的Simula,Simula提出了对象和类的概念。C++、Java和Smalltalk是面向程序设计语言的代表。

    函数式程序设计语言:基本概念来自于LASP,其中大量使用了递归。

    逻辑性程序设计语言:以形式逻辑为基础的语言。

程序设计语言的基本成分

  1. 数据成分

    常量和变量

    全局量和局部量:系统为全局量分配的存储空间在程序运行的过程中一般是不改变的,而局部量分配的存储单元是动态改变的。

    数据类型:按照组织形式不同,可将数据分为:基本类型、用户定义类型、构造类型及其他类型等。

  2. 运算成分

    允许使用的运算符号及运算规则。大多数高级程序语言的基本运算可以分为算术运算、关系运算和逻辑运算,有些语言还有位运算。

  3. 控制成分:指明语言允许表述的控制结构,程序员使用控制成分来构造程序中的控制逻辑

    顺序结构

    选择结构

    循环结构

  4. C(C++)语言提供的控制语句

    复合语句:一系列用 “{ }” 括起来的声明和语句,主要作用是将多条语句组成一个可执行单元。复合语句是一个整体,要么全部执行,要么一条语句也不执行。

    if语句和switch语句

    循环语句:while、do-while、for

  5. 函数

    函数定义:包括函数首部和函数体;函数定义描述了函数做什么和怎么做。

    函数声明:函数应该先声明后引用。函数声明定义了函数原型。函数原型可以使编译器检查源程序中对函数的调用是否正确。

    函数调用:当需要在一个函数(主调函数)中使用另一个函数(被调函数)实现的功能时,便以函数名进行调用,称为函数调用。函数调用时,实参和形参间交换信息的方法有传值调用和引用调用两种。

    (1) 传值调用:普通传值。

    (2) 引用调用:函数中对形参做的更改实际上是针对实参做的更改

语言处理程序基础

汇编语言基本原理

  1. 汇编语言:符号化程序设计语言,汇编语言源程序由若干条语句组成。

    指令语句:汇编后能产生相应的机器代码,被CPU直接识别并进行相应的操作。指令语句可分为传送指令、算术运算指令、移位指令、转移指令和处理机控制指令等。

    伪指令语句:汇编程序在对源程序进行汇编时完成某些工作。与指令语句的区别是:伪指令语句汇编后不产生机器代码;伪指令语句所指示的操作是在源程序被汇编时完成的,而指令语句的操作必须在程序运行时完成。

    宏指令语句:将多次重复使用的程序段定义为宏

  2. 汇编程序:将汇编语言编写的源程序翻译成机器指令程序。

编译程序基本原理

编译程序的功能就是把高级语言书写的源程序翻译成与之等价的目标程序

  1. 词法分析阶段:对源程序进行从前到后逐个字符进行扫描,从中识别一个个“单词”符号。

  2. 语法分析阶段:在词法分析的基础上,根据语言的语法规则将单词符号序列分解成各类语法单位。

  3. 语义分析阶段:主要审查源程序是否存在语义错误,并收集类型信息供后面的代码生成阶段使用。

  4. 中间代码生成阶段:根据语义分析的输出生成中间代码。

  5. 代码优化阶段:对前一阶段产生的中间代码进行变换或改造,使生成的目标代码更为高效,即:省时和省空间。

  6. 目标代码生成阶段:把中间代码变换成特定机器上的绝对指令代码、可重定位的指令代码或汇编指令代码。

  7. 符号表管理:在符号表记录源程序的各个符号的必要信息,以辅助语义的正确性检查和代码生成。

  8. 出错处理:出错处理程序的任务包括检查错误、报告出错信息、排错、恢复编译工作。

    动态错误:动态语义错误,指程序中包括的逻辑错误。 静态错误:编译阶段发现的程序错误,分为语法错误和静态语义错误。

解释程序基本原理

直接执行源程序或源程序的中间代码。因此,解释程序并不产出目标程序。

文法和有限自动机

文法和语言的形式描述

  1. 文法的定义:描述语言语法结构的形式规则。

  2. 文法的分类:0型(短语文法)、1型(上下文有关文法)、2型(上下文无关文法)、3型(正规文法或线性文法)。

  3. 句子和语言:

    设有文法G=(V,T,S,P);V(非终结符),T(终结符),S(起始符),P(产生式)

  4. 文法的等价:若文法G(1)和G(2)产生的语言是相同的,则称这两个文法是等价的。