You are on page 1of 7

LABORATORIO N4

USO DE COMPILADORES
1. OBJETIVOS.-

Uso de los compiladores para aplicaciones de usuario.

2. MARCO TEORICO.-

Un traductor es cualquier programa que toma como entrada un texto escrito en un
lenguaje, llamado fuente y da como salida otro texto en un lenguaje, denominado
objeto.



En el caso de que el lenguaje fuente sea un lenguaje de programacin de alto nivel y el
objeto sea un lenguaje de bajo nivel (ensamblador o cdigo de mquina), a dicho
traductor se le denomina compilador. Un ensamblador es un compilador cuyo lenguaje
fuente es el lenguaje ensamblador. Un intrprete no genera un programa equivalente,
sino que toma una sentencia del programa fuente en un lenguaje de alto nivel y la
traduce al cdigo equivalente y al mismo tiempo lo ejecuta.

Histricamente, con la escasez de memoria de los primeros ordenadores, se puso de
moda el uso de intrpretes frente a los compiladores, pues el programa fuente sin
traducir y el intrprete juntos daban una ocupacin de memoria menor que la
resultante de los compiladores. Por ello los primeros ordenadores personales iban
siempre acompaados de un intrprete de BASIC (Spectrum, Commodore VIC-20, PC
XT de IBM, etc.). La mejor informacin sobre los errores por parte del compilador as
como una mayor velocidad de ejecucin del cdigo resultante hizo que poco a poco se
impusieran los compiladores. Hoy en da, y con el problema de la memoria
prcticamente resuelto, se puede hablar de un gran predominio de los compiladores
frente a los intrpretes, aunque intrpretes como los incluidos en los navegadores de
Internet para interpretar el cdigo JVM de Java son la gran excepcin.

Ventajas de un compilador frente a un intrprete:

Se compila una vez, se ejecuta n veces.
En bucles, la compilacin genera cdigo equivalente al bucle, pero interpretndolo
se traduce tantas veces una lnea como veces se repite el bucle.
El compilador tiene una visin global del programa, por lo que la informacin de
mensajes de error es mas detallada.
Ventajas del intrprete frente al compilador:
Un intrprete necesita menos memoria que un compilador. En principio eran ms
abundantes dado que los ordenadores tenan poca memoria.
Permiten una mayor interactividad con el cdigo en tiempo de desarrollo.

Un compilador no es un programa que funciona de manera aislada, sino que necesita
de otros programas para conseguir su objetivo: obtener un programa ejecutable a
partir de un programa fuente en un lenguaje de alto nivel. Algunos de esos programas
son el preprocesador, el linker, el depurador y el ensamblador. El preprocesador se
ocupa (dependiendo del lenguaje) de incluir ficheros, expandir macros, eliminar
comentarios, y otras tareas similares. El linker se encarga de construir el fichero
ejecutable aadiendo al fichero objeto generado por el compilador las cabeceras
necesarias y las funciones de librera utilizadas por el programa fuente. El depurador
permite, si el compilador ha generado adecuadamente el programa objeto, seguir paso
a paso la ejecucin de un programa. Finalmente, muchos compiladores, en vez de
generar cdigo objeto, generan un programa en lenguaje ensamblador que debe
despus convertirse en un ejecutable mediante un programa ensamblador.


Tipos de compiladores:

Compiladores cruzados: generan cdigo para un sistema distinto del que estn
funcionando.
Compiladores optimizadores: realizan cambios en el cdigo para mejorar su
eficiencia, pero manteniendo la funcionalidad del programa original.
Compiladores de una sola pasada: generan el cdigo mquina a partir de una
nica lectura del cdigo fuente.
Compiladores de varias pasadas: necesitan leer el cdigo fuente varias veces
antes de poder producir el cdigo mquina.
Compiladores JIT (Just In Time): forman parte de un intrprete y compilan partes
del cdigo segn se necesitan.

Proceso de compilacin:

El proceso de traduccin se compone internamente de varias etapas o fases, que
realizan distintas operaciones lgicas. Es til pensar en estas fases como en piezas
separadas dentro del traductor, y pueden en realidad escribirse como operaciones
codificadas separadamente aunque en la prctica a menudo se integren juntas.

a. Fase de anlisis
Anlisis lxico
El anlisis lxico constituye la primera fase, aqu se lee el programa fuente de
izquierda a derecha y se agrupa en componentes lxicos (tokens), que son
secuencias de caracteres que tienen un significado. Adems, todos los espacios
en blanco, lneas en blanco, comentarios y dems informacin innecesaria se
elimina del programa fuente. Tambin se comprueba que los smbolos del
lenguaje (palabras clave, operadores, etc.) se han escrito correctamente en el
tiempo, el analizador lxico debe funcionar de manera tan eficiente como sea
posible.
Anlisis sintctico
En esta fase los caracteres o componentes lxicos se agrupan jerrquicamente
en frases gramaticales que el compilador utiliza para sintetizar la salida. Se
comprueba si lo obtenido de la fase anterior es sintcticamente correcto
(obedece a la gramtica del lenguaje). Por lo general, las frases gramaticales
del programa fuente se representan mediante un rbol de anlisis sintctico.
Anlisis semntico
La fase de anlisis semntico revisa el programa fuente para tratar de
encontrar errores semnticos y rene la informacin sobre los tipos para la
fase posterior de generacin de cdigo. En ella se utiliza la estructura
jerrquica determinada por la fase de anlisis sintctico para identificar los
operadores y operandos de expresiones y proposiciones.
Un componente importante del anlisis semntico es la verificacin de tipos.
Aqu, el compilador verifica si cada operador tiene operandos permitidos por la
especificacin del lenguaje fuente.

b. Fase de sntesis

Consiste en generar el cdigo objeto equivalente al programa fuente. Slo se
genera cdigo objeto cuando el programa fuente est libre de errores de anlisis,
lo cual no quiere decir que el programa se ejecute correctamente, ya que un
programa puede tener errores de concepto o expresiones mal calculadas. Por lo
general el cdigo objeto es cdigo de mquina relocalizable o cdigo ensamblador.
Las posiciones de memoria se seleccionan para cada una de las variables usadas
por el programa. Despus, cada una de las instrucciones intermedias se traduce a
una secuencia de instrucciones de mquina que ejecuta la misma tarea. Un
aspecto decisivo es la asignacin de variables a registros.

Generacin de cdigo intermedio

Despus de los anlisis sintctico y semntico, algunos compiladores generan una
representacin intermedia explcita del programa fuente. Se puede considerar esta
representacin intermedia como un programa para una mquina abstracta. Esta
representacin intermedia debe tener dos propiedades importantes; debe ser fcil
de producir y fcil de traducir al programa objeto.

Optimizacin de cdigo

La fase de optimizacin de cdigo consiste en mejorar el cdigo intermedio, de
modo que resulte un cdigo mquina ms rpido de ejecutar. Esta fase de la etapa
de sntesis es posible sobre todo si el traductor es un compilador (difcilmente
un intrprete puede optimizar el cdigo objeto). Hay mucha variacin en la
cantidad de optimizacin de cdigo que ejecutan los distintos compiladores. En los
que hacen mucha optimizacin, llamados compiladores optimizadores, una
parte significativa del tiempo del compilador se ocupa en esta fase. Sin embargo,
hay optimizaciones sencillas que mejoran sensiblemente el tiempo de ejecucin
del programa objeto sin retardar demasiado la compilacin.

3. MARCO PRACTICO.-

Para observar el funcionamiento de un compilador veremos el caso especfico de
LATEX.
LaTeX es un sistema de preparacin de documentos. Con l se puede preparar
manuscritos, artculos de revista, cartas, tesis, presentaciones y cualquier tipo
de documento que se quiera imprimir en papel o mostrar en pantalla.
En la superficie, una de las ventajas de LaTeX es la calidad profesional de los
documentos que se pueda generar. Esto es particularmente cierto para documentos
que contengan frmulas o ecuaciones, pero LaTeX tiene muchas aplicaciones ms all
de las matemticas.
Una ventaja menos obvia, pero quiz ms importante, es que LaTeX es que permite
claramente separar el contenido y el formato del documento. Para un cientfico,
investigador o escritor, esto le da la oportunidad de concentrarte en el qu, en la
parte creativa de su obra, en generar y escribir ideas. Por su parte el sistema se
encargar del cmo hacer para plasmar esas ideas visualmente en un documento.
LaTeX, adems, realiza de manera automtica muchas tareas que de otro modo
podran resultar tediosas o engorrosas: numerar captulos y figuras, incluir y organizar
la bibliografa adecuada, mantener ndices y referencias cruzadas.


Un documento en LaTeX tiene dos partes principales: el prembulo y el cuerpo del
documento. El prembulo es iniciado por la instruccin \documentclass, mientras que
el cuerpo del documento est delimitado por los
comandos \begin{document} y\end{document}
El esqueleto vaco de un documento en LaTeX se ve as:


Los comandos en LaTeX inician con una diagonal invertida: \comando, mientras que
los comentarios (texto que no aparecer en el documento final y slo sirve para
agregar notas dentro del cdigo) se escriben despus de un signo de porcentaje: %
comentario.
Algunos comandos tienen parmetros obligatorios que se escriben entre
llaves {..}.
Algunos otros llevan tambin parmetros opcionales que van entre
corchetes [..].

Por ejemplo el parmetro article en \documentclass indica a LaTeX que el documento
se trata de un artculo y utilizar entonces el formato adecuado. Otras opciones
pueden serbook, report, letter y slides que sirven para hacer libros, reportes, cartas, y
diapositivas respectivamente.

Algunos parmetros opcionales para \documentclass son 11pt y 12pt que especifican
un tipo de letra ms grande (el normal es de 10pt), twocolumn que escribe el texto a
dos columnas y twoside que ajusta los mrgenes del documento para imprimir a dos
caras. Por ejemplo, para escribir un reporte con letra tamao 12pt y a dos columnas
entonces se escribe el comando


Prembulo. En el prembulo se pueden incluir instrucciones para activar paquetes que
agregan funciones adicionales a LaTeX, as como datos generales sobre el documento
que ests escribiendo. Un prembulo tpico podra verse as:

Los dos primeros paquetes, lmodern y fontenc, se utilizan para mejorar el soporte de
caracteres especiales en la fuente (tipo de letra) que se usar en tu documento. Por
ejemplo para que puedas copiar y pegar texto correctamente desde el documento PDF
que produzcas al final.

El siguiente paquete incluido es babel con la opcin spanish que traduce algunas de las
etiquetas usadas por LaTeX, y agrega opciones especiales para redactar documentos
en espaol. Si no incluyes este paquete, o cambias spanish por english, LaTeX
supondr que ests escribiendo en ingls.

El ltimo paquete incluido es mathtools que agrega algunos comandos y funciones
especiales para facilitar la escritura de frmulas y ecuaciones matemticas.

Hay muchos otros paquetes que se puede incluir y que agregan funciones adicionales a
tu documento, pero estos son los bsicos que siempre es una buena idea incluir.
Algunos otros paquetes tpicos son hyperref, que te permite incluir ligas en tu
documento, biblatex, para administrar tu bibliografa, o tikz, para crear todo tipo de
ilustraciones.
Finalmente los campos \title, \author y \date especifican los datos que irn en el
encabezado del documento. Normalmente, de hecho, no es necesario incluir el
comando\date pues LaTeX usar en su lugar la fecha actual cuando generes tu
documento.

Cuerpo del documento. En el cuerpo del documento es donde se escribe todo el texto
que aparecer en el documento final. Usualmente se inicia con el
comando\maketitle que se encarga de escribir los datos del ttulo con la informacin
que indicaste en el prembulo.
Todo el texto normal se escribe tal cual. Si quieres decir Hola simplemente
escribe Hola.

Algunas notas importantes:

Si dejas varios espacios en blanco entre palabras, LaTeX los toma como si fueran
uno solo.
No es necesario dejar espacios al inicio de un prrafo para indicar una sangra,
LaTeX ignora estos espacios y ajusta las sangras adecuadas de manera automtica.
Para separar dos prrafos simplemente deja una lnea en blanco entre un prrafo y
el siguiente, el simple fin de lnea no hace la separacin.
Varias lneas en blanco juntas valen lo mismo que una sola.

4. BIBLIOGRAFIA.-

You might also like