INTERPRETES (MONOGRAFIA)

Page 1

UNIDEP INTERPRETES MONOGRAFÍA

EDGAR JAVIER URQUIJO RASCON MAESTRO: DR. BENITO FRANCO URREA

8 OCT 2013


Interpretes Introducción En computación, un intérprete es un programa de computadora que ejecuta o lleva a cabo instrucciones escritas en un lenguaje de programación. La interpretación es una de las formas de ejecución de los programas de computadoras, la otra es la compilación. El término "intérprete" puede hacer referencia al programa que ejecuta el código fuente que acaba de ser traducido a una forma intermedia, o puede hacer referencia al programa que lleva a cabo tanto la traducción como la ejecución. Es el que realiza las operaciones que implica el programa fuente, 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. 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. La principal ventaja del proceso de compilación frente al de interpretación es que los programas se ejecutan mucho más rápidamente una vez compilados; por el contrario, es más cómodo desarrollar un programa mediante un intérprete que mediante un compilador puesto que en el intérprete las fases de edición y ejecución están más integradas. La depuración de los programas suele ser más fácil en los intérpretes que en los compiladores puesto que el código fuente está presente durante la ejecución. Estas ventajas pueden incorporarse al compilador mediante la utilización de entornos de desarrollo y depuradores simbólicos en tiempo de ejecución.

Compiladores e intérpretes Un archivo fuente es el que contiene el texto del código del programa que ha sido escrito por el equipo de programadores. Las computadoras solamente pueden ejecutar instrucciones que estén en código máquina, así que los programas en código fuente no se pueden ejecutar directamente en la computadora. Un compilador debe, en primer lugar, convertir el archivo fuente


en un archivo intermedio que se llama archivo objeto o archivo código objeto. El archivo objeto contiene una traducción del código del programa en lenguaje máquina, pero aún no se considera un programa ejecutable. Una división común para describir los compiladores, como menciona Torben AEgidius Mogensen, es como se describe enseguida, aunque el orden puede cambiar, algunas fases se pueden combinar o dividir en otras fases o aún otras fases se pueden insertar, pero en general, los compiladores siguen estas tareas: · 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, 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 llamada árbol sintáctico que refleja la estructura del programa. Esta fase también se llama parsing. · Verificación de tipos. En esta parte 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 para utilizar un valor booleano como una función apuntador. · Generación de código intermedio. El programa se traduce a un lenguaje simple 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 corresponde a un registro en el código 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 (una representación textual de código máquina) para una arquitectura 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.


Un programa linker (enlazad or), combina todos los módulos en el archivo objeto para formar un archivo ejecutable (figura 24). Un archivo ejecutable sí es un programa completo en sí mismo, es decir, no requiere hacer referencia al código fuente original. Esto significa que correrá más rápidamente, comparado con la ejecución del mismo programa cuando aún no es ejecutable. Un intérprete traduce un código fuente en lenguaje máquina también. El intérprete difiere del compilador en que ejecuta cada orden una vez que se traduce. Este proceso puede hacer más lenta la ejecución del programa, así que los intérpretes se utilizan menos que los compiladores. Un intérprete es otra manera de implementar un lenguaje de programación. La interpretación comparte muchos aspectos con el compilador. Los análisis léxico, sintáctico y verificación de tipos son exactamente los mismos que en un compilador. Pero en lugar de generar código del árbol sintáctico, el árbol sintáctico se procesa directamente para evaluar expresiones y ejecutar sentencias, y así hasta terminar. Un intérprete puede necesitar evaluar la misma parte del árbol sintáctico varias veces (por ejemplo cuando se hacen ciclos), por eso la interpretación puede ser más lenta que la ejecución de un programa compilado. Pero escribir un intérprete es más fácil de mover a una máquina diferente, así que para aplicaciones donde la velocidad no importa, lo mejor es utilizar un intérprete. Es muy útil sabe cómo se hace un intérprete o un compilador, porque esto permite a los programadores tener una idea de lo que hacen los programas de alto nivel, lo que a su vez, ayudará a los programadores para crear código más eficiente. Otras razones. Los errores que devuelven los compiladores proporcionan una manera fácil de entender el código fuente; además, se conoce la diferencia entre errores léxicos, sintácticos, errores de tipos, y así.


Ventajas del intérprete frente al compilador: El programa se puede ejecutar de inmediato, sin esperar a ser compilado. Puede ser interrumpido con facilidad. puede ser rápidamente modificado y ejecutado nuevamente. Resultan muy apropiados durante la fase de desarrollo de un programa, ya que la compilación no permite la ejecución paso a paso del programa y con ello impide la edición seguimiento y depuración del programa.

Desventajas del intérprete frente al compilador: La ejecución es más lenta, pues cada instrucción debe ser traducida a código máquina tantas veces como sea ejecutada. No son adecuados en la fase de explotación del programa ya que el proceso de interpretación se ha de repetir cada vez que se ejecuta el programa, mientras que con la compilación, una vez obtenido el programa en leguaje máquina éste puede ser ejecutado sin necesidad de compilarlo de nuevo.

Tipos de intérprete Python Python es un lenguaje de programación interpretado cuya filosofía hace hincapié en una sintaxis muy limpia y que favorezca un código legible. Se trata de un lenguaje de programación multiparadigma, ya que soporta orientación a objetos, programación imperativa y, en menor medida, programación funcional. Es un lenguaje interpretado, usa tipado dinámico y es multiplataforma. Es administrado por la Python Software Foundation. Posee una licencia de código abierto, denominada Python Software Foundation License, que es compatible con la Licencia pública general de GNU a partir de la versión 2.1.1, e incompatible en ciertas versiones anteriores.

Ruby Ruby es un lenguaje de programación interpretado, reflexivo y orientado a objetos, creado por el programador japonés Yukihiro "Matz" Matsumoto, quien comenzó a trabajar en Ruby en 1993, y lo presentó públicamente en 1995. Combina una sintaxis inspirada en Python y Perl con características de programación orientada a objetos similares a Smalltalk. Comparte también funcionalidad con otros lenguajes de programación como Lisp, Lua, Dylan y CLU. Ruby es un lenguaje de programación interpretado en una sola pasada y su implementación oficial es distribuida bajo una licencia de software libre.


Perl Perl es un lenguaje de programación diseñado por Larry Wall en 1987. Perl toma características del lenguaje C, del lenguaje interpretado bourne shell (sh), AWK, sed, Lisp y, en un grado inferior, de muchos otros lenguajes de programación. Estructuralmente, Perl está basado en un estilo de bloques como los del C o AWK, y fue ampliamente adoptado por su destreza en el procesado de texto y no tener ninguna de las limitaciones de los otros lenguajes de script.

JavaScript JavaScript es un lenguaje de programación interpretado, dialecto del estándar ECMAScript. Se define como orientado a objetos, basado en prototipos, imperativo, débilmente tipado y dinámico. Se utiliza principalmente en su forma del lado del cliente (client-side), implementado como parte de un navegador web permitiendo mejoras en la interfaz de usuario y páginas web dinámicas aunque existe una forma de JavaScript del lado del servidor (Server-side JavaScript o SSJS). Su uso en aplicaciones externas a la web, por ejemplo en documentos PDF, aplicaciones de escritorio (mayoritariamente widgets) es también significativo. JavaScript se diseñó con una sintaxis similar al C, aunque adopta nombres y convenciones del lenguaje de programación Java. Sin embargo Java y JavaScript no están relacionados y tienen semánticas y propósitos diferentes. Todos los navegadores modernos interpretan el código JavaScript integrado en las páginas web. Para interactuar con una página web se provee al lenguaje JavaScript de una implementación del Document Object Model (DOM). Tradicionalmente se venía utilizando en páginas web HTML para realizar operaciones y únicamente en el marco de la aplicación cliente, sin acceso a funciones del servidor. JavaScript se interpreta en el agente de usuario, al mismo tiempo que las sentencias van descargándose junto con el código HTML. Una cuarta edición está en desarrollo e incluirá nuevas características tales como paquetes, espacio de nombres y definición explícita de clases.


Conclusión Los intérpretes son una herramienta muy poderosa, un desarrollo que te convierte cualquier lenguaje de alto nivel a uno bajo, y te compila y ejecuta operaciones complejas fácilmente sin la necesidad de código para este tipo de necesidades. Son muchos los lenguajes que cuentan con esta ventaja, como lo son Python, JavaScript o Perl, que nos ofrecen toda esta tecnología, solo es cuestión de estudiar bien su sintaxis y adaptarnos a su entorno, para poder desarrollar óptimamente en ellos. Personalmente el estudio de Python como apoyo a este tema es muy recomendable ya que te hace visualizar de manera práctica todas las funcionalidades existentes.


Bibliografía: “Definición de interprete” [en línea]. Disponible en la web: http://www.alegsa.com.ar/Dic/interprete.php Rentería, José Luis. “Interpretes” [en línea]. 26 de abril del 2010, Disponible en la web: http://renteria83.blogspot.mx/2010/04/interpretes.html Cáceres González Abdiel. “Compiladores e intérpretes de programas” [en línea]. Disponible en la web: http://www.mailxmail.com/curso-informatica-ordenador-cientificodesarrollo/compiladores-interpretes-programas Wikipedia, “Python” [en línea]. Disponible en la web: http://es.wikipedia.org/wiki/Python Wikipedia, “Ruby” [en línea]. Disponible en la web: http://es.wikipedia.org/wiki/Ruby Wikipedia, “Perl” [en línea]. Disponible en la web: http://es.wikipedia.org/wiki/Perl Wikipedia, “JavaScript” [en línea]. Disponible en la web: http://es.wikipedia.org/wiki/JavaScript


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.