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.