计算机语言

计算机语言的组成

计算机语言(Computer Language) 是指用于人与计算机之间交流的一种语言, 是人与计算机之间传递信息的媒介。计算机语言主要由一套指令组成, 而这种指令一般包括表达式、流程控制和集合三大部分内容。

计算机语言的分类

机器语言

机器语言是最早使用的程序设计语言, 是第一代计算机语言, 是计算机自身具有的“本地语”。在计算机设计时,围绕的中心是指令, 指令是一种基本的操作。一台计算机处理功能的大小与指令的功能以及指令的多少有关。所有指令的集合称为指令系统,也就是机器语言。机器语言是计算机能够直接接收并能识别和执行操作的语言, 其优点是可以被计算机直接理解和执行,而且执行速度快、占用内存少。

指令包含内容:

  1. 操作码。它具体说明了操作的性质及功能。一台计算机可能有几十条至几百条指令,每一条指令都有一个相应的操作码,计算机通过识别该操作码来完成不同的操作。
  2. 操作数的地址。CPU 通过该地址就可以取得所需的操作数。
  3. 操作结果的存储地址。把对操作数的处理所产生的结果保存在该地址中,以便再次使用。
  4. 下条指令的地址。执行程序时, 大多数指令按顺序依次从主存中取出执行, 只有在遇到转移指令时,程序指令的执行顺序才会改变。为了压缩指令的长度,可以用一个程序计数器(Program Counter, PC) 存放指令地址。每执行一条指令, PC的指令地址就自动
    (设该指令只占一个主存单元), 指出将要执行的下一条指令的地址。当遇到执行转移指令时,则用转移地址修改PC的内容。由于使用了PC,指令中就不必明显地给出下一条将要执行指令的地址。

指令格式:

  1. 三地址指令。一般地址域中 A1、A2分别确定第1、第2操作数地址, A3确定结果地址。下一条指令的地址通常由程序计数器按顺序给出。
  2. 二地址指令。地址域中 A1确定第1操作数地址, A2同时确定第2操作数地址和结果地址。
  3. 单地址指令。地址域中 A 确定第1操作数地址。固定使用某个寄存器存放第2操作数和操作结果。因而在指令中隐含了它们的地址。
  4. 零地址指令。在堆栈型计算机中, 操作数一般存放在堆栈顶的两个单元中,结果又放入栈顶, 地址均被隐含, 因而大多数指令只有操作码而没有地址域。
  5. 可变地址数指令。地址域所涉及的地址的数量随操作定义而改变。如有的计算机的指令中的地址数可少至0个, 多至6个。

汇编语言

为了降低使用机器语言编程的难度,人们进行了一种有益的改进,即用一些简洁的英文字母、符号串来替代一个特定指令的二进制串, 例如, 用ADD代表加法, MOV代表数据传递等,这样一来,人们很容易读懂并理解程序在做什么,编程、纠错及维护都变得方便了,这种程序设计语言就称为汇编语言, 即第二代计算机语言。

高级语言

由于汇编语言依赖于硬件, 使得程序的可移植性极差, 而且编程人员在使用新的计算机时还需学习新的汇编指令, 大大增加了编程人员的工作量,为此诞生计算机高级语言。高级语言不是一门语言, 而是一类语言的统称, 它比汇编语言更贴近于人类使用的语言, 易于理解、记忆和使用。由于高级语言和计算机的架构、指令集无关,因此它具有良好的可移植性。高级语言应用非常广泛, 世界上绝大多数编程人员都在使用高级语言进行程序开发。常见的高级语言包括C、C++、Java、VB、C#、Python、Ruby等。下面介绍几种常见的高级语言。

UML

UML 是一种定义良好、易于表达、功能强大且普遍适用的建模语言。它的作用不限于支持面向对象的分析与设计,还支持从需求分析开始的软件开发的全过程。UML 成为“标准”建模语言的原因之一在于与程序设计语言无关。而且,UML 符号集只是一种语言而不是一种方法学,不需要任何正式的工作产品。因为语言与方法学不同,它可以在不做任何更改的情况下很容易地适应任何公司的业务运作方式。

  1. UML组成要素:UML的基本构造块(事物、关系)、图(支配基本构造块如何放置在一起的规则)和运用于整个语言的公用机制。
  2. 关系:依赖、关联(聚集)、泛化和实现。
  3. 图:UML 2.0提供了 13种图,分别是类图、对象图、用例图、序列图、通信图、状态图、活动图、构件图、部署图、组合结构图、包图、交互概览图和计时图。序列图、通信图、交互概览图和计时图均被称为交互图。
  4. 视图:用例视图、逻辑视图、进程视图、实现视图和部署视图, 其中的用例视图居于中心地位。
    (1)用例视图: 描述系统的功能需求, 方便找出用例和执行者;它展示了一个外部用户能够观察到的系统功能模型, 主要包括用例图。对此关心的开发团队成员主要包括客户、分析者、设计者、开发者和测试者。  
    (2) 逻辑视图: 描述如何实现系统内部的功能;系统的静态结构和因发送消息而出现的动态协作关系。逻辑视图包含类图和对象图、状态图、顺序图、合作图和活动图。  
    (3) 进程视图: 描述系统的并发性, 并处理这些线程间的通信和同步; 它将系统分割成并发执行的控制线程及处理这些线程的通信和同步。进程视图主要包括状态图、顺序图、合作图、活动图、构件图和配置图;对此关心的开发团队成员主要包括开发者和系统集成者。  
    (4) 实现视图: 描述系统代码构件组织和实现模块及它们之间的依赖关系; 实现视图主要包括构件图; 对此关心的开发团队成员主要有设计者、开发者和测试者。  
    (5) 部署视图: 定义系统中软硬件的物理体系结构及连接、哪个程序或对象驻留在哪台计算机上执行; 主要包括配置图; 对此关心的开发团队成员主要包括开发者、系统集成者和测试者。

形式化语言

形式化方法是把概念、判断、推理转化成特定的形式符号后,对形式符号表达系统进行研究的方法, 是用具有精确语义的形式语言书写的程序功能描述,它是设计和编制程序的出发点,也是验证程序是否正确的依据。形式化方法就是用符号化的数学变换把需求分析准确地表述出来, 这样可以确保和需求的一致性, 并能用于分析和验证应用程序。毕竟,一个程序本身就是一个正式的规范化语言。