`

编译型和解释型区别

 
阅读更多

编译型和解释型

概念

计算机不能直接的理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言的编写的程序。翻译的方式有两种,一个是编译,一个是解释。两种方式只是翻译的时间不同。

 

特征

解释型语言:

解释性语言是指它常用的执行机制是使用一个“解释器”来执行,解释器对于程序是一句一句“翻译”成机器语言来一句一句执行,例如shell脚本语言。

 

编译型语言:

编译型语言是指它常用的执行机制是使用一个“编译器”来编译成机器语言,然后你就可以直接运行(执行)这个编译成的“可执行文件”。例如C语言你也可以为解释性语言(如shell脚本语言)写个编译器来编译,这样它就成了“编译语言”

 

区别

不管是解释性语言还是编译型都可编译或解释,前提是有这样的编译器或解释器(比如你自己写一个),找不到这样的编译器你当然不能编译对于语言本身来说,各种编程语言本质没什么不同。所谓的“解释性”和“编译”指的是执行机制上的不同。

 

解释性语言和编译型语言的优缺点

编译型语言:

 

编译型语言最大的优势之一就是其执行速度。用C/C++编写的程序运行速度要比用Java编写的相同程序快30%-70%。

编译型程序比解释型程序消耗的内存更少。

不利的一面——编译器比解释器要难写得多。

编译器在调试程序时提供不了多少帮助——有多少次在你的C语言代码中遇到一个“空指针异常”时,需要花费好几个小时来明确错误到底在代码中的什么位置。

可执行的编译型代码要比相同的解释型代码大许多。例如,C/C++的.exe文件要比同样功能的Java的.class文件大很多。

编译型程序是面向特定平台的因而是平台依赖的。

编译型程序不支持代码中实现安全性——例如,一个编译型的程序可以访问内存的任何区域,并且可以对你的PC做它想做的任何事情(大部分病毒是使用编译型语言编写的)

由于松散的安全性和平台依赖性,编译型语言不太适合开发因特网或者基于Web的应用。

解释型语言:

 

解释型语言提供了极佳的调试支持。一名Java程序员只需要几分钟就可以定位并修复一个“空指针异常”,因为Java运行环境不仅指明了异常的性质,而且给出了异常发生位置具体的行号和函数调用顺序(著名的堆栈跟踪信息)。这样的便利是编译型语言所无法提供的。

另一个优势是解释器比编译器容易实现

解释型语言最大的优势之一是其平台独立性

解释型语言也可以保证高度的安全性——这是互联网应用迫切需要的

中间语言代码的大小比编译型可执行代码小很多

平台独立性,以及严密的安全性是使解释型语言成为适合互联网和Web应用的理想语言的2个最重要的因素。

解释型语言存在一些严重的缺点。解释型应用占用更多的内存和CPU资源。这是由于,为了运行解释型语言编写的程序,相关的解释器必须首先运行。解释器是复杂的,智能的,大量消耗资源的程序并且它们会占用很多CPU周期和内存。

由于解释型应用的decode-fetch-execute(解码-抓取-执行)的周期,它们比编译型程序慢很多。

解释器也会做很多代码优化,运行时安全性检查;这些额外的步骤占用了更多的资源并进一步降低了应用的运行速度。

 

分享到:
评论

相关推荐

    编译性语言、解释性语言和脚本语言

    然而,编译型语言的缺点在于需要预编译步骤,对开发环境和目标平台的依赖性强,且编译后的程序体积通常较大。 解释性语言,如Python、Ruby和Perl,它们的源代码在运行时逐行被解释器解析并执行,不需要预先生成可...

    编译执行和解释执行的区别

    是有关于编译执行和解释执行的区别,适用于想了解这两种编译方式的区别的同学看一下

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

    “应聘电脑工程师.docx”则直接指向了IT领域的特定职位,可能包含应聘者对编译语言和解释语言的理解及其应用经验。 总的来说,理解解释语言和编译语言的区别有助于我们更好地选择和使用编程工具,从而提高开发效率...

    Fluent UDF【8】_编译型UDF.pdf

    此名称可以区分解释型 UDF 和编译型 UDF。 在加载 UDF 库时写入您的 Case 文件,则库将与 Case 文件一起保存,并在之后读取该 Case 文件时自动加载。这种“动态加载”过程可以节省用户每次运行模拟时重新加载编译库...

    cpp-Los是一个cc语言编译型的虚拟机

    《深入理解cpp-Los:基于C/C++的编译型虚拟机》 cpp-Los,全称为Los,是一款专为C/C++语言设计的编译型虚拟机。它结合了现代编程语言的强大功能与虚拟机的高效执行能力,旨在提供一个高性能、灵活且易于扩展的运行...

    Java是解释型语言还是编译型语言

     对于C和C++,它们经过一次编译之后,可以由操作系统直接执行,所以它们是编译型语言。而Java不一样,它首先由编译器编译成.class(字节码)文件,然后在通过JVM从.class文件中读一行解释执行一行,所以它是解释型...

    Python之编译型语言和解释型语言

    Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言,随着版本的不断更新和语言新功能的添加,逐渐被用于独立的、大型项目的开发。 Python解释器易于扩展,可以使用...

    编译原理期中测试

    编译程序的工作情况有三种:汇编型、解释型和编译型。汇编型编译程序用来 将汇编语言编写的程序,按照一一对应的关系,转换成用机器语言表示的程序。 解释型编译程序将高级语言程序的一个语句,先解释成为一组机器...

    编译型or解释型?Python运行机制浅析

    Python语言的运行机制既包含了编译型语言的特点,也具有解释型语言的特性。通常,Python被认为是解释型语言,因为它不需要像C语言那样先编译再运行,而是直接由Python解释器执行源代码。然而,这并不意味着Python...

    编译和解释的区别是什么

    此外,根据程序设计语言执行时的基本表示形式,可将其划分为编译型语言和解释型语言。编译型语言如C、C++等,会经历完整的编译过程,最终形成可执行文件;而解释型语言如JavaScript、Python则需要解释器随时处理源...

    关于编程语言的思考—编译型和解释型

    在编程世界中,有两种主要的程序执行模型:编译型和解释型。这两种模型的核心区别在于它们处理源代码的方式。 编译型语言如C、C++、Java(JVM编译后的字节码)在执行前会将源代码转换成目标机器的机器代码。这个...

    编译型PLC Modbus协议的研究与实现.pdf

    根据PLC程序的执行方式,PLC分为编译型和解释型两种。编译型PLC的特点在于其程序一旦被编写并编译后,直接在控制器上运行,不需要额外的解释过程,这使得它在执行效率上具有优势,但同时开发难度较大。而解释型PLC则...

    IBM-PC机编译型 PROLOG语言

    7. **编译与解释**:IBM-PC机编译型 PROLOG支持编译和解释两种执行方式。编译后的程序运行速度更快,而解释模式便于调试和理解程序运行过程。 8. **程序设计**:在IBM-PC机上编写PROLOG程序,需要了解如何组织规则...

    keil软件编译常见错误解释总结和中文翻译

    本文将总结和解释 Keil 软件编译常见错误,并提供中文翻译。 L15 重复调用 WARNING L15 重复调用 WARNING 表示连接器发现有一个函数可能会被主函数和一个中断服务程序(或者调用中断服务程序的函数)同时调用,...

    LabVIEW 是编译型语言还是解释型语言-综合文档

    首先,我们要明确编译型语言和解释型语言的基本概念。编译型语言的源代码在运行之前需要通过编译器转换为机器码,这个过程叫做编译。编译后的程序可以直接由计算机执行,通常运行速度快,但需要先编译才能运行。而...

    编译型PLC的设计与实现

    而传统的编译型PLC虽然执行效率高,但是移植性差。基于这种情况,该文提出一种先把指令表语言编译为C语言,再编译C代码的方案。而且,主函数和功能函数分开编译并烧录在flash的不同地址块,能够有效节省编译、烧录...

    Visual Basic程序反编译

    现代编程语言可以分为两大类:解释型语言和编译型语言。这两种类型的语言在执行方式上有本质的区别。 - **解释型语言**:这类语言的程序代码在执行时由解释器逐行读取并立即执行,无需预先编译成机器码。这种方式...

    程序编译与解释.pdf

    - 编译和解释是将高级语言转换为机器语言的两种主要方法。 - 编译型语言适合对性能要求较高的场景;解释型语言则更利于快速开发和部署。 - 脚本语言作为一种特殊的解释型语言,广泛应用于Web开发等领域。 - Java语言...

    编译型PLC运行系统的设计与实现

    pac plc 编译型PLC运行系统的设计与实现

    编译型_解释型_强类型_弱类型_脚本.txt

    自己网上总结的,大部分是自己从网上搜索总结,当然有些非常好的就直接复制粘贴,因为查询太多的文章,这里就不写出参考文章地址了,使用EditPlus观看更佳,记事本就没有好格式了

Global site tag (gtag.js) - Google Analytics