跳到主要内容

程序的开发与运行

当我们遇到一个应用问题,程序开发的流程一般是:

  1. 将应用问题转换为算法
  2. 优化
  3. 将算法编写为程序

在第 3 点中,我们需要选择程序设计语言来帮我们实现该工作。

程序设计语言

从抽象层次来分,可以分为高级语言和低级语言两类

低级语言

*机器语言:*使用特定计算机规定的指令格式而形成的 0/1 序列称为机器语言,机器语言编写的,计算机能够直接理解的程序称为机器语言程序,其中的每条指令称为机器指令

由于机器语言程序的可读性很差,人们引入了汇编语言,用简短的英文符号和机器指令建立一 一对应关系。由于计算机无法理解和执行汇编指令,所以汇编语言程序需要先转换为机器语言程序才能执行。

汇编指令和机器指令都与特定的机器结构相关,统称为机器级语言

高级语言

低级语言有着明显的缺点

  • 每条指令的功能简单,因此编写程序的时候需要注意的细节很多
  • 同一个程序不能在不同机器上运行。

因此,日常生活中大多使用高级程序设计语言,它有着以下优点

  • 与具体机器结构无关
  • 可读性好
  • 描述能力更强,一条语句可以对应很多条指令。

同样的,计算机也无法直接理解高级程序设计语言,因此需要转换为机器语言。转换的过程中,需要借助的软件称为翻译程序

翻译程序

用途

可以把一种编程语言表示的程序转换为等价的另一种编程语言程序。被翻译的语言和程序分别称为源语言源程序,翻译生成的语言和程序分别称为目标语言目标程序

分类

  1. 编译程序(编译器):将高级语言源程序翻译为汇编语言或机器语言目标程序
  2. 解释程序(解释器):将源程序中的语句按照执行顺序逐条翻译成机器指令并立即执行
  3. 汇编程序(汇编器):将汇编语言源程序翻译为机器语言目标程序

从源程序到可执行文件

  1. 编写源程序,得到 hello.c 文件,该文件为文本文件,在计算机中以 ASCII 字符方式存放,是可显示和可读的。
  2. 预处理阶段:预处理软件对源程序中以 # 开头的命令进行处理,得到一个文本文件,以 .i 为扩展名
  3. 编译阶段:对预处理后的源程序进行编译,生成一个汇编语言源程序,也是文本文件,以 .s 为扩展名。
  4. 汇编阶段:对汇编语言源程序进行汇编,生成一个可重定位目标文件,以 .o 为扩展名,是一个二进制文件,是不可读的。
  5. 链接阶段: 将多个可重定位目标文件和标准函数库中的可重定位目标文件合并为一个可执行目标文件。

可执行文件的启动和执行

启动

可以在操作系统提供的用户操作环境中,采用双击图标或者在命令行中输入可执行文件名等多种方式。

执行

书上第11页的例子(包括图例和解释)