编译执行的过程

来源:互联网 发布:找老婆知乎 编辑:程序博客网 时间:2024/04/18 23:55
首先你用文本编辑器写一个C程序,然后保存成一个文件,例
如program.c(通常C程序的文件名后缀是.c),这称为源代码(Source Code)或源文件,然后运
行编译器对它进行编译,编译的过程并不执行程序,而是把源代码全部翻译成机器指令,再加上一
些描述信息,生成一个新的文件,例如a.out,这称为可执行文件,可执行文件可以被操作系统加
载运行,计算机执行该文件中由编译器生成的指令,如下图所示:
图1.1. 编译执行的过程
有些高级语言以解释(Interpret)的方式执行,解释执行过程和C语言的编译执行过程很不一样。
例如编写一个Shell脚本script.sh,内容如下:
#! /bin/sh
VAR=1
VAR=$(($VAR+1))
echo $VAR
定义Shell变量VAR的初始值是1,然后自增1,然后打印VAR的值。用Shell程序/bin/sh解释执行这个
脚本,结果如下:
$ /bin/sh script.sh
2
这里的/bin/sh称为解释器(Interpreter),它把脚本中的每一行当作一条命令解释执行,而不需要
先生成包含机器指令的可执行文件再执行。如果把脚本中的这三行当作三条命令直接敲到Shell提示
符下,也能得到同样的结果:
$ VAR=1
$ VAR=$(($VAR+1))
$ echo $VAR
2
图1.2. 解释执行的过程
编程语言仍在发展演化。以上介绍的机器语言称为第一代语言(1GL,1st Generation
Programming Language),汇编语言称为第二代语言(2GL,2nd Generation Programming
Language),C、C++、Java、Python等可以称为第三代语言(3GL,3rd Generation
Programming Language)。目前已经有了4GL(4th Generation Programming
Language)和5GL(5th Generation Programming Language)的概念。3GL的编程语言虽然是用
语句编程而不直接用指令编程,但语句也分为输入、输出、基本运算、测试分支和循环等几种,和
指令有直接的对应关系。而4GL以后的编程语言更多是描述要做什么(Declarative)而不描述具体
一步一步怎么做(Imperative),具体一步一步怎么做完全由编译器或解释器决定,例如SQL语言
(SQL,Structured Query Language,结构化查询语言)就是这样的例子。
0 0
原创粉丝点击