Pregunta

Ahora estoy aprendiendo Perl. ¿Cuáles son los pros y los contras de los idiomas interpretados?

¿Fue útil?

Solución

Copia evidente de wikipedia , así que haré este wiki de la comunidad.

Ventajas de los idiomas interpretados

Los idiomas interpretados dan a los programas cierta flexibilidad adicional sobre los idiomas compilados. Las características que son más fáciles de implementar en intérpretes que en compiladores incluyen (pero no se limitan a):

  • independencia de la plataforma (código de bytes de Java, por ejemplo)
  • reflexión y uso reflexivo del evaluador (por ejemplo, una función de evaluación de primer orden)
  • escritura dinámica
  • facilidad de depuración (es más fácil obtener información del código fuente en idiomas interpretados)
  • tamaño de programa pequeño (dado que los idiomas interpretados tienen flexibilidad para elegir el código de instrucción)
  • alcance dinámico
  • gestión automática de memoria

Desventajas de los idiomas interpretados

Una ejecución por un intérprete suele ser mucho menos eficiente que la ejecución regular del programa. Ocurre porque, o bien cada instrucción debe pasar una interpretación en tiempo de ejecución o, como en implementaciones más recientes, el código debe compilarse en una representación intermedia antes de cada ejecución. La máquina virtual es una solución parcial al problema de rendimiento ya que el lenguaje intermedio definido está mucho más cerca del lenguaje de máquina y, por lo tanto, es más fácil de traducir en tiempo de ejecución. Otra desventaja es la necesidad de un intérprete en la máquina local para hacer posible la ejecución.

Otros consejos

Pros:

  • Creación rápida de prototipos (no escribir, compilar, ejecutar ciclo)
  • Multiplataforma (suponiendo que existan intérpretes para cada plataforma)

Contras:

  • Rendimiento (no será tan rápido como los idiomas compilados)

¿El mayor inconveniente? La mayoría diría velocidad de ejecución, pero no siempre es necesariamente cierto. La mayoría de los idiomas interpretados modernos en la actualidad convierten los archivos para que se interpreten en un estado intermedio al compilar, que cuando se ejecuta se convierte en código de máquina como cualquier otro idioma. Dado que el almacenamiento en caché inteligente prevalece principalmente en estas máquinas virtuales de lenguaje en estos días, no debería ser un gran problema. Esto ciertamente no quiere decir que el rendimiento no sea un problema con los idiomas interpretados, solo que a menudo no es tan malo como la mayoría sugeriría.

Tenga en cuenta que incluso con los problemas de rendimiento, sin embargo, a menudo es más fácil lograr las mismas tareas que un lenguaje compilado en un código cada vez menos eficiente, lo que hace que la pérdida de rendimiento durante la compilación sea insignificante durante el tiempo de ejecución de un programa.

Personalmente para mí, el mayor inconveniente es la necesidad de que el intérprete esté siempre presente antes de que pueda ocurrir la ejecución. Esto a menudo reduce la portabilidad, especialmente porque los idiomas interpretados no siempre son multiplataforma.

Con:

  • El mayor inconveniente es probablemente la velocidad de ejecución

Pro:

  • La mayor ventaja es probablemente el tiempo de respuesta, es decir, el ciclo de iteración de prueba de código

Para expresar el punto obvio y amplio, los lenguajes compilados tienden a tener un mayor rendimiento que los interpretados, ya que la compilación excluye la necesidad de un intérprete en tiempo de ejecución.

Los idiomas compilados son más adecuados para el software comercial de escritorio, ya que el código fuente no se envía junto con él.

Los idiomas interpretados tienden a ser un poco más rápidos de aprender, en la medida en que le permiten editar / ejecutar / repetir rápidamente sin esperar a un compilador. En mi experiencia, también tienden a ser de nivel superior, lo que también los hace más fáciles.

Wikipedia tiene una página sobre las ventajas y desventajas. Cualquier lenguaje interpretado significativamente avanzado se puede compilar en un binario nativo, borrando así las líneas entre los pros y los contras de un lenguaje interpretado.

PERL es uno de esos idiomas que difumina las líneas. Si bien es famoso por ser un potente lenguaje de script, puede compilarlo para que sea nativo.

La " lentitud " de lenguajes dinámicos como PERL puede que ya no sea un problema. Aquí hay una excelente presentación sobre las últimas tendencias en el área del lenguaje dinámico:

http: //steve-yegge.blogspot .com / 2008/05 / dynamic-languages-strike-back.html

Como Java es lenguaje interpretado

Pros:

  • Compatibilidad: la máquina virtual Java aprueba este concepto "Escribir una vez, ejecutar en todas partes".
  • Seguridad: el programa se ejecuta en JVM, por lo que si ocurre alguna falla, esto no afecta los archivos del sistema operativo.
  • Gestión de memoria.

Cons:

  • La máquina virtual Java tiene muchas implementaciones, por ejemplo, al escribir un programa que utiliza características de Java 8, este programa debe ejecutarse en JVM con la versión 8 no menos.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top