Los intérpretes realizan dos operaciones: traducen el código fuente a un formato interno y ejecutan el programa traducido. Un intérprete analiza y ejecuta el programa línea por línea sin generar un archivo ejecutable, a diferencia de un compilador que convierte el código fuente a un archivo ejecutable. Los intérpretes son útiles para depurar programas y modificarlos en tiempo de ejecución.
Estas presentaciones muestran algunas facilidades de los lenguajes de programación que se pueden utilizar para llevar contenidos y colocar actividades de aprendisaje...!
2. Los intérpretes realizan normalmente dos
operaciones:
Traducen el código fuente a un formato
interno.
Ejecutan o interpretan el programa traducido
al formato interno.
La primera parte del intérprete se llama a
veces "el compilador", aunque el código
interno que genera no es el lenguaje de la
máquina, ni siquiera lenguaje simbólico, ni
tampoco un lenguaje de alto nivel.
3. Programa de computadora que analiza el programa fuente y lo
ejecuta directamente, sin generar ningún código equivalente. Su
acción equivale a la de un intérprete humano, que traduce las frases
que oye sobre la marcha, sin producir ningún escrito permanente.
Un intérprete facilita la búsqueda de errores, pues la ejecución de
un programa puede interrumpirse en cualquier momento para
estudiar el entorno (valores de las variables, etc.). Además, el
programa puede modificarse sobre la marcha, sin necesidad de
volver a comenzar la ejecución.
Un intérprete permite utilizar funciones y operadores más
potentes, como por ejemplo ejecutar código contenido en una
variable en forma de cadenas de caracteres. Usualmente, este tipo
de instrucciones es imposible de tratar por medio de compiladores.
Los lenguajes que incluyen este tipo de operadores y que, por
tanto, exigen un intérprete, se llaman interpretativos. Los lenguajes
compilativos, que permiten el uso de un compilador, prescinden de
este tipo de operadores.
4. ¿Cuáles la estructura de los interpretes?
Un intérprete es un programa que
simultáneamente analiza y ejecuta un
programa escrito en lenguaje fuente. El
proceso que realiza un intérprete es el
siguiente: lee la primera instrucción del
código fuente, la traduce a código objeto y
la ejecuta; a continuación, hace lo mismo
con la segunda instrucción; y así
sucesivamente, hasta llegar a la última
instrucción del programa, siempre y cuando,
no se produzca ningún error que detenga el
proceso.
5. Es conveniente utilizar una representación interna (RI) del lenguaje fuente a utilizar.
La estructura interna de un intérprete puede descomponerse en módulos.
Traductor RI. Toma P/LF lo analiza y lo transforma a P/RI
RI. Árboles sintácticos, estructura de pila
TS Etiquetas de saltos, información sobre identificadores…
Evaluador de RI. A partir de RI y de los datos se realizan las operaciones, además se
contempla la aparición de errores.
Tratamiento de errores. Pueden aparecer errores (de ejecución) que debe notificarse
6. Los intérpretes generan un código binario
que se interpreta cada vez que se ejecuta el
programa a diferencia del compilador que
crea un archivo ejecutable. Ejemplos de
programas que utilizan intérpretes son BASIC,
y Visual Basic. En VB puedes compilar todo el
programa para crear un ejecutable o puedes
ejecutar un formulario o modulo a la vez, en
cuyo caso interviene un intérprete.
Intérpretes de comandos: Toman el lenguaje
fuente (pueden incluir sentencias de control)
y ejecuta operaciones sobre el SO:C-Shell,
Korn-Shell, JCL…
7. Lenguajes basados en escritos: Herramientas
para el enlace entre diferentes sistemas o
aplicaciones:Perl, Tcl/Ik, JavaScript …
Entornos de programación: Lenguajes con
características o cuya compilación no es
efectiva: Lisp, VisualBasic, smallTalk…
Sistemas en tiempo real: Sistemas que permiten
modificar el código de una aplicación en tiempo
de ejecución de forma interactiva.
Lenguajes de propósito específico: lenguajes con
sentencias que realizan tareas complejas en
contextos específics: consltas de BBDD,
simulación, entorno Matlab…
Inérprete de código de un compilador para una
máquina abstracta (P-code de Pascal, bytecode
de Java)
8.
9. Un traductor es un programa que tiene como
entrada un texto escrito en un lenguaje (lenguaje
fuente) y como salida produce un texto escrito en
un lenguaje (lenguaje objeto) que preserva el
significado de origen. Ejemplos de traductores son
los ensambladores y los compiladores.
10.
11. Lenguajes interpretados: PHP, PERL, BASIC
En algunas ocasiones se necesita de una traducción
rápida de algunas instrucciones,
como en el Shell, instrucciones SQL, etc.
Java al igual que otros lenguajes como C# son
lenguajes híbridos. Por una parte se
compila un programa fuente para generar código
objeto para una máquina virtual
(bytecode o MSIL) para posteriormente ejecutarse de
manera interpretada en las
diferentes máquinas virtuales de cada plataforma. A
este compilador se les llama
jitter de JIT (Just in Time)
12. TRADUCTOR INTERPRETE
Un traductor es un mediador entre dos
entidades: emisoras y receptoras
Se ejecutan línea por línea, instrucción por
instrucción.
Los mediadores enmascaran la complejidad y
heterogeneidad de los lenguajes
Traducen el código fuente a un formato interno.
Un traductor convierte un lenguaje de entrada
(código fuente) a uno de salida (código objeto)
Ejecutan o interpretan el programa traducido al
formato interno
La traducción puede ser sencilla (literal) o
compleja (revisar el contexto) dependiendo del
tipo de lenguaje entrada y salida
La primera parte del intérprete se llama a veces
"el compilador", aunque el código interno que
genera no es el lenguaje de la máquina, ni
siquiera lenguaje simbólico, ni tampoco un
lenguaje de alto nivel
Traducción español a inglés si se hace de
manera literal es una mala traducción, se
necesita de al menos otra revisión (pasada)
para hacer una buena traducción.
Ahorra memoria.
Produce un resultado que no se puede
almacenar, lo cual hace la ejecución lenta.
No demasiado eficiente, cada vez que se entre en
un bucle se analizaran sus sentencias.
Facilita el proceso de depuración.
No produce resultados transportables.
Dos etapas en la traducción: análisis y síntesis.
Análisis:
Léxico: de caracteres a componentes.
Sintáctico: de componentes a arboles de
análisis.
Semántico: de árboles de análisis a AST.
Síntesis: En compilación:
Generación de código intermedio.
Generación de código objeto.
Optimización (mezclada con las anteriores).
En interpretación, dos opciones:
Generación directa de resultados.
Generación de código intermedio e
interpretación del código intermedio.
Sistemas interactivos.
Programas de pequeña envergadura.
Programas de prototipo y de enseñanza