Upload
agustin-duarte
View
232
Download
0
Tags:
Embed Size (px)
DESCRIPTION
Â
Citation preview
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.
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.
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).
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.
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.
¿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.
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.
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.
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
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.
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.
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