什么是编译型语言和解释型语言和他们的优缺点及为什么解释型语言可以跨平台而编译型语言不行

1 编译型语言和解释型语言的含义

     大家都知道,代码语言级别主要有机器语言、汇编语言、和高级语言。而高级语言主要又分为编译型语言和解释型语言,下面我们主要讨论这两种语言的含义。

      编译型语言指使用专门的编译器,针对特定的平台(操作系统)将高级语言源码一次性“翻译”成可被该平台执行的机器码(包括机器指令和操作数),并包装成该平台所能识别的可执行性程序的格式。需要注意的两点分别是:编译是在运行这个程序内容以前,一次性的编译成这个平台可执行的程序文件;编译生成可执行程序是已经和编译器没有任何关系了,可以在特定的平台上独立运行。

     解释型语言指使用专门的解释器对源程序逐行解释成特定平台上的机器码并立即执行的语言,解释性语言通常不会进行整体性的编译和链接处理。需要注意的是,解释型语言是在运行程序过程中进行逐条解释,因此解释性语言每次运行都要进行编译,效率比较低,不能独立于平台独立运行。

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

      编译型语言因为一次编译,便可独立于平台运行,因此编译型语言最大的优点就是运行效率高,节省内存。因为其对平台依赖性较强,因此缺点不适合写跨平台的web开发。

      解释型语言相反因为每次运行都要运行,所以缺点是占用内存较大,运行效率较低。优点便于跨平台开发程序。

      总之,他们核心区别就是对平台的依赖性和自身的运行效率,其他有缺点都是基于这两点上的不同。

3 跨平台性

      对于解释型语言跨平台而编译型语言不能跨平台,本人查过很多解释,网上基本在讲什么编译器需依靠平台,而解释型语言依靠不同平台的解释器就可以实现跨平台,我就是想如果在不同平台上装对应的编译器,不也可以实现跨平台吗。最终,经过对老师的询问和进一步查资料才有了进一步的理解。

     首先,其实说编译型语言不能跨平台其实不准确或者就是错误理解。其实编译型语言比如c语言也是跨平台语言,理论上,在不同平台装上对应的编译器就可以实现跨平台。但是编译型语言虽然是高级语言,却与平台联系比较紧密(操作系统都是用编译型语言编写的),因此针对不同平台(操作系统)可能有其特定的编写规则,放到其他平台上面,自然编译执行不了。比如,在Windows用c写了调用Windows的API(只在windows系统使用)的程序,在Linux系统的编译器上编译自然会出错。如果能避免这些特殊的使用,编译型语言就可以跨平台了。而对于解释型语言就不存在这个问题,解释型语言先天就和平台联系很少,所以,用解释型语言写出来的一份同样的程序,只要通过不同的解释器解释,就可以在对应不同的平台上使用。

补充:

常见的编译型语言有:C、C++、FORTRAN、Pascal

常见的解释型语言有:Ruby、Python

而Java既不是纯粹的解释型语言,也不是纯粹的编译型语言,因为它先编译形成与平台无关的字节码,再使用java解释器(JVMjava虚拟机)来解释执行。

 

本人现在正在努力学习JAVA语言中,以后会经常出一些学习博客,欢迎大家一起学习讨论,相互进步。

 

 

  • 13
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值