编译执行的过程

首先你用文本编辑器写一个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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值