viernes, 3 de octubre de 2014

TENDENCIAS ACTUALES DE COMPILADORES E INTÉRPRETES

Universidad Nacional Experimental de Guayana
Vicerrectorado Académico
Carrera: ingeniería en informática
Asignatura: informática

Sección 11





Profesora: Karla López.
Alumno: Daniel Carvajal


TENDENCIAS ACTUALES DE COMPILADORES E INTÉRPRETES
Un intérprete: es un programa que analiza y ejecuta simultáneamente un programa escrito en un lenguaje fuente.   Para una mejor comprensión, a continuación el esquema general de un intérprete visto como una caja negra. Cualquier intérprete tiene dos entradas: un programa P escrito en un lenguaje fuente LF (en lo sucesivo, se denotará P/LF) junto con los datos de entrada; a partir de dichas entradas, mediante un proceso de interpretación va produciendo unos resultados. (Ver figura 1).

 


Mientras que   los  compiladores: transforman el programa a un programa equivalente  en un código objeto (fase de compilación), y en un segundo paso generan los resultados a partir de los datos de entrada (fase de ejecución). (Ver figura 2).


Estructura de un intérprete
A la hora de construir un intérprete es conveniente utilizar una Representación Interna (RI) del lenguaje fuente a analizar. De esta forma, la organización interna de la mayoría de los intérpretes se descompone en los módulos:
§         Traductor a Representación Interna: Toma como entrada el código del programa P en Lenguaje Fuente, lo analiza y lo transforma a la representación interna correspondiente a dicho programa P.
§         Representación Interna (P/RI): La representación interna debe ser consistente con el programa original. Entre los tipos de representación interna, los árboles sintácticos son los más utilizados y, si las características del lenguaje lo permiten, pueden utilizarse estructuras de pila para una mayor eficiencia.
§         Tabla de símbolos: Durante el proceso de traducción, es conveniente ir creando una tabla con información relativa a los símbolos que aparecen. La información a almacenar en dicha tabla de símbolos depende de la complejidad del lenguaje fuente. Se pueden almacenar etiquetas para instrucciones de salto, información sobre identificadores (nombre, tipo, línea en la que aparecen, etc.) o cualquier otro tipo de información que se necesite en la etapa de evaluación.
§         Evaluador de Representación Interna: A partir de la Representación Interna anterior y de los datos de entrada, se llevan a cabo las acciones indicadas para obtener los resultados. Durante el proceso de evaluación es necesario contemplar la aparición de errores.
§         Tratamiento de errores: Durante el proceso de evaluación pueden aparecer diversos errores como desbordamiento de la pila, divisiones por cero, etc. que el intérprete debe contemplar.


Dependiendo de la complejidad del código a analizar, el intérprete puede contener módulos similares a los de un compilador tradicional: Análisis léxico, Sintáctico y Semántico.   Durante la evaluación, el intérprete interactúa con los recursos del sistema como la memoria, discos, etc. Muchos sistemas interpretados liberan al programador del manejo explícito de memoria mediante técnicas de recolección de basura.     
         A la hora de evaluar la representación interna, existen dos métodos fundamentales: la interpretación iterativa y la interpretación recursiva.
En general, la utilización de compiladores permite construir programas más eficientes que los correspondientes interpretados. Esto es debido a que durante la ejecución de código compilado no es necesario realizar complejos análisis (ya se hicieron en tiempo de compilación), además, un buen compilador es capaz de detectar errores y optimizar el código generado.
Los intérpretes, por definición, realizan la fase de análisis y ejecución a la vez, lo cual imposibilita tales optimizaciones. Por esta razón, los sistemas interpretados suelen ser menos eficientes que los compilados. No obstante, los nuevos avances  informáticos aumentan la velocidad de procesamiento y capacidad de memoria de los ordenadores. Actualmente, la eficiencia es un problema menos grave y muchas veces se prefieren sistemas que permitan un desarrollo rápido de aplicaciones que cumplan fielmente la tarea encomendada.
Tipos de intérpretes
§         Intérpretes  puros
§         Intérpretes avanzados
§         Intérpretes incrementales
§         Evaluadores Parciales
§         Compiladores “Just in Time”
§         Compilación Continua.

INGENIERO INFORMÁTICO
El Ingeniero Informático administra las tecnologías de información de las organizaciones (sistemas de telecomunicaciones y redes, sistemas de información, bases de datos, seguridad, infraestructura y servicios de cómputo); además formula, gestiona y evalúa el desarrollo de soluciones informáticas. A continuación menciono algunas de sus funciones:
ü      Analizar y diseñar sistemas de cómputo (hardware y software).
ü      Evaluar alternativas de diseño para sistemas de cómputo y diseñar lenguajes de programación y traducción.
ü      Producir el software y hardware correspondiente a las necesidades requeridas de la empresa.
üAplicar conocimientos científicos y tecnológicos en la solución de problemas en el área informática con un enfoque interdisciplinario, entre otros.


En cuanto a  las tendencias en los lenguajes de programación el estudio de los lenguajes de programación agrupa tres intereses diferentes; el del programador profesional, el del diseñador del lenguaje y del Implementador del lenguaje.  Además  han de realizarse dentro de las ligaduras y capacidades de la organización de una computadora y de las limitaciones fundamentales de la propia calculabilidad.
El programador, diseñador e implementador de un lenguaje de programación deben comprender la evolución histórica de los lenguajes para poder apreciar por que presentan características diferentes. Por ejemplo, los lenguajes "mas jóvenes" desaconsejan (o prohíben) el uso de las sentencias GOTO como mecanismo de control inferior, y esto es correcto en el contexto de las filosofías actuales de ingeniería del software y programación estructurada. Pero hubo un tiempo en que la GOTO, combinada con la IF, era la única estructura de control disponible; el programador no dispone de algo como la construcción WHILE o un IF-THEN-ELSE para elegir. Por tanto, cuando se ve un lenguaje como FORTRAN, el cual tiene sus raíces en los comienzos de la historia de los lenguajes de programación, uno no debe sorprenderse de ver la antigua sentencia GOTO dentro de su repertorio.
Lo más importante es que la historia nos permite ver la evolución de familias de lenguajes de programación, ver la influencia que ejercer las arquitecturas y aplicaciones de las computadoras sobre el diseño de lenguajes y evitar futuros defectos de diseño aprendido las lecciones del pasado. Los que estudian se han elegido debido a su mayor influencia y amplio uso entre los programadores, así como por sus distintas características de diseño e implementación. Colectivamente cubren los aspectos más importantes con los que ha de enfrentarse el diseñado de lenguajes y la mayoría de las aplicaciones con las que se enfrenta el programador. 


No hay comentarios.:

Publicar un comentario

Si le fue útil esta información, házmelo saber.