PHP是解释型语言吗?使用APC之后呢?
PHP是解释型语言吗?使用APC之后呢?
现在语言的发展,一门语言是否是解释型已经不那么容易分辨了。
你说PHP是解释型语言,Facebook很早就开发过hiphop编译器,将PHP编译成C++再编译成二进制。
你说Python是解释型语言,Cython是用python语法进行开发最后编译成二进制。
你说用解释器就是解释型语言,依赖于JVM的一大票语言要跟你急了。
解释型语言可以使用某种编译器,但它依旧是解释型语言。语言解释器同样需要使用编译原理。判断一种语言是编译器还是解释器,需要看该语言是否需要一个虚拟机(解释器)才可以运行。
通常,解释型语言使用前被编译为字节码,虚拟机动态执行字节码。为了提高性能,虚拟机执行代码时,可以利用 JIT 技术来动态的把字节码翻译成机器码。
因为字节码它不可能脱离虚拟机运行,因此它依旧是解释型语言。简而言之,编译型语言的编译(编译到机器码)发生在运行之前,解释型语言的编译发生在每一次运行时。
有些语言同时是编译型和解释型语言。可以在调试时使用解释器,调试后使用编译器。最著名的例子是 Lisp。有人曾在 Parrot 虚拟机上实现了 C 语言解释器,支持 C99 标准。
PHP是解释型语言,将PHP代码解释为opcode之后再交由Zend引擎执行。
使用APC只是缓存了opcode,减少了PHP解释为opcode这一步骤的时间而已。
解释型的