Trabajo final interpretes

12
2013 ALUMNO: AGUSTIN DUARTE PRECIADO PROFESOR: JOSE BENITO FRANCO MATERIA: INTERPRETES PLANTEL: CENTRO HORARIO: 1:00 A 3:00 FECHA: 08/10/2013 TRABAJO FINAL.

description

 

Transcript of Trabajo final interpretes

Page 1: Trabajo final interpretes

2013

ALUMNO: AGUSTIN DUARTE PRECIADO

PROFESOR: JOSE BENITO FRANCO

MATERIA: INTERPRETES

PLANTEL: CENTRO

HORARIO: 1:00 A 3:00

FECHA: 08/10/2013

TRABAJO FINAL.

Page 2: Trabajo final interpretes

INTRODUCCION.

En el siguiente trabajo presentare la importancia de la tecnología como también la importancia de

un intérprete como también en que consiste y cuál es su función pero antes de eso que es 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.

Page 3: Trabajo final interpretes

Interpretes.

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.

No genera código objeto, analiza y ejecuta directamente cada proposición del

código fuente.

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).

Page 4: Trabajo final interpretes

Ventajas de los Intérpretes.

Su principal ventaja es que permiten una fácil depuración. Permiten una mayor interactividad con el código en tiempo de desarrollo.

En algunos lenguajes (Smalltalk, Prolog, LISP) está permitido y es frecuente añadir código según se ejecuta otro código, y esta característica solamente es posible implementarla en un intérprete.

Puede ser interrumpido con facilidad.

Puede ser rápidamente modificado y ejecutado nuevamente.

Un Intérprete necesita menos memoria que un compilador.

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.

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.

Programa fuente

Es el programa escrito en alguno de los lenguajes y que no ha sido traducido al

lenguaje de la máquina, es decir el programa que no está en código de máquina y

que por lo tanto no puede ser ejecutable.

Lenguajes de alto nivel

Para acelerar, aún más, el proceso de programación se desarrolla los lenguajes de

alto nivel en los que se podía escribir un enunciado para realizar tareas sustanciales.

Los lenguajes de alto nivel permiten a los programadores escribir instrucciones que

asemejan al inglés cotidiano y contiene notaciones matemáticas de uso común.

Existen lenguajes que utilizan un Intérprete, un ejemplo de ello es el

programa JAVA, y su intérprete traduce en el instante mismo de lectura, el código

en lenguaje máquina para que pueda ser ejecutado.

Page 5: Trabajo final interpretes

LENGUAJE MÁQUINA

Lenguaje original de la computadora, un programa debe estar escrito en el lenguaje

de la máquina para poder ser ejecutado. Este es generado por software y no por el

programador. El programador escribe en un lenguaje de programación, el cual es

traducido al lenguaje de máquina mediante intérpretes y compiladores.

Términos desconocidos

LENGUAJES DE PROGRAMACIÓN:

Los lenguajes de programación son lenguajes especiales que ayudan al usuario a

comunicarse con la computadora.

LENGUAJE DE MÁQUINA:

El lenguaje de máquina está orientado hacia la máquina que está constituida por

varios arreglos de "bits". Este lenguaje es fácil de entender por la computadora,

pero difícil para el usuario.

LENGUAJE DE BAJO NIVEL:

Es un lenguaje de programación bien cercano al lenguaje de máquina.

LENGUAJE DE ALTO NIVEL:

Es un lenguaje que se asemeja más al lenguaje humano que a un lenguaje de

máquina o ensamblador. Es más fácil escribir programas en este lenguaje, pero

luego deben ser traducidos por compiladores o intérpretes para que la computadora

los entienda.

INTERPRETE:

Es un programa que traduce un lenguaje de alto nivel al lenguaje de máquina de

una computadora. El programa siempre permanece en su forma original (programa

fuente) y traduce cuando está en la fase de ejecución instrucción por instrucción.

CÓDIGO FUENTE:

Es un conjunto de instrucciones del programa que están escritas en un lenguaje de

programación.

Page 6: Trabajo final interpretes

¿CUAL ES LA DIREFENCIA ENTRE UN COMPILADOR Y UN INTERPRETE?

INTERPRETE:

Es un traductor que realiza la operación de compilación paso a paso. Para cada

sentencia que compone el texto de entrada, se realiza una traducción, ejecuta dicha

sentencia y vuelve a iniciar el proceso con la sentencia siguiente.

En lugar de producir un programa objeto como resultado de una traducción, un

intérprete realiza las operaciones que implica el programa fuente. Por ejemplo, un

intérprete podría construir un árbol, y después efectuar las operaciones de los nodos

conforme recorre el árbol. Muchas veces los intérpretes se utilizan para ejecutar

lenguajes de órdenes, pues cada operador que se ejecuta en un lenguaje de este

tipo suele ser una invocación de una rutina, como un editor o un compilador. Del

mismo modo algunos lenguajes de alto nivel son interpretados, porque hay muchas

cosas sobre los datos, como el tamaño y la forma de las matrices que no se pueden

deducir en el momento de la compilación.

COMPILADOR:

Es un programa que lee totalmente un programa escrito en un lenguaje; el lenguaje

fuente, y lo traduce a un programa equivalente a otro lenguaje, lenguaje objeto que

puede ejecutarse tantas veces como se quiera. Como parte importante de este

proceso de traducción, el compilador informa a su usuario de la presencia de errores

en el programa fuente.

DIFERENCIA ENTRE AMBOS

La diferencia fundamental es la siguiente:

* Los compiladores realizan la traducción en tiempo de desarrollo. Es decir, el

programa aún no se está ejecutando. El compilador recibe todo el código fuente, lo

analiza, lo optimiza y lo traduce a lenguaje máquina dejando un programa

completo listo para su ejecución. Típicos lenguajes compilados son el C o el

PASCAL.

* Los intérpretes realizan la traducción en tiempo de ejecución. Es decir, a medida

que el programa se va ejecutando, el intérprete va traduciendo instrucciones al

lenguaje máquina.

Page 7: Trabajo final interpretes

Funciones de un Intérprete.

Las funciones de un intérprete son las mismas que la de los compiladores:

Análisis léxico:

Es la parte inicial de leer y analizar el código fuente. El texto es leído y

dividido en tokens (que según la Wikipedia es llamado también componente

léxico y es “una cadena de caracteres que tiene un significado coherente en

cierto lenguaje de programación. Ejemplos de tokens, podrían ser palabras

clave (if, else, while, int, ...), identificadores, números, signos, o un operador

de varios caracteres, (por ejemplo, :=).”), cada uno de los cuales corresponde

a un símbolo en el lenguaje de programación, por ejemplo, el nombre de una

variable, una palabra reservada o un número.

Análisis sintáctico:

En esta fase se toma una lista de tokens producida por el análisis léxico y

los acomoda en una estructura de árbol llamado árbol sintáctico que refleja

la estructura del programa. Esta fase también se llama parsing.

Verificación de tipos:

En esta pate se analiza el árbol sintáctico para determinar si el programa

viola ciertos requerimientos de consistencia, es decir, si una variable se utiliza

pero no se declara, o si se usa en un contexto que no tiene sentido por el tipo

de variable, tal como un string (que según la Wikipedia “es

una secuencia ordenada de longitud arbitraria (aunque finita) de elementos

que pertenecen a un cierto alfabeto”) para utilizar un valor booleano (según

la Wikipedia: “aquel que puede representar valores de lógica binaria, esto es

2 valores, valores que normalmente representan falso o verdadero”) como

una función de apuntador.

Generación de código intermedio:

El programa se traduce a un lenguaje simple e independiente de la máquina.

Page 8: Trabajo final interpretes

Ubicación de registros: los nombres simbólicos de las variables utilizadas en

el código intermedio se traducen a números, cada uno de ellos

correspondiendo a un registro de máquina objetivo (de la máquina que va a

ejecutar finalmente el programa).

Generación de código máquina:

El lenguaje intermedio se traduce al lenguaje ensamblador (representación

textual de código máquina) para una estructura de máquina específica.

Ensamblado y enlazado:

El código en lenguaje ensamblador se traduce a una representación binaria

y se determina la dirección real de las variables, funciones, etc.

Page 9: Trabajo final interpretes

Tipos de intérpretes

A continuación se va a realizar una clasificación de los diferentes métodos

de interpretación según la estructura interna del intérprete. Es conveniente

observar que algunos métodos podrían considerarse híbridos, ya que

mezclan los procesos de compilación e interpretación.

Intérpretes puros

Los intérpretes puros son los que analizan y ejecutan sentencia a sentencia

todo el programa fuente. Siguen el modelo de interpretación iterativa y, por

tanto, se utilizan principalmente para lenguajes sencillos.

Los intérpretes puros se han venido utilizando desde la primera generación

de ordenadores al permitir la ejecución de largos programas en ordenadores

de memoria reducida, ya que sólo debían contener en memoria el intérprete

y la sentencia a analizar y ejecutar en cada momento. El principal problema

de este tipo de intérpretes es que si a mitad del programa fuente se producen

errores, se debe de volver a comenzar el proceso.

Intérpretes avanzados

Los intérpretes avanzados o normales incorporan un paso previo de análisis

de todo el programa fuente. Generando posteriormente un lenguaje

intermedio que es ejecutado por ellos mismos.

De esta forma en caso de errores sintácticos no pasan de la fase de análisis.

Se utilizan para lenguajes más avanzados que los intérpretes puros, ya que

permiten realizar un análisis más detallado del programa fuente

(comprobación de tipos, optimización de instrucciones, etc.)

Intérpretes incrementales

Existen ciertos lenguajes que, por sus características, no se pueden compilar

directamente. La razón es que pueden manejar objetos o funciones que no

son conocidos en tiempo de compilación, ya que se crean dinámicamente en

tiempo en ejecución. Entre estos lenguajes, pueden considerarse

Smalltalk, Lisp o Prolog. Con el propósito de obtener una mayor eficiencia

que en la interpretación simple, se diseñan compiladores incrementales. La

idea es compilar aquellas partes estáticas del programa en lenguaje fuente,

marcando como dinámicas las que no puedan compilarse. Posteriormente,

en tiempo de ejecución, el sistema podrá compilar algunas partes dinámicas

o recompilar partes dinámicas que hayan sido modificadas. Estos sistemas

no producen un código objeto independiente, sino que acompañan el sistema

Page 10: Trabajo final interpretes

que permite compilar módulos en tiempo de ejecución (run time system) al

código objeto generado.

Evaluadores Parciales

La utilización de evaluadores parciales o especializadores surge al

considerar que muchos programas contienen dos tipos de datos de entrada.

Existen una serie de datos de entrada que son diferentes en cada ejecución

mientras que otros datos no varían de una ejecución a otra. El primer

conjunto, se conoce como datos de entrada dinámicos (se denotará como

Din), mientras que el segundo conjunto, serían los datos de entrada estáticos

(Est). Dado un programa P, el proceso de evaluación parcial consiste en

construir otro programa especializado PEst para los datos estáticos de P.

Compiladores “Just in Time”

Con la aparición de Internet surge la necesidad de distribuir programas de

una forma independiente de la máquina permitiendo su ejecución en una

amplia variedad de plataformas. Los códigos de bytes de la máquina Virtual

de Java permiten la ejecución de programas distribuidos, ya que la mayoría

de los visualizadores tienen un mecanismo capaz de interpretarlos. La

interpretación de códigos de bytes supone una demora en los tiempos de

ejecución.

Compilación Continua

La compilación continua surge como un intento de mejorar la compilación

“Just in Time”. El sistema mezcla el proceso de compilación a código nativo

con el proceso de interpretación. Para conseguirlo, el sistema dispone de dos

módulos: un módulo de interpretación de los códigos de bytes y otro módulo

de compilación de códigos de bytes a código nativo. La idea consiste en que

ambos módulos actúen a la vez (lo ideal sería disponer de dos

procesadores), de forma que el sistema no se detenga a compilar un módulo,

sino que vaya interpretándolo hasta que el compilador haya generado el

código nativo.

Page 11: Trabajo final interpretes

Conclusión.

En conclusión podemos decir que el intérprete es muy esencial como de manera

humana como en el mundo de la informática y de la programación es una de las

herramientas más importantes que sin ella el programador o programa no fuera

entendible entre ellos ya que es un poco complicado tener el conocimiento de las

dos cosas. En el trabajo que se presentó espero haiga quedado claro lo que es un

intérprete, como está conformado, que tipo de intérpretes hay como también varios

conceptos y por ultimo ahí que dejar en claro que la programación es un punto

importante en la tecnología hoy en día.

Page 12: Trabajo final interpretes

Bibliografías.

http://compiladores-interpretes.blogspot.mx/2012/01/introduccion-compiladores-e-

interpretes.html

http://www.monografias.com/trabajos14/lenguaje-programac/lenguaje-programac.shtml

http://www.buenastareas.com/ensayos/Diferencia-Entre-Compilador-e-Interprete/2605962.html