Trabajo final interpretes

Page 1

2013 TRABAJO FINAL.

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


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-einterpretes.html http://www.monografias.com/trabajos14/lenguaje-programac/lenguaje-programac.shtml http://www.buenastareas.com/ensayos/Diferencia-Entre-Compilador-e-Interprete/2605962.html


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.