编译型、解释型傻傻分不清

221 阅读3分钟

前言

在学习一门新的高级语言时,总是有许多形容词去介绍这个语言。例如强类型语言、弱类型语言、脚本语言、编译型语言、解释型语言等等,面对这么多的形容词,是不是有点慌了。不要慌,不要慌,今天从先介绍介绍编译型语言和解释型语言。

一、程序语言的分类

程序语言有多种分类方法,大部分程序语言都是算法描述型语言,如C/C++、Java等,还有一部分是数据描述型语言,如HTML等标记语言。

按照编程技术难易程度可分为低级语言(机器语言、汇编语言)和高级语言;

按照程序语言设计风格可分为命令式语言(过程化语言)、结构化语言、面向对象语言、函数式语言、脚本语言等;

按照语言应用领域可分为通用程序语言(GPPL)和专用程序语言(DSL);

按照程序执行方式,可分为解释型语言(如JavaScript、Python、Perl、R等),编译型语言(如C/C++等),编译+解释型语言(如Java、PHP等)。

上面这段话摘自于百度百科对程序语言的解释,可以看到程序语言的分类方式有很多种。今天我们要聊的是,编译型、解释型语言。我们先看看什么是编译型语言吧。

二、编译型、解释型、混合型语言

编译型语言:

编译型语言在程序在执行之前需要一个专门的编译过程,把源代码编译成机器语言的文件,如exe格式的文件,以后要再运行时,直接使用编译结果即可,如直接运行exe文件。因为只需编译一次,以后运行时不需要编译,所以编译型语言执行效率高。依赖编译器,跨平台性差些。如C、C++、Delphi等。

解释型语言:

解释型语言是一种编程语言类型。这种类型的语言,源代码会经过解释器去解释,然后一句一句直接执行,不需要像编译语言一样,经过编译器先行编译为机器码,之后再执行。这种语言需要利用解释器,例如chrome中的v8引擎,你可以把它理解为js解释器。在执行期,动态将源代码逐句解释为机器码,之后再执行。

混合型语言:

混合型语言既需要编译,又需要解释,以java来举例。首先java文件需要通过java编译器,也就是javac.exe去编译java文件,然后生成字节码.class文件。然后在JVM中通过解释器去解释,在运行。

总得来说,编译型语言的执行过程为,源代码->编译->运行。解释型语言的执行过程为,源代码->解释->运行。由于解释型语言运行时需要对代码进行解释,想想那些解释型语言的产品、软件是不是都是开源的。编译型语言正好相反,运行时不需要源代码,只需要编译后的产物(例如c语言的.exe文件)就行。

三、总结

编译型语言:

1.一次编译,终生运行,运行时脱离开发环境,运行效率高。

2.不同的平台可能需要编译多次,与特定平台相关,跨平台性差点。

3.现有的C、C++、等都属于编译型语言。

解释型语言:

1.解释型语言每次运行都需要将源代码解释成机器码并执行,效率较低。

2.只要平台提供相应的解释器,就可以运行源代码,跨平台性较好。

3.Python、javascript等属于解释型语言。