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

计算机是不能理解高级语言,当然也就不能直接执行高级语言了。计算机只能直接理解机器语言,所以任何语言,都必须将其翻译成机器语言,计算机才能运行高级语言编写的程序。

翻译程序:是一种系统程序,它将计算机编程语言编写的程序翻译成另外一种计算机语言的一般来说等价的程序,主要包括编译程序解释程序汇编程序也被认为是翻译程序。

程序的最初形式称为源程序或者源代码,翻译后的形式被称为目标程序或者目标代码

大多数翻译程序是将高级语言编写的程序翻译为机器语言形式的可执行程序。但是也有些翻译程序将源程序翻译成其他高级语言或者字节码(Java的.class文件)等中间形式。翻译程序不是语言处理程序。

过去对语言的分类有解释型语言和编译型语言之说

什么样的语言称之为解释型语言?   源代码不是直接翻译成机器语言,而是程序在运行时先翻译成中间代码,再由解释器对中间代码进行解释运行。翻译成机器语言,每执行一次都要翻译一次。因此效率比较低。比如Python/JavaScript / Perl /Shell等都是解释型语言。但也不能一概而论,部分解释型语言的解释器通过在运行时动态优化代码,甚至能够使解释型语言的性能超过编译型语言。应用方向:应用于一些网页脚本、服务器脚本及辅助开发接口这样的对速度要求不高、对不同系统平台间的兼容性有一定要求的程序。(跨平台性:Java在编译的时候没有编译成指定CPU类型的汇编代码,也没有和具体操作系统的系统调用相关联,所以编译出来的结果是和CPU,操作系统都不相关的。Java编译出来的是一种字节码,这种字节码必须在Java的虚拟机上才能运行)

什么是编译型语言?  编译型语言:程序在执行之前需要一个专门的编译过程,把程序编译成 为机器语言的文件,运行时不需要重新翻译,直接使用编译的结果就行了。程序执行效率高,依赖编译器,跨平台性差些。如C、C++、Delphi等。应用方向:由于程序执行速度快,同等条件下对系统要求较低,因此像开发操作系统、大型应用程序、数据库系统等时都采用它。

其实,现在用编译型、解释型来分类编程语言已经有点力不从心了。

JAVA的第一道工序是javac编译,当然目标文件是BYTECODE。后续可能有三种处理方式:
1. 运行时,BYTECODE由JVM逐条解释执行,
2. 运行时,部分代码可能由JIT翻译为目标机器指令(以method为翻译单位,将运行频率很高的字节码直接编译为机器指令保存起来,第二次执行就不用翻译了)
3. RTSJ。继JAVAC之后执行AOT二次编译,生成静态的目标平台代码(典型的就是IBM WEBSHPERE REAL TIME)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值