puede programacion programa lenguaje interpretado descripcion compilar compilado php

programacion - programa php



¿Se compila o interpreta PHP? (14)

Al menos no compila (o debería decir, optimiza) el código tanto como uno podría desearlo.

Este código ...

for($i=0;$i<100000000;$i++); echo $i;

... retrasa el programa igualmente cada vez que se ejecuta.

Podría haber detectado que es un cálculo que solo debe hacerse la primera vez.

¿Se compila o interpreta PHP?


Ambos. PHP se compila en un bytecode intermedio que luego es interpretado por el motor de tiempo de ejecución.

El trabajo del compilador de PHP es analizar su código PHP y convertirlo a un formato adecuado para el motor de tiempo de ejecución. Entre sus tareas:

  • Ignorar comentarios
  • Resolver variables, nombres de funciones, etc., y crear la tabla de símbolos
  • Construya el árbol de sintaxis abstracta de su programa
  • Escribe el bytecode

Según la configuración de PHP, este paso generalmente se realiza una sola vez, la primera vez que se llama al script. La salida del compilador se almacena en caché para acelerar el acceso en usos posteriores. Sin embargo, si se modifica el guión, el paso de compilación se realiza nuevamente.

El motor de tiempo de ejecución recorre el AST y el bytecode cuando se llama al script. La tabla de símbolos se utiliza para almacenar los valores de las variables y proporcionar las direcciones de bytecode para las funciones.

Este proceso de compilación para el bytecode y la interpretación en tiempo de ejecución es típico para los lenguajes que se ejecutan en algún tipo de máquina de tiempo de ejecución virtual, incluyendo Perl, Java, Ruby, Smalltalk y otros.



En general, se interpreta, pero en algún momento se puede usar como compilado y realmente aumenta el rendimiento. Herramienta de código abierto para realizar esta operación: http://www.phpcompiler.org/


Es interpretado. Así que tenlo en cuenta cuando pones demasiados comentarios en tu código ...


Esta es una pregunta sin sentido. PHP usa yacc (bison), al igual que GCC. yacc es un "compilador de compilador". La salida de yacc es un compilador. La salida de un compilador es "compilada". PHP es analizado por la salida de yacc. Entonces es, por definición, compilado.

Si eso no satisface, considere lo siguiente. Tanto php (el binario) como gcc leen su código fuente y producen un árbol sintáctico abstracto. En las versiones 4 y 5, php luego recorre el árbol para traducir el programa a bytecode (el paso de compilación). Puede ver el bytecode traducido a códigos de operación (que son análogos al ensamblaje) usando el Vulcan Logic Dumper . Finalmente, php (en particular, el motor Zend) interpreta el bytecode. gcc, en comparación, camina por el árbol y produce el ensamblaje; también puede ejecutar ensambladores y enlazadores para finalizar el proceso. Llamar a un programa manejado por uno "interpretado" y otro programa manejado por el otro "compilado" no tiene sentido. Después de todo, los programas se ejecutan a través de un "compilador" con ambos.

En realidad, debería hacer la pregunta que desea hacer en su lugar. ("¿Pago una penalización de rendimiento cuando PHP recompila mi código fuente para cada solicitud?", Etc.)


La categorización tradicional de compiladores e intérpretes es borrosa en el caso de compilación justo a tiempo e interpretación de bytecode. Se interpretaPHP. Pero eso no significa que PHP no se compile.El compilador dePHP realiza la comprobación de la sintaxis, la generación de código intermedio y la optimización.PHP se interpreta porque el código objeto que genera el compilador PHP es analizado por otro binario nativo precompilado. Que interpreta el código intermedio como instrucción legible por CPU. Esto explica por qué ningún otro idioma puede ser tan primero como el lenguaje ensamblador en términos de ejecución de instrucción. Porque las instrucciones son un ensamblador ( producir compilador) producir ya están allí en la CPU.


Obviamente php.exe (el intérprete de PHP) es un ejecutable compilado.

Sin embargo, no creo que sea eso lo que preguntaste.

Cuando se carga una secuencia de comandos PHP, se compila en un formato binario conocido como códigos de operación Zend, en la memoria, que luego se interpretan de manera eficiente.

Fuente: https://.com/a/18595821/3881189


PHP es un lenguaje interpretado, pero el programa utilizado para interpretar PHP se cumple .

El compilador de PHP genera el bytecode que es independiente de la máquina más tarde este bytecode se convierte en un código entendible por máquina por el motor de tiempo de ejecución .


PHP es un lenguaje interpretado. Sin embargo, puede compilarse a bytecode con herramientas de terceros.


Sé que esta pregunta es antigua pero está vinculada por todas partes y creo que todas las respuestas aquí son incorrectas (tal vez porque son viejas).

NO existe tal cosa como un lenguaje interpretado o un lenguaje compilado. Cualquier lenguaje de programación puede ser interpretado y / o compilado.

En primer lugar, un lenguaje es solo un conjunto de reglas, por lo que cuando hablamos de compilación nos referimos a implementaciones específicas de ese lenguaje.

HHVM , por ejemplo, es una implementación de PHP. Utiliza la compilación JIT para transformar el código a bytecode HipHop intermedio y luego se traduce en código máquina. ¿Es suficiente decir que está compilado? Algunas implementaciones de Java (no todas) también usan JIT. El V8 de Google también usa JIT.

Usar las antiguas definiciones de compilado vs. interpretado no tiene sentido hoy en día.

"¿Está compilado PHP?" es una pregunta no sensorial dado que ya no hay delimitadores claros y acordados entre lo que es un lenguaje compilado versus uno interpretado.

Una forma posible de delimitarlos es (no encuentro ningún significado en esta dicotomía):

los lenguajes compilados usan la compilación Ahead of Time (C, C ++);

los lenguajes interpretados usan compilación Just in Time o no compilación en absoluto (Python, Ruby, PHP, Java).


Se interpreta como el código PHP es interpretado por un motor (comúnmente convertido en bytecode primero); también se compila ya que algunas herramientas pueden compilar código PHP en el ejecutable, como phc.


Un código compilado puede ser ejecutado directamente por la CPU de la computadora. Es decir, el código ejecutable se especifica en el idioma nativo de la CPU

El código de idiomas interpretados debe traducirse en tiempo de ejecución desde cualquier formato a las instrucciones de la máquina de la CPU. Esta traducción es hecha por un intérprete.

No sería correcto decir que un idioma es interpretado o compilado porque la interpretación y la compilación son propiedades de la implementación de ese lenguaje en particular, y no una propiedad del lenguaje en sí mismo. Entonces, cualquier lenguaje puede ser compilado o interpretado, solo depende de lo que haga la implementación particular que está usando.

La implementación de PHP más utilizada está impulsada por Zend Engine y se conoce simplemente como PHP. Zend Engine compila el código PHP en un formato que puede ejecutar, por lo que el motor Zend funciona como un intérprete .

Gracias :)


php es un intérprete, no lo compila, lo guarda en un archivo y el servidor lo lee línea por línea. C ++ se compila, compila todo el script y luego ejecuta el programa exe, your. Demasiado tarde para hacer cambios ahora.