目录

1什么是解释和编译

1解释

2编译执行

3理解概念

2”解释“和”编译“的对比

两者的区别


在接触程序设计的时候我们经常听到两个概念“解释”“编译”。

计算机编程语言可以这两个概念来分一下类。

1解释型:Java、Basic、javascript、python

2编译型:C、C++、Delphi、Pascal、Fortran

这里需要注意一下java具有特殊性

java有编译和解释性 Java编译程序生成字节码(byte-code),再由解释器解释运行。

有点跑题了。

接下来我们开始正式介绍“解释”和“编译”

1什么是解释和编译

首先我们要知道计算机是无法直接执行高级语言的,它只能执行“机器码”所以呢我们就需要把高级语言转换为机器码执行。而转换的方式有两种就是:“解释”和“编译”。
 

1解释

解释执行不依赖于平台,因为编译器会根据不同的平台进行解析。例如JS语言无论在windows平台还是在Lunix平台都可以使用。故可移植性强。使用解释执行的程序我们一般称为解释程序。它将源语言直接作为源程序输入,解释执行解释一句后就提交计算机执行一句,并不形成目标程序。如在终端上打一条命令或语句,解释程序就立即将此语句解释成一条或几条指令并提交硬件立即执行且将执行结果反映到终端,从终端把命令打入后,就能立即得到计算结果。这种工作方式非常适合于人通过终端设备与计算机会话

这是百科的概念,这其中有几个重点:

1解释器

2逐行读取并自行

3不生成目标程序

2编译执行

编译

首先我们要知道计算机是无法直接执行高级语言的,它只能执行“机器码”所以呢我们就需要把高级语言转换为机器码执行。而转换的方式有两种就是:“解释”和“编译”。
 

首先我们要知道计算机是无法直接执行高级语言的,它只能执行“机器码”所以呢我们就需要把高级语言转换为机器码执行。而转换的方式有两种就是:“解释”和“编译”。

这又是百科的概念,同样有几个重点:

1编译器

2一次性编译

3生成目标程序

3理解概念

概念说完了,接下来就因该形象具体的理解一下了。

我这里做个比喻会方便理解:如果把高级语言的源代码看作外文文章,编译和解释器就是两个做翻译的,计算机是那个要审阅的。编译器和解释器的翻译方式不一样,解释器是一句一句的读给计算机听,而编译器是把整篇文章翻译好写下来给计算机看。

接下来直接举一个实际的例子吧,就拿Java和python举例。

这里我们创建一个名为“测试”的后缀名为“.java”的Java源文件。

 

我们执行它,

 

程序会生成一个“测试.class”文件。这里就类似我上面的比喻,Java编译器把.java文件整个翻译成了.class文件再由计算机执行。这就叫编译。

再来看python

 

我们写一个“测试.py”文件,这里我故意加入了一个错误,我们来看结果。

 

可以看到,python并没有生成新的文件而是直接执行。有趣的是程序先打印出了第一行代码中的“hello world”而后才报出第三行的错误,这也就说明python是一行一行的执行代码的。

通过上面的介绍和例子,我觉得“解释”和“编译:的概念已经可以理解了。

接下来我们把他们做个对比。

2”解释“和”编译“的对比

两者的区别

解释器编译器
Input(输入)每次读取一行整个程序
Output(输出)不产生任何的目标代码生成中间目标代码
工作机制编译和执行同时进行编译在执行之前完成
生成程序不生成输出程序,生成exe
修改直接修改就可运行如果需要修改代码,则需要修改源代码,重新编译
运行速度
内存它少
错误解释器读取一条语句并显示错误编译器在编译时显示所有错误和警告。
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐