Saltar al contenido

¿Perl es un lenguaje de programación compilado o interpretado?

Este team de trabajo ha estado mucho tiempo investigando para darle soluciones a tus dudas, te brindamos la respuesta y esperamos serte de gran apoyo.

Solución:

No obtendrá una respuesta definitiva, porque no ha proporcionado una pregunta definitiva.

Perl siempre se encuentra en uno de dos estados: está compilando o ejecutándose. Es por eso que ves hablar de “en tiempo de compilación” frente a “en tiempo de ejecución”. Normalmente, obtiene una frase de compilación seguida de una fase de ejecución, pero no tiene por qué ser así.

Estas dos fases también pueden intercambiarse de un lado a otro. Un eval STRING es una forma para que el intérprete llame al compilador (por lo tanto, también son do FILE y require). UN BEGIN block es una forma para que el compilador llame al intérprete (así también, por lo tanto, son use y no).

cuando corres perl -c, se omite la fase de tiempo de ejecución. Hay varias formas de omitir la fase de tiempo de compilación, pero ninguna de ellas es particularmente conveniente o común. Apache mod_perl solo compila scripts una vez pero los ejecuta muchas veces. Si usa Byteloader, puede hacer lo mismo. Etcétera.

La respuesta correcta a si Perl está compilado o interpretado es simplemente SÍ.

Bueno, eso depende de lo que entiendas por un lenguaje compilado. Tal vez es por eso que buscar en Google no produjo una respuesta clara a su pregunta.

Un punto de vista es que la compilación significa compilar desde una descripción de código fuente a otra, es decir, generación de código.

Si aceptamos estas premisas, entonces se puede compilar Perl 6 y Perl 5 y anteriores son lenguajes interpretados.

Perl 6 se compila específicamente en el código de bytes de Parrot. Por lo tanto, Perl 6 es un lenguaje debidamente compilado, de la misma manera que lo es Java.

Perl 5 y anteriores analizan el código fuente de Perl en una lista o árbol interno, pero no creo que deba llamarse un compilador adecuado, excepto tal vez en un sentido teórico. No genera ningún código de bytes, ensamblaje o código de máquina real generalmente asociado con los compiladores. La etapa de análisis de Perl para verificar la sintaxis de Perl solía llamarse “compilar” la fuente. Se utiliza para comprobar la validez sintáctica de un archivo fuente de Perl sin ejecutarlo.

Se invoca como:

perl -c myprog.pl

Pero si observa la ayuda para las opciones de Perl, -c en realidad significa “verificar”.

-c                check syntax only (runs BEGIN and CHECK blocks)

(Para complicar aún más las cosas, Perl 5 tenía soporte para escribir el código de bytes interno, pero se eliminó en la versión 5.10. Presumiblemente porque tenía errores, no lo sé).

Por otro lado, si argumenta que la compilación es el acto de analizar un árbol fuente en cualquier otro tipo de representación, bueno, ese análisis convierte a Perl en un lenguaje compilado. Perl debe analizar completamente un archivo fuente antes de que pueda comenzar a ejecutarlo. Según esta definición, cualquier idioma que pueda comenzar a ejecutar un archivo fuente inmediatamente antes del análisis sería un idioma interpretado.

una tercera via mirar esto es cómo estas palabras, “interpretado” y “compilado” son utilizadas con mayor frecuencia por profesionales en el campo. Apostaría mucho dinero a que si se le pidiera a un subconjunto aleatorio de programadores que eligieran “compilado” o “interpretado” al pensar en Perl, la mayoría elegiría “interpretado”. No por algún argumento teórico sobre la naturaleza de Perl, sino porque “compilado” por lo general invoca pensamientos de “compilación”, “enlace”, “código objeto”, etc., mientras que “interpretado” significa “escribir el código, probarlo”. “. Correcto o incorrecto, puede ser bueno saberlo cuando se trata de determinar si Perl es, realmente, interpretado o, de hecho, compilado. Vas a encontrarte con muchos argumentos en tu búsqueda.

Ambas cosas. Perl5 compila el código fuente en objetos OPCODE y luego interpreta los objetos OPCODE. Sigue la respuesta larga.


de wikipedia,

Un compilador es un programa de computadora (o conjunto de programas) que transforma el código fuente escrito en un lenguaje de programación (el lenguaje de origen) en otro lenguaje de computadora (el lenguaje de destino, que a menudo tiene una forma binaria conocida como código objeto).

Perl5 es un compilador. Toma el código fuente de Perl5 y produce un gráfico de objetos OPCODE.

$ perl -MO=Concise,-exec -E'for (1..3)  say "Hello, World!" '
1  <0> enter 
2  <;> nextstate(main 48 -e:1) v:%,2048
3  <0> pushmark s
4  <$> const(IV 1) s
5  <$> const(IV 3) s
6  <$> gv(*_) s
7  <{> enteriter(next->c last->f redo->8) lKS/8
d  <0> iter s
e  <|> and(other->8) vK/1
8      <;> nextstate(main 47 -e:1) v:%,2048
9      <0> pushmark s
a      <$> const(PV "Hello, World!") s
b      <@> say vK
c      <0> unstack v
           goto d
f  <2> leaveloop vK/2
g  <@> leave[1 ref] vKP/REFC
-e syntax OK

Sin embargo, el compilador Perl5 no produce código de máquina. Entonces, ¿cómo se ejecuta el gráfico OPCODE? De Wikipedia, una definición para un intérprete es algo que

ejecuta explícitamente el código precompilado almacenado hecho por un compilador que es parte del sistema de interpretación

Esto significa que se interpretan los gráficos OPCODE.

Se estaba trabajando para proporcionar la opción de compilar Perl5 a código de bytes LLVM. Esto, a su vez, se puede compilar en código de máquina. Este es el mismo enfoque que usa Java.

valoraciones y reseñas

Ten en cuenta difundir este escrito si te fue de ayuda.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *