编译执行的过程
来源:互联网 发布:找老婆知乎 编辑:程序博客网 时间: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,结构化查询语言)就是这样的例子。
如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
- 编译执行的过程
- C编译执行的过程
- gcc编译的具体执行过程
- 代码的编译连接与执行过程
- java编译和执行过程的理解
- java代码的编译和执行过程
- Arduino IDE的编译执行过程解读
- Arduino IDE的编译执行过程解读
- jsp编译、执行过程
- jsp编译、执行过程
- 【编译原理】程序的编译链接执行过程
- 从Java文件的编译到最终执行的过程
- 从Java文件的编译到最终执行的过程
- C程序编译执行过程
- C 程序编译执行过程
- C程序编译执行过程
- C程序编译执行过程
- C程序编译执行过程
- 浅谈block(2)
- JavaScript DOM 编程之扩展篇
- (Boost)thread_specific_ptr
- git 常用命令
- Ros CV
- 编译执行的过程
- 机器学习算法的Python实现 (2):ID3决策树
- 码农小汪-Hibernate学习7-hibernate映射组件属性
- [BZOJ 4430] [NWERC 2015] 赌骆驼
- 二分搜索
- Atlantis(线段树)
- :css教程:css盒子模型及布局应用
- [BZOJ2073][POI2004]PRZ
- 面试时的自我简介要点