解释型语言与编译型语言

Posted 青山应回首

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解释型语言与编译型语言相关的知识,希望对你有一定的参考价值。

  程序语言从执行方式上来区分有两种:解释型 和 编译型

1.编译型语言:在程序执行之前,有一个编译过程,将源程序翻译成机器码(CPU指令)、以二进制文件形式存在,之后再执行的时候直接执行,不再需要翻译的过程;坏处则是难以支持许多动态特性;

- C

- C++

2.解释型语言:在执行的时候将程序翻译成机器码(CPU指令),所以运行速度要慢于编译型语言,每次执行都需要一个翻译的过程;大部分CPU时间花在了解释器运行上面;好处是实现起来非常简单,也很容易添加新特性;

- Python

- Java

 

3.为什么PyPy要比CPython执行速度快呢?

PyPy使用了JIT技术,JIT是解释型和编译型两者的结合,对Python代码进行动态编译(注意不是解释):
  首先让代码解释执行,同时收集信息,在收集到足够信息的时候,将代码动态编译成CPU指令,然后用CPU指令替代解释执行的过程;
因为编译发生在马上要执行之前,所以叫做Just-In-Time Compiler。编译之后速度就是编译执行的速度了,自然比解释执行要快得多,所以运用JIT的PyPy要比CPython快不少。
 

以上是关于解释型语言与编译型语言的主要内容,如果未能解决你的问题,请参考以下文章

编译型语言解释型语言脚本语言之间的区别与联系

解释型语言与编译型语言的区别

编译型与解释型动态语言与静态语言强类型语言与弱类型语言的区别

解释型语言与编译型语言

编译型语言解释型语言静态类型语言动态类型语言概念与区别

编译型语言解释型语言静态类型语言动态类型语言概念 与 区别