Clasificación de los interpretes
Concepto de Interprete:
Un
intérprete es un programa que analiza y ejecuta simultáneamente el programa
fuente, es decir no producen un código objeto,
siendo su ejecución simultánea a la del programa fuente.
Comportamiento
de un Interprete:
Un
intérprete es como un compilador, solo que la salida es una ejecución. El
programa de entrada se reconoce y ejecuta a la vez. No se produce un resultado
físico (código máquina) sino lógico (una ejecución).
Resultado del Interprete:
Ventajas de los Interpretes:
Su principal ventaja es que
permiten una fácil depuración. Permiten una mayor interactividad con el código
en tiempo de desarrollo.
Puede
ser interrumpido con facilidad.
Facilita
la búsqueda de errores. En
algunos lenguajes está permitido añadir código según se ejecuta otro código.
Menor
consumo de memoria.
Desventajas de los Interpretes:
Lentitud
de ejecución, ya que al ejecutar a la vez que se traduce no puede aplicarse un
alto grado de optimización. Cada instrucción debe ser traducida a código
máquina tantas veces como sea ejecutada
Durante
la ejecución, el intérprete debe residir en memoria ya que no genera código
objeto.
Tamaño
del programa objeto, que exige añadir el intérprete al programa propiamente
dicho.
Clasificación
de Intérpretes:
•Intérpretes Puros: son
los que analizan una sentencia y la ejecutan, y así sucesivamente todo el
programa fuente. Fueron los intérpretes desarrollados en la primera generación
de ordenadores, pues permitían la ejecución de largos programas con ordenadores
de memoria muy reducida, ya que sólo debían contener en memoria el intérprete y
la sentencia a analizar y ejecutar.
•Interpretes Avanzados: incorporan
un paso previo de análisis de todo el programa fuente. Generando posteriormente
un lenguaje intermedio que es ejecutado por ellos mismos.
•Interpretes Incrementales: tienen
gran interés en los lenguajes que permiten no definir los problemas
completamente en tiempo de compilación. En estos casos se utilizan evaluadores parciales que toman como
entrada el programa fuente junto con algunos datos (pero no todos),
realizándose los cálculos que se pueden hacer con dicho subconjunto de datos, y
produciendo una salida que contiene un residuo del programa fuente que se ha
introducido.