LINUX学习之《解释型语言和编译型语言》

前景提要:

C、C++、JAVA、Python等高级语言的优点:

  1. 编程更容易、代码更紧凑、可读性更强、出错更容易修改;
  2. 可移植的、与平台无关的。

计算机不能直接理解高级语言,只能理解和运行机器语言,所以要把高级语言翻译成机器语言,计算机才能运行高级语言所编写的程序。

将高级语言翻译成机器语言的方式有两种:编译和解释。

关于编译:

编译器对源代码或源文件编译的过程并不执行程序,而是把源代码全部翻译成机器指令(机器语言),再加上一些描述信息,生成一个新的文件,称为可执行文件。

可执行文件可以被操作系统加载运行,而可执行文件编译一次即生成了,所以运行时不再需要编译,因而编译型语言的执行效率相对较高。

编译示意图:

关于解释:

解释型语言编写的程序不需要编译。在运行的时候才翻译,例如Shell程序,在执行的时候,专门有一个解释器能够将其翻译成机器语言,每一行当作一条命令,都是执行的时候才翻译。所以效率相对较低。

所以编译和解释:

在执行效率上:两种转换为机器指令的方式,最大不同之处是处理转换为机器指令(编译)的时机不同。

  • 编译型语言是在运行前编译,且只需编译一次,并生成一个可执行文件,每次运行该可执行文件执行即可,效率相对较高。
  • 解释型语言是在运行时进行解释,并不生成可执行文件,所以每次运行都需要进行解释,然后再执行,效率相对较低。

在平台无关性上:

  • 编译型语言在编译后生成的可执行文件,是相对于本机机器指令集的,所生成的可执行文件移植到不同机器指令集的机器上,不一定能正常运行。
  • 解释型语言,尽管在不同配置的机器上,也最终会解释成基于当前机器指令集的机器码并执行。
  • 因此解释型语言的可移植性相对来说强于编译型语言的。

对于编译和解释相结合的方式:

Java、Python等编程语言采用这一方式,称为编译型-解释型语言,同时具备编译特性和解释特性。以Python为例,程序员写的源代码.py文件首先被编译成.pyc文件,称为字节码,然后字节码被Python虚拟机执行。字节码是Python虚拟机的指令而非机器指令,所以它是与平台无关的。如果把字节码文件从一种平台复制到另一种平台,只要另一种平台也安装了Python虚拟机,即可运行这个字节码文件。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值