首頁  >  問答  >  主體

PHP是解释型语言还是编译型语言

PHP是解释型语言吗?使用APC之后呢?

黄舟黄舟2772 天前1688

全部回覆(4)我來回復

  • 巴扎黑

    巴扎黑2017-04-10 14:32:39

    现在语言的发展,一门语言是否是解释型已经不那么容易分辨了。

    你说PHP是解释型语言,Facebook很早就开发过hiphop编译器,将PHP编译成C++再编译成二进制。

    你说Python是解释型语言,Cython是用python语法进行开发最后编译成二进制。

    你说用解释器就是解释型语言,依赖于JVM的一大票语言要跟你急了。

    回覆
    0
  • 黄舟

    黄舟2017-04-10 14:32:39

    解释型语言可以使用某种编译器,但它依旧解释型语言。语言解释器同样需要使用编译原理。判断一种语言是编译器还是解释器,需要看该语言是否需要一个虚拟机(解释器)才可以运行。

    通常,解释型语言使用前被编译为字节码,虚拟机动态执行字节码。为了提高性能,虚拟机执行代码时,可以利用 JIT 技术来动态的把字节码翻译成机器码。

    因为字节码它不可能脱离虚拟机运行,因此它依旧是解释型语言。简而言之,编译型语言的编译(编译到机器码)发生在运行之前,解释型语言的编译发生在每一次运行时。


    有些语言同时编译型解释型语言。可以在调试时使用解释器,调试后使用编译器。最著名的例子是 Lisp。有人曾在 Parrot 虚拟机上实现了 C 语言解释器,支持 C99 标准。

    回覆
    0
  • 黄舟

    黄舟2017-04-10 14:32:39

    PHP是解释型语言,将PHP代码解释为opcode之后再交由Zend引擎执行。

    使用APC只是缓存了opcode,减少了PHP解释为opcode这一步骤的时间而已。

    回覆
    0
  • ringa_lee

    ringa_lee2017-04-10 14:32:39

    解释型的

    回覆
    0
  • 取消回覆