sábado, 5 de septiembre de 2009

Función de un compilador

En el mundo actual de la informática, existen 2 formas de ejecutar programas: programas compilados y programas interpretados. Los programas interpretados son aquellos que se ejecutan en tiempo real por medio de un intérprete, por ejemplo HTML; mientras que, los programas compilados son aquellos que por medio de un compilador se traduce a código objeto, y puede ser ejecutado cuantas veces se desee sin compilarlo cada vez. Para entender la función de un compilador; se debe definir el término, describir las partes de un compilador y diferenciar los tipos de compiladores.

Un compilador es una aplicación que traduce el código fuente escrito en un lenguaje de programación conocido y entendible por los humanos, a código objeto, conocido como código máquina, es decir un código que lo entienden las computadoras.

Para que el proceso de compilación sea posible, existen varias partes, pasos o fases de compilación, las cuales son:

· Análisis o Front End

En esta parte se genera el árbol de derivación y se rellena la tabla de símbolos.

o Análisis Léxico

Consiste en evaluar si el token es o no parte del lenguaje, y si sí, lo relaciona con el lexema correspondiente.

o Análisis Sintáctico

Consiste en evaluar si el token viene o no en el lugar correcto, el análisis realizado es jerárquico.

o Análisis Semántico

Consiste en evaluar si el o los tokens tienen lógica al unificarse.

· Síntesis o Back End

o Generación de Código intermedio

Es una representación de código en base a 3 elementos (código 3 direcciones), que facilita el análisis del código.

o Optimización de código

Es realizar una mejora al código intermedio con el fin de realizar una ejecución más rápida.

o Generación de código

En esta parte es donde se genera el código que será entendible para la computadora.

Existen varios tipos de compiladores, para clasificarlos se toman en cuenta sus características y su manera de generar el código. Dichos tipos no son excluyentes, es decir que un compilador puede tener varios tipos.

· Compiladores cruzados

Generan código para un sistema distinto al que pertenecen

· Compiladores optimizadores

Son capaces de realizar cambios en el código para mejorar en eficiencia sin quitarle la funcionalidad al programa.

· Compiladores de una pasada

Realizan una única lectura del código fuente para generar el código máquina.

· Compiladores de varias pasadas

Realizan varias lecturas al código fuente para generar el código máquina.

· Compiladores Just In Time –JIT-

Forman parte de un intérprete y compilan las partes del código que necesiten.

· Optimación

Lee el código fuente, lo analiza y descubre los errores sin ejecutar el programa.

· Compiladores Incrementales

Generan el código objeto instrucción por instrucción, cada vez que el usuario ingresa cada orden de forma individual.

· Compilador con montador

Compila los módulos por aparte y luego los enlaza.

· Autocompilador

Está escrito en el mismo lenguaje que va a compilar, sirve para ampliar el lenguaje o hacer mejoras. No puede ser ejecutado la primera vez.

· Metacompilador

Compilador de compiladores, es un programa que recibe en la entrada, las especificaciones del lenguaje para el que quiere tener un compilador y genera como salida el compilador de dicho lenguaje.

Tomando en cuenta lo anterior, se puede percibir claramente que la función principal de un compilador es transformar código “humano” en código de computadora, detectando los errores encontrados. Por tanto concluimos que para comprender la función de un compilador debemos de definir bien el término, conocer las partes del compilador y saber los distintos tipos de compiladores.