美文网首页PHP经验分享程序员
如何理解编译型语言、解释型语言?

如何理解编译型语言、解释型语言?

作者: 陈钢镚学财 | 来源:发表于2018-11-30 11:44 被阅读14次

编译型和解释型在平时开发业务逻辑的时候,基本上用不到。
但对他们有一个稍微深入的了解,还是有所必要的,毕竟这是一种基础知识和概念。

基础知识是底层支撑,虽然很少运用在具体事情上,但能够塑造帮助我们对计算机领域的思维结构。

编译型

编译型语言所开发的程序,需要通过编译器(compiler)将源代码转换为机器码后才能运行。

编译通常分为两个步骤:

  • compile
    编译:将源代码转换为机器码
  • linker
    链接(打包):当源代码、资源等文件比较多时,将多个文件打包在一个执行文件中。

编译型语言所开发程序,一旦发生更改,整个模块甚至整个项目就需要重新编译,并根据不同的环境和平台编译出不同平台的执行文件,这给开发人员调试、发布都会带来一些麻烦。

常见编译语言有:c、c++、oc、swift

解释型

解释型语言所开发的程序,会在运行过程中(runtime)通过解释器一边将源文件转换为执行码,一边执行,也就是逐行翻译。

解释器可以称之为虚拟机,比如java的虚拟机jvm。

解释型语言也可以分两种:

  • 半编译半解释

Java属于半编译半解释,它将源代码转换成中间码才能被jvm(java虚拟机)运行。
所谓一次编译,到处运行,是指在编译和运行中间,多了一个jvm这个抽象层。
中间码依赖jvm,而不依赖于平台(操作系统),只要jvm支持中间码,中间就能运行,不同平台的兼容性,就由jvm来解决,开发者可以专注于开发业务逻辑,这解决了编译语言的跨平台问题。

但如果你代码发生了改变,仍然需要再次编译。

  • 完全解释

Php是完全解释,它‘一次编译’都省了,直接由解释器加载源代码,就开始逐行翻译并运行。
那么,调试程序的时候,更改代码就能直接再次运行,不存在编译的步骤,它在跨平台的基础上,又为开发调试提供了便利。
但这不一定是好事,这将导致php每一次运行,都需要先解释,再执行,运行效率上比不上java的直接由jvm运行中间码。

当然,java半编译半解释,虽然通过jvm解决了跨平台问题,但运行效率上,也是比不上编译型语言的,因为编译型语言开发的程序运行时,计算机只需要关注程序本身的流程就好了,但java,jvm也是对计算机资源的一种开销,不过这种开销非常小,几乎可以忽略。

注意

最后,有一个注意点要特别关注一下。

完全解释的语言,因为它是按读取顺序解释代码的,所以,当你在使用某个函数的时候,一定要考虑到它是不是已经存在了。

比如,php就是完全解释语言,当你把函数a定义在function.php中,而你在index.php中调用了a函数,一定要确保在调用a函数之前,就已经将function.php引入,否则会报找不到函数的错误。

javascript也是这样,一个例子就是jquery和jquery插件,所以jquery必须在jquery插件之前被引入。

相关文章

  • JavaScript之解释型语言与编译型语言

    概览 JavaScript是一门解释型的编译语言。 内容 解释型语言 vs 编译型语言 解释型语言与编译型语言的本...

  • js设计原理

    js是解释型语言 语言分编译型和解释型语言 解释器和编译器

  • 如何理解编译型语言、解释型语言?

    编译型和解释型在平时开发业务逻辑的时候,基本上用不到。但对他们有一个稍微深入的了解,还是有所必要的,毕竟这是一种基...

  • JavaScript编译原理与内存管理

    编译原理 编译还是解释? 编程语言分为编译型语言和解释型语言两种,编译型语言的源代码在执行之前要进行完全编译,例如...

  • iOS编译原理

    主要内容: 理解C、C++以及OC的关系 编译型语言与解释型语言 编译器LLVM与CLang 理解iOS编译流程 ...

  • V8 工作原理

    编译器和解释器 按语言的执行流程,可以把语言划分为编译型语言和解释型语言。 编译型语言在程序执行之前,需要经过编译...

  • 编译型语言和解释型语言

    编译型语言和解释型语言是相对存在的。 编译型语言: 与汇编语言类似,编译型语言的首先将源代码编译生成机器语言,再由...

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

    转载自:解释型语言和编译型语言的区别 解释型语言和编译型语言的区别 首先,我们编程都是用的高级语言(写汇编和机器语...

  • 菜鸟Python(1)

    Python 是解释型语言 java 是编译型语言 解释型语言,发布相当等于公布源码. 解释型语言,运行时间长 编...

  • 编程语言

    编译型语言和解释型语言 高级语言—>机器语言(必须经过翻译)翻译的方式有两种:编译和解释 编译型语言是把代码直接翻...

网友评论

    本文标题:如何理解编译型语言、解释型语言?

    本文链接:https://www.haomeiwen.com/subject/ysoccqtx.html