解释型语言与编译型语言

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

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快不少。

备注:转自【灵剑】 https://www.zhihu.com/question/19588346/answer/130393688


时间: 2024-08-10 15:09:37

解释型语言与编译型语言的相关文章

解释型语言和编译型语言如何交互?以lua和c为例

转自http://my.oschina.net/mayqlzu/blog/113528 问题: 最近lua很火,因为<愤怒的小鸟>使用了lua,ios上有lua解释器?它是怎么嵌入大ios中的呢?lua的官网说:"lua is an embeddable scripting language",怎么理解呢?怎么在你自己的程序里嵌入lua解释器呢?如果可以在我的程序中嵌入了lua,那是否意味着我可以从此用lua编程了呢? 带着这些问题,打算在我的windows笔记本上做个实验

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

编译型语言在程序执行之前,有一个单独的编译过程,将程序翻译成机器语言,以后执行这个程序的时候,就不用再进行翻译了. 解释型语言,是在运行的时候将程序翻译成机器语言,所以运行速度相对于编译型语言要慢. C/C++ 等都是编译型语言,而Java,C#等都是解释型语言. 虽然Java程序在运行之前也有一个编译过程,但是并不是将程序编译成机器语言,而是将它编译成字节码(可以理解为一个中间语言).在运行的时候,由JVM将字节码再翻译成机器语言.注:脚本语言一般都有相应的脚本引擎来解释执行. 他们一般需要解

解释型语言和编译型语言

解释型语言就是在机器执行之前没有编译成机器语言,是边执行边解释为机器语言的,比如Java.php.Perl.shell.C#等,当然Java和C#先要编译为中间行.class字节文件和il文件,然后有JVM和..去解释有机器执行,如PHP的解释器为PHP,fastcgi只是管理PHP的,后期和PHP融合了. 编译型语言:即有源代码直接编译为机器语言如.exe文件,和Linux的源代码安装软件等都是编译型语言的情形!

python——静态语言、动态语言、强类型语言、弱类型语言、脚本语言、解释型语言、编译型语言

静态语言 在编写代码时,必须为变量指定一个明确类型的语言.比如Java.C/C++ 动态语言 在编写代码时,不必为变量指定一个明确的类型,而是由解释器在运行时根据变量的使用情况确定变量的类型.比如python.javascript #python的动态特性 m = 10; m = 'hello' print m #print 'hello' 强类型语言 变量必须有一个确定的类型.比如Java.C/C++.python 弱类型语言 在运行时,变量不必按它原来的类型使用,可以当做其他类型来使用,比如

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

计算机是不能理解除了机器语言以外的任何语言所以必须要把程序员所写的程序语言都翻译成机器语言才能执行程序.程序语言翻译成机器语言的工具,叫做翻译器. 编程语言  ————> 翻译器  ————> 计算机语言(二进制) 翻译器翻译的方式有两种:一是 编译,二是 翻译.两种方式之间对区别在于翻译的时间点不同. 编译器:是在代码执行之前进行编译,生成中间代码文件 解释器:是在运行时进行及时解释,并立即执行(当编译器以解释方式运行的时候,也称之为解释器) 举个栗子: 编译型语言:就像是请客的时候要先把所

解释型语言VS编译型语言

前言 计算机不能直接理解除机器语言以外的语言,所以只有把程序员编写的程序翻译成机器语言,计算机才能够执行程序. 将其他语言翻译成机器语言的工具,被称之为:编译器. 编译器的翻译方式有两种:编译和解释.两种方式之间的区别在与翻译的时间点不同.当编译器以解释方式运行的时候,也称之为解释器. 解释型语言 解释型语言(Interpreted language)是一种编程语言.这种类型的编程语言,会将代码一句一句直接运行,不需要像编译语言一样,经过编译器先编译为机器代码,之后再运行. 这种语言需要利用解释

0100 解释型语言和编译型语言

9.1 概述 计算机不能直接理解任何除机器语言以外的语言,所以必须要把程序员所写的程序语言翻译成机器语言才能执行程序.程序语言翻译成机器语言的工具,被称为翻译器. 翻译器翻译的方式有两种:一个是编译,另外一个是解释.两种方式之间的区别在于翻译的时间点不同. 编译器是在代码执行之前进行编译,生成中间代码文件. 解释器是在运行时进行及时解释,并立即执行(当编译器以解释方式运行的时候,也称之为解释器). 9.2 执行过程 类似于请客吃饭: 编译语言:首先把所有菜做好,才能上桌吃饭 解释语言:好比吃火锅

编译型语言与解释型语言

参考:http://jingyan.baidu.com/article/656db918ede71ee381249c05.html##1 计算机是不能理解高级语言的,更不能直接执行高级语言,它只能直接理解机器语言,所以使用任何高级语言编写的程序若想被计算机运行,都必须将其转换成计算机语言,也就是机器码. 而这种转换的方式有两种: 1)编译 2)解释 由此高级语言也分为编译型语言和解释型语言. 编译型语言: 使用专门的编译器,针对特定的平台,将高级语言源代码一次性的编译成可被该平台硬件执行的机器码

Shell脚本语言与编译型语言的差异

大体上,可以将程序设计语言可以分为两类:编译型语言和解释型语言. 编译型语言 很多传统的程序设计语言,例如Fortran.Ada.Pascal.C.C++和Java,都是编译型语言.这类语言需要预先将我们写好的源代码(source code)转换成目标代码(object code),这个过程被称作“编译”. 运行程序时,直接读取目标代码(object code).由于编译后的目标代码(object code)非常接近计算机底层,因此执行效率很高,这是编译型语言的优点. 但是,由于编译型语言多半运