解释型 编译型 语言

转载 2012年03月31日 15:03:33
        计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言编写的程序。
  翻译的方式有两种,一个是编译,一个是解释。两种方式只是翻译的时间不同。编译型语言写的程序执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件,比如exe文件,以后要运行的话就不用重新翻译了,直接使用编译的结果就行了(exe文件),因为翻译只做了一次,运行时不需要翻译,所以编译型语言的程序执行效率高。
  解释则不同,解释性语言的程序不需要编译,省了道工序,解释性语言在运行程序的时候才翻译,比如解释性basic语言,专门有一个解释器能够直接执行basic程序,每个语句都是执行的时候才翻译。这样解释性语言每执行一次就要翻译一次,效率比较低。
  编译型与解释型,两者各有利弊。前者由于程序执行速度快,同等条件下对系统要求较低,因此像开发操作系统、大型应用程序、数据库系统等时都采用它,像C/C++、Pascal/Object Pascal(Delphi)、VB等基本都可视为编译语言,而一些网页脚本、服务器脚本及辅助开发接口这样的对速度要求不高、对不同系统平台间的兼容性有一定要求的程序则通常使用解释性语言,如Java、JavaScript、VBScript、Perl、Python、MATLAB 等等。

  但随着硬件的升级和设计思想的变革,编译型和解释型语言越来越笼统,主要体现在一些新兴的高级语言上。

----------------------------------------------------

以上来自 百度百科 说的比较准确, 解释型语言 C#和java有自己的运行时,他们第一次编译成执行文件时编译成字节码,一种中间语言, 对他反编译的到的结果和源代码还是比较相似的, 起码比编译型语言反编译后只能得到汇编代码还原度高的多, 不是说这有多好, 只是想说中间语言只是一个初步的编译,比脚本类运行的更加快速, 在他们运行的时候才进行完全的编译,编译成CPU指令。

解释型语言有他自己的好处,比如稳定性,健壮性更好, 异常处理更加完善,针对不同的CPU进行优化等等, 对于不同的系统使用同一个执行文件即可, 变得只是针对不同系统的运行环境虚拟机, 比如java程序运行于JVM, C#程序运行于CLR (应该是这么对应的吧, .Net Framework 就是运行框架了), 使得一次编译到处运行成为可能(相比编译型必须重新编译并针对系统提供的API修改而言,解释型使用标准类库开发就可以跨平台运行 前提是运行环境足够符合这门语言的标准, 不过也有类似wine的东西存在,使得编译型也可以直接跨平台运行 前提是足够完善的重新封装整个API。。)。

网上有说C#和Java是混合型的, 不过C++.Net 才是最混合的,因为有部分代码是完全编译的,而有部分代码是托管的解释型代码。。

那些脚本类的语言也被分为解释型,不过不完全相同, 他们没有C#和Java类似的第一次编译, 直接由他们的脚本引擎运行那些字符窜组成的代码,比如 JavaScript、VBScript

------------------------------------------------------

  针对每种作业系统、CPU,而提供并测试各自的编译版本,这种做法的可行性很小;开源软体则允许用户自己来编译目的码(object code),这样在跨平台方面更好一些。类似的,那些解释型语言,或者需要虚拟机的语言,也更加符合跨平台的要求,因为用户也要自己进行编译。Sun公司的Java虚拟机Hotspot,只针对几种而不是全部平台,提供编译好的二进位文件。例如,Sun对于GNU/Linux,只支持i386平台,但如果谁在PowerPC或者SPARC电脑上运行Linux,就只好自己编译本地的机器码(machinecode),或者使用第三方软体,才能运行Java程式。

        VB是解释型语言,但是不能跨平台……

------------------------------------------------------

定义:

    编译型语言(compiled language ):把做好的源程序全部编译成二进制代码的可运行程序。然后,可直接运行这个程序。

    解释型语言(interpreted Language ):把做好的源程序翻译一句,然后执行一句,直至结束!

区别:

    编译型语言,执行速度快、效率高;依赖编译器、跨平台性差些。

    解释型语言,执行速度慢、效率低;依赖解释器、跨平台性好。

    个人认为,java是解释型的语言,因为虽然java也需要编译,编译成.class文件,但是并不是机器可以识别的语言,而是字节码,最终还是需要jvm的解释,才能在各个平台执行,这同时也是java跨平台的原因。所以可是说java即是编译型的,也是解释型,但是如果非要归类的话,从概念上的定义,恐怕java应该归到解释型的语言中。

附:

编译型的语言包括:C、C++、Delphi、Pascal、Fortran

解释型的语言包括:Java、Basic、javascript
------------------------------------------------------

    在具体计算机上实现一种语言,首先要确定的是表示该语言语义解释的虚拟计算机,一个关键的问题是程序执行时的基本表示是实际计算机上的机器语言还是虚拟机的机器语言。这个问题决定了语言的实现。根据这个问题的回答,可以将程序设计语言划分为两大类:编译型语言和解释型语言。
编译型语言:
     编译是指在应用源程序执行之前,就将程序源代码“翻译”成目标代码(机器语言),因此其目标程序可以脱离其语言环境独立执行,使用比较方便、效率较高。但应用程序一旦需要修改,必须先修改源代码,再重新编译生成新的目标文件(* .OBJ)才能执行,只有目标文件而没有源代码,修改很不方便。现在大多数的编程语言都是编译型的。编译程序将源程序翻译成目标程序后保存在另一个文件中,该目标程序可脱离编译程序直接在计算机上多次运行。大多数软件产品都是以目标程序形式发行给用户的,不仅便于直接运行,同时又使他人难于盗用其中的技术C、C++、Fortran、Visual Foxpro、Pascal、Delphi、Ada都是编译实现的。
 
解释型语言:
     解释型语言的实现中,翻译器并不产生目标机器代码,而是产生易于执行的中间代码,这种中间代码与机器代码是不同的,中间代码的解释是由软件支持的,不能直接使用硬件,软件解释器通常会导致执行效率较低。用解释型语言编写的程序是由另一个可以理解中间代码的解释程序执行的。与编译程序不同的是,解释程序的任务是逐一将源程序的语句解释成可执行的机器指令,不需要将源程序翻译成目标代码后再执行。释程序的优点是当语句出现语法错误时,可以立即引起程序员注意,而程序员在程序开发期间就能进行校正。对于解释型Basic语言,需要一个专门的解释器解释执行 Basic程序,每条语言只有在执行才被翻译。这种解释型语言每执行一次就翻译一次,因而效率低下。一般地,动态语言都是解释型的,如Tcl、Perl、Ruby、VBScript、 JavaScript等。
混合型:
     Java很特殊,Java程序也需要编译,但是没有直接编译称为机器语言,而是编译称为字节码,然后在Java虚拟机上用解释方式执行字节码。Python 的也采用了类似Java的编译模式,先将Python程序编译成Python字节码,然后由一个专门的Python字节码解释器负责解释执行字节码。(Java虚拟机对字节码的执行相当于模拟一个cpu,而ruby1.8--在虚拟机还未出现前--是通过解释成语法树执行。)

Java、Python分别是解释型还是编译型语言?

python  解释型(函数写在调用前) java   编译型(请求次数多)+解释型(请求次数少) 解释性语言定义: 程序不需要编译,在运行程序的时候才翻译,每个语句都是执行的时候才翻译。这样解释性语...
  • ztf312
  • ztf312
  • 2017年01月03日 18:28
  • 3010

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

解释型语言和编译型语言的区别 首先,我们编程都是用的高级语言(写汇编和机器语言的大牛们除外),计算机不能直接理解高级语言,只能理解和运行机器语言,所以必须要把高级语言翻译成机器语言,计算机才能运行高级...
  • u012875880
  • u012875880
  • 2013年11月24日 17:58
  • 19562

编译型与解释型区别

计算机编程语言种类非常多,根据与计算机硬件贴近程度和抽象程度大致可分为3类,自顶向下分别是  高级语言(抽象层次更高的便于记忆和表示的英文代码)        |        |  汇编...
  • danpi1hao
  • danpi1hao
  • 2017年03月20日 09:28
  • 617

Swift和OC,是编译型语言、解释性语言、运行时语言?

首先需要明确的一点是,什么是编译型语言和解释性语言 编译型语言,就是在其执行过程中需要先将其经过编译成机器码来给计算机识别的,其执行效率就会比较高这个是显而易见的,常见比如:C、C++ 而解释型语...
  • a12041543
  • a12041543
  • 2016年06月14日 17:42
  • 1648

我所理解的Java到底是解释型语言还是编译型语言

关于Java到底是解释型语言还是编译型语言还是二者的集合?首先理解一下何为解释型语言和编译型语言     计算机高级语言类型主要有编译型和解释型两种:     编译型语言:在程序运行之前,有一个单...
  • gaosure
  • gaosure
  • 2017年02月27日 20:55
  • 1152

计算机编程语言的分类,解释型语言、编译型语言、脚本语言的关系

计算机编程语言的分类: 机器语言(二进制代码)汇编语言(面向机器的程序设计语言)高级语言(按转换方式可分为两类:1.编译型语言;  2.解释型语言     ||按照客观系统的描述可分为两类:1....
  • liuchuo
  • liuchuo
  • 2016年07月24日 16:48
  • 2429

通过流程图对比编译型语言,解释型语言以及C#,JAVA的编译流程

对于编译型语言,如果程序由多个源文件组成,还会增加一个链接的过程。简单来讲,编译型语言最大的优势是性能,编译后一步到位,虽然硬件性能越来越强但对于大型软件来讲编译型语言依然是首选。解释型语言的优势是跨...
  • liu_if_else
  • liu_if_else
  • 2016年12月19日 11:07
  • 576

编译型语言、解释型语言与脚本语言三大类型详解

在学习各种高级编程语言的过程中,我们总会遇到一些语言类型的名词,理解这些名词对我们理解高级语言的运行机制有很大帮助! 一、编译型语言 定义:指用专用的编译器,针对特定的操作平台(操作系统)将某种高...
  • zhangliangzi
  • zhangliangzi
  • 2015年12月27日 19:52
  • 5483

编译型语言、解释型语言、脚本语言的区别

计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言编写的程序。把高级语言翻译成机器语言的两种方式:一种是编译,一种是解释。两种方式只是翻译的时...
  • u011026329
  • u011026329
  • 2016年04月11日 10:11
  • 4108

什么是编译型和解释型语言?

讨论:Java 是编译型还是解释型语言? 回答1: 见知乎 郭无心 的回答: 有人说Java是编译型的。因为所有的Java代码都是要编译的,.java不经过编译就无法执行。也有人说Java是解释型...
  • u012195214
  • u012195214
  • 2018年01月12日 17:02
  • 38
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:解释型 编译型 语言
举报原因:
原因补充:

(最多只允许输入30个字)