编译与解释的区别

博主今年大三,学校开展了《编译原理》这门课,而老师提的第一个问题便是编译与解释的区别,下面我将会说说自己的看法。

首先我们要知道市面上大致上是有两种类型的语言的:静态语言与动态语言。

静态语言:C/C++,JAVA,C#等等;动态语言:Javascript,Python等等

而静态语言之所以是静态的正是应为它的源文件是需要使用编译器将源程序文件翻译成二进制文件。

我们拿JAVA举例,java是一门典型的强类型静态语言。首先,我们在One.java文件中编写一段程序如下

package com.mao.analyze;

public class One {
    public static void main(String args[]){
        System.out.println("Hello world");
    }
}

在我们编写下列代码后,在终端中输入javac One.java 命令,这条命令就是使用java编译器对One.java(源程序)进行编译,结束后生成字节码文件One.class而后使用java One指令执行该文件(通过jvm进行解释执行),便会在终端中输出Hello world字符串了。并且,为了更快的完成输入到输出的处理,有些被称为即时编译器(JIT)的JAVA编译器在运行中程序处理输入的前一刻首先把字节码翻译成机器语言,然后执行程序。

上述就是JAVA从编译到执行的过程,我们可以得出编译是需要先生成目标文件才可以执行的,接下来我们讨论以下解释型语言的处理过程。

首先,我们在One.py中编写一段程序如下

if __name__ == ‘__main__‘:
    print("Hello world")

在我们编写下列代码后,我们在终端中输入python One.py指令,会发现终端中会直接显示Hello world字符串,并没有编译Java所需要的步骤。这就是解释执行,也就是说解释程序是在我们执行的过程中对程序段进行翻译的,执行到哪翻译到哪。

上述就是Python解释执行程序的过程,我们可以得出解释是不需要生成目标文件的,我们可以直接运行该文件,而不需要进行任何中间过程。

根据上述对编译执行的语言和解释执行的语言的描述,我们可以得出以下结论:

1. 编译执行的语言由于需要先生成目标程序,所以启动较慢。

2. 编译生成目标文件后由于是二进制文件可由计算机直接执行(java语言还需要jvm),所以执行速度较快。

3. 解释执行的语言不需要生成目标程序,所以启动速度相对较快(程序大了也不见得如此)。

4. 解释语言在运行程序的过程中需要不停的翻译程序段,所以执行的速度会略慢于编译执行的语言。

好了,以上就是我对编译和解释的区别的比较简单的理解;如有错误还望斧正,谢谢。

原文地址:https://www.cnblogs.com/maoqifansBlog/p/12332786.html

时间: 2024-10-19 04:26:10

编译与解释的区别的相关文章

编译和解释的区别

而解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行的快的. 这是因为计算机不能直接认识并执行我们写的语句,它只能认识机器语言(是二进制的形式) 查看原文 原文地址:https://www.cnblogs.com/SakuraYuanYuan/p/10308375.html

程序的编译与解释之间的区别

个人觉得:取决于你怎么解读这个问题. 传统意义对比: 传统意义上的所谓编译与解释,区别在于代码是在什么时候被翻译成目标CPU的指令.——虽然这种解释从科学上说不通,但这却是一直以来大家更认可的更约定俗成的定义. 对 C 语言或者其他编译型语言来说,编译生成了目标文件,而这个目标文件是针对特定的 CPU 体系的,为 ARM 生成的目标文件,不能被用于 MIPS 的 CPU.这段代码在编译过程中就已经被翻译成了目标 CPU 指令,所以,如果这个程序需要在另外一种 CPU 上面运行,这个代码就必须重新

编译型和解释型的区别&&Java从编译到执行的过程

借鉴: 1  http://www.cnblogs.com/bluestorm/archive/2012/12/09/2810167.html           区别 2  http://blog.jobbole.com/53152/       编译的过程 3  http://jingyan.baidu.com/article/b24f6c82de6bcf86bfe5dad4.html          Java从编译到执行的过程(完整) Java编译-下载-解释-执行的过程: 在Java编

编译型和解析型区别

先看看编译型,其实它和汇编语言是一样的:也是有一个负责翻译的程序来对我们的源代码进行转换,生成相对应的可执行代码.这个过程说得 专业一点,就称为编译(Compile),而负责编译的程序自然就称为编译器(Compiler).如果我们写的程序代码都包含在一个源文件中,那么通常 编译之后就会直接生成一个可执行文件,我们就可以直接运行了.但对于一个比较复杂的项目,为了方便管理,我们通常把代码分散在各个源文件中,作为不同的模 块来组织.这时编译各个文件时就会生成目标文件(Object   file)而不是

解释性语言和编译性语言的区别

解释性语言和编译性语言的区别 计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言编写的程序. 翻译的方式有两种,一个是编译,一个是解释.两种方式只是翻译的时间不同. 编译性语言 编译型语言写的程序执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件,比如exe文件,以后要运行的话就不用重新翻译了,直接使用编译的结果就行了(exe文件),因为翻译只做了一次,运行时不需要翻译,所以编译型语言的程序执行效率高. 解释性语言 解释则不同

VS中的Debug 和 Release 编译方式的本质区别

VS中的Debug 和 Release 编译方式的本质区别 Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序.Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用. Debug 和 Release 的真正秘密,在于一组编译选项.下面列出了分别针对二者的选项(当然除此之外还有其他一些,如/Fd /Fo,但区别并不重要,通常他们也不会引起 Release 版错误,在此不讨论) 以下参数均是在project

编译和解释的区别是什么?

编译器是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快; 而解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行的快的. 这是因为计算机不能直接认识并执行我们写的语句,它只能认识机器语言(是二进制的形式) 一.低级语言与高级语言最初的计算机程序都是用0和1的序列表示的,程序员直接使用的是机器指令,无需翻译,从纸带打孔输入即可执行得到结果.后来为了方便记忆,就将用0.1序列表示的机

也谈编译 VS 解释

语言发展 计算机的硬件仅仅能识别0和1组成的机器指令,而机器指令是最主要的计算机语言,可是我们平时进行程序设计时肯定不会用机器语言来编程,由于用它的效率低.更让人难以理解. 因此聪明的人类发明了汇编语言.它使用符号来表示指令,比如用ADD表示加法.这就easy理解了.可是汇编语言和机器语言十分接近,其书写取决于机器指令,因此它还是一种面向机器的语言.所以称它为低级语言. 对应的,又在此基础上,开发出了功能更强.抽象更高的面向各类应用的程序语言.称为高级语言.比如VB,C++,C#,Java等,大

百科知识 Win7关于Beta、RC、RTM、MSDN、OEM、RTL的名词解释及区别

[交流] (新手导航系列贴)WIN7关于Beta.RC.RTM.MSDN.OEM.RTL的名词解释及区别 ??? ?? ???windows7我们已经关注很多了,从preview(预览版)-Milestone 1到3到beta到现在临近RC版,很多人在关注,我也不例外,但是我们天天喊RC.RC,到底有多少人清楚知道什么叫做RC呢?至少我是属于糊里糊涂那种的.为了搞清楚RC.RTM的区别,我特地查找了一些资料,现在在此说说,也算是一种总结吧.? ? 经常关注一些软件发布情况的人对beta,rc应该