解释器和编译器的区别

http://blog.csdn.net/xuqiaobo/article/details/52534947

解释器和编译器两者各有优势:当程序需要迅速启动和执行的时候,解释器可以首先发挥作用,省去编译的时间,立即执行。在程序运行后,随着时间的推移,编译器逐渐发挥作用,把越来越多的代码编译成本地代码之后,可以获得更高的执行效率。当程序运行环境内存资源限制较大,可以使用解释器节约内存,反之可以使用编译执行来提升效率。同时,解释器还可以作为编译器激进优化时的一个逃生门,让编译器根据概率选择一些大多数时候都能够提醒运行速度的优化手段,当激进优化的假设不成立时,可以通过逆优化退回到解释状态继续执行。

时间: 2024-08-29 01:56:28

解释器和编译器的区别的相关文章

在C,C++,java和python运行时解释器和编译器的区别

在这四种语言里有两种不同的程序运行过程: 1.  高级语言-> 机器代码: C和C++的编译过程有几个步骤: > 预编译: 将.c 文件转化成 .i文件),使用的gcc命令是:gcc –E,对应于预处理命令cpp > 编译: 将.c/.h文件转换成.s文件, 使用的gcc命令是:gcc –S, 对应于编译命令 cc –S > 汇编:将.s 文件转化成 .o文件,使用的gcc 命令是:gcc –c,对应于汇编命令是 as > 链接:将.o文件转化成可执行程序,使用的gcc 命令

儿子和女儿——解释器和编译器的区别与联系

https://www.cnblogs.com/sword03/archive/2010/06/27/1766147.html 菜鸟经常将编译器和解释器弄混淆,无奈之下,于是向高手请教. 高手说: “ 解释器是一条一条的解释执行源语言.比如php,postscritp,javascript就是典型的解释性语言. 编译器是把源代码整个编译成目标代码,执行时不在需要编译器,直接在支持目标代码的平台上运行,这样执行效率比解释执行快很多.比如C语言代码被编译成二进制代码(exe程序),在windows平

解释器和编译器,编译型原理和解释型原理

解释器: 解释器(英语:Interpreter),又译为直译器,是一种电脑程序,能够把高级编程语言一行一行直接转译运行.解释器不会一次把整个程序转译出来,只像一位“中间人”,每次运行程序时都要先转成另一种语言再作运行,因此解释器的程序运行速度比较缓慢.它每转译一行程序叙述就立刻运行,然后再转译下一行,再运行,如此不停地进行下去. 解释器运行程序的方法有: 1.直接运行高级编程语言 (如 Shell 自带的解释器) 2.转换高级编程语言码到一些有效率的字节码 (Bytecode),并运行这些字节码

ios开发 解释器和编译器

儿子和女儿——解释器和编译器的区别与联系 菜鸟经常将编译器和解释器弄混淆,无奈之下,于是向高手请教. 高手说: “ 解释器是一条一条的解释执行源语言.比如php,postscritp,javascript就是典型的解释性语言. 编译器是把源代码整个编译成目标代码,执行时不在需要编译器,直接在支持目标代码的平台上运行,这样执行效率比解释执行快很多.比如C语言代码被编译成二进制代码(exe程序),在windows平台上执行. ” 菜鸟说:“我还是不明白,能给个形象的比喻么?” 高手说:“给你讲个故事

用VC编译lua源码,生成lua语言的解释器和编译器

用VC编译lua源码,生成lua语言的解释器和编译器 1.去网址下载源码 http://www.lua.org/download.html 2.装一个VC++,我用的是VC6.0 3.接下来我们开始编译源码,我们需要编译: 一个静态库 一个动态库 一个lua语言解释器 一个lua编译器 建立一个工静态库工程 打开VC-->文件-->(点击)新建--(弹出框中选择)工程-->(win32 static library) 创一个空的工程 工程名为luaLib 把lua中所有的源码添加,去掉其

解释器与编译器 (收集)

1. 在具体计算机上实现一种语言,首先要确定的是表示该语言语义解释的虚拟计算机,一个关键的问题是程序执行时的基本表示是实际计算机上的机器语言还是虚拟机的机器语言.这个问题决定了语言的实现.根据这个问题的回答,可以将程序设计语言划分为两大类:编译型语言和解释型语言. 2. 由编译型语言编写的源程序需要经过编译.汇编和链接才能输出目标代码,然后机器执行目标代码,得出运行结果,目标代码由机器指令组成,一般不能独立运行,因为源程序中可能使用了某些汇编程序不能解释引用的库函数,而库函数代码又不在源程序中,

[编译原理]用BDD方式开发lisp解释器(编译器)|开发语言java|Groovy|Spock

lisp是一门简单又强大的语言,其语法极其简单: (+ 1 2 ) 上面的意思 是:+是方法或函数,1 ,2 是参数,fn=1+2,即对1,2进行相加求值,结果是:3 双括号用来提醒解释器开始和结束. 之前在iteye写过一篇文章来简单介绍怎么写lisp的解释器: http://gyc567.iteye.com/blog/2242960 同时也画了一张草图来说明: 因为lexer(词法分析器)主要工作就是把程序的字符串表达式转化为tokens.(Pair),以下是百科对词法分析的说明: 词法分析

Linux运行c++程序gcc编译器和g++编译器的区别

gcc编译器和g++编译器在编译时都要经过这三个步骤:1.预处理生成.i文件 2.预处理后转换为汇编生成.s文件 3.汇编转化为机器码生成可执行的.o文件 4.连接生成可执行文件 但是在gcc编译器中,是不能直接连接c++库的,所以在链接过程中会出错,只要在链接命令后面加上一个"-lstdc++"即可实现.. gcc和g++都可以编译c和c++代码,.c文件g++会把其当做c++文件,而.cpp文件,两者都会识别为c++文件,编译阶段g++会调用gcc.但是gcc不能和c++程序的库相

解释器与编译器

http://blog.chinaunix.net/uid-22363424-id-113275.html 1. 在具体计算机上实现一种语言,首先要确定的是表示该语言语义解释的虚拟计算机,一个关键的问题是程序执行时的基本表示是实际计算机上的机器语言还是虚拟机的机器语言.这个问题决定了语言的实现.根据这个问题的回答,可以将程序设计语言划分为两大类:编译型语言和解释型语言. 2. 由编译型语言编写的源程序需要经过编译.汇编和链接才能输出目标代码,然后机器执行目标代码,得出运行结果,目标代码由机器指令