1、程序语言知识
1.1 程序语言:
程序语言分为低级语言和高级语言两个大类。
低级语言:又称为面向机器语言,它是特定的计算机系统所固有的语言。
机器语言:虽然执行效率高,但编写出来的程序可读性很差,程序难以修改和维护。
汇编语言:汇编语言是机器语言的一种提升,它使用了一些助记符号来表示机器指令中的操作码和操作数。但它仍然是一种和计算机的机器语言十分接近的语言,使用起来仍然不太方便。
高级语言:与人们的自然语言比较接近,使用起来很方便,也极大的提高了程序设 计的效率。
下面简单介绍了几种高级语言的特点:
Fortran:第一个被广泛用于进行科学计算的高级语言。
Algol: 早期研制出来的高级语言。有严格的文法规则,用巴科斯范BNF来描述语言的文法,是一个分程序结构的语言。(最近嵌套原则和存储器使用效率高)
Cobol:面向事务处理的高级语言。在数据库管理系统设计方面使用广泛。
Pascal:具有相当强的表达能力,特别是对于数据结构功能的表达极具优势。
C :当今最通用的程序设计语言。C是一种较低级的语言,提供了指针和地址操作的能力,但正是因为它的这一特点,才使它更具灵活性。C与UNIX操作系统紧密相关。
Prolog:逻辑型语言的代表。它是建立在关系理论和一阶谓词逻辑理论基础上的。Prolog程序由一些俗称事实和规则的Horn子句组成,具有很强的推理功能,适用书写自动定理证明、专家系统、自然语言理解等问题的程序。
LISP:典型的函数型程序语言。它以λ演算为基础。它广泛的用于问题求解等人工智能领域。
面向对象技术具有3个最重要的特征:封装性、继承性和多态性。
◆封装性:指隐藏类对象内部实现的复杂细节,将类以变量类型的形式提供给用户,从而有效地保护内部所有数据不受外部破坏。
◆继承性:指一个类(父类)再加上某些新的特征生成另外一个新类(子类),子类具有父类的全部特征,从而增强了类的共享机制,实现了软件的可重用性,简化了软件的开发工作。
◆多态性:指将同一处理过程或函数应用于不同的变量(参数),实现数据和过程的功能重载,从而简化编码。
下面简单介绍一下几种面向对象语言。
C++:是在C语言的基础上发展起来与C兼容的语言。是目前最流行的面向对象语言,主要增加了类功能和从其他类中继承类对象的功能。
Smalltalk:典型的面向对象的程序设计语言,引入了类和对象。
Java: 由SUN公司开发的一种面向对象的程序设计语言。其主要特点是可移植性好,可用于各种平台,尤其适合网络上运行。
数据类型和控制结构:
对于不同的程序语言,其提供的数据类型都不相同。数据是程序操作的对象,使用时都需要分配内存空间,它们都具有以下的属性。
数据名称:由用户通过标示符命名;
类型: 说明数据占用内存的大小和存放方式
存储类: 说明数据在内存中的位置和生存期
作用域: 说明数据可以使用的范围
生存期: 说明数据占用内存的时间
数据从不同角度可分成不同的类别:
纯量数据类型(基础数据类型)和结构数据类型:其中纯量数据类型包括(实型、整型、布尔型、指针,双精度型和枚举型);而结构数据类型包括(联合、数组、复型和记录)
按作用域分:全局量和局部量
按生存期分:自动生存期(auto)、静态生存期(static)和动态生存期
按程序运行期数据值是否改变:常量和变量
按类型分:void、标量、函数和聚合
标量又可分为算术、枚举和指针;
聚合可分为数组、结构体和共用体。
按构造方式分:基本类型和派生类型(主要参考C语言)
基本类型是void、char、int、float、double和枚举类型,以及其变种short、long、signed和unsigned。
派生类型包括指针、数组、函数、结构体(struct)和共用体(union)。其中,最后两种为用户类型。
程序语言中的控制结构为数据和数据上的运算组合成程序提供了基本框架,主要包括3种控制结构,即
顺序:
选择:if语句
重复:while语句
1.2 汇编语言:
汇编程序是为特定的计算机或者计算机系统设计的面向机器的语言。
汇编语言中的语句可以分成两大类:
与机器指令相对应的可执行汇编语句;
汇编控制语句,即伪指令。
伪指令并不翻译成机器指令,它的作用是控制汇编程序工作。
每条汇编语句被划分成4个区,依次是标号区、操作码区、操作数区和注解区。
例如:[标号] [操作码] [操作数] [注解]
用汇编语言编写的源程序,要通过汇编程序将它翻译成机器语言程序,才能被计算机执行。因此,汇编程序的功能就是将汇编语言所编写的源程序翻译成由机器指令和其他信息组成的目标程序。它的基本工作包括:
将每一条可执行汇编语句转换成对应的机器指令
处理源程序中出现的伪指令
整个汇编程序工作通常要对源程序进行两次扫描才能完成。第一次扫描主要工作是定义符号的值。第二次扫描的目的则是产生目标程序。其中,可执行汇编语句被翻译成对应的二进制代码机器指令,而伪指令会根据伪指令记忆码调用伪指令表对应元素所规定的子程序入口。