PHP经验分享程序员

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

2018-11-30  本文已影响14人  陈钢镚学财

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

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

编译型

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

编译通常分为两个步骤:

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

常见编译语言有: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插件之前被引入。

上一篇下一篇

猜你喜欢

热点阅读