2.5 Traducción de un programa: compilación, enlace
de un programa, errores en tiempo de compilación.
Un compilador es
un programa informático que traduce un programa escrito
en un lenguaje de programación a otro lenguaje de programación,
generando un programa equivalente que la máquina será capaz de interpretar.
Usualmente el segundo lenguaje es lenguaje de máquina, pero también
puede ser un código intermedio (bytecode), o simplemente texto. Este proceso
de traducción se conoce como compilación.
Un compilador es un programa
que permite traducir el código fuente de un programa
en lenguaje de alto nivel, a otro lenguaje de nivel inferior
(típicamente lenguaje de máquina). De esta manera un programador puede
diseñar un programa en un lenguaje mucho más cercano a cómo piensa un ser
humano, para luego compilarlo a un programa más manejable
por una computadora.
Partes de un compilador:
La construcción de un
compilador involucra la división del proceso en una serie de fases que
variará con su complejidad. Generalmente estas fases se agrupan en dos
tareas: el análisis del programa fuente y la síntesis del programa objeto.
Alternativamente, las fases
descritas para las tareas de análisis y síntesis se pueden
agrupar en Front-end y Back-end:
Esta división permite que el
mismo Back End se utilice para generar el código
máquina de varios lenguajes de programación distintos y que el
mismo Front End que sirve para analizar el código fuente de
un lenguaje de programación concreto sirva para generar código
máquina en varias plataformas distintas. Suele incluir la generación y
optimización del código dependiente de la máquina.
El código que genera
el Back End normalmente no se puede ejecutar directamente,
sino que necesita ser enlazado por un programa enlazador (linker).
PREPROCESO:
Lo primero que el compilador de C hace es pasar
nuestro programa por el preprocesador.El preprocesador se encarga de
interpretar cada una de las directivas que aparecen en el programa y de
expandir las macros. Respecto a las directivas, son todos a aquellas líneas que
comienzan con un símbolo #. Hay un conjunto de directivas que son parte del
estándar ANSI se comentan en el apéndice.
COMPILACIÓN DEL PROGRAMA.
Una vez que el programador acaba de escribir el
programa en su terminal y lo almacena en un archivo debe traducirlo a código
ejecutable por la maquina. Este proceso se llama en su conjunto compilación
del código fuente en C.
#include<stdio.h>
Hace que se inserte el fichero stdio.h en el
lugar donde aparece esa línea. Como el lector puede ver si examina el fichero
stdio.h, lo que hay en el son declaraciones de prototipos de funciones y de
tipos de datos, perfectamente validos en C.
El compilador se encarga de la etapa de
preproceso, justo antes de iniciar la compilación. Por lo tanto , esta etapa
pasa normalmente desapercibida, aunque puede indicársele al compilador que
solo efectué el preproceso, para ver cómo queda el programa después de èl. La
forma de solicitárselo depende de cada compilador en concreto. Una vez
finalizado el preproceso , nuestro programa que da listo para que pueda
comenzarse su traducción a código ejecutable.
ENLACE:
La siguiente etapa de compilación es el enlace
con las funciones presentes en las librerías de funciones. Si nuestro
programa utiliza solo funciones ANSI, no suele ser necesario indicarle al
compilador en que librerías están esas funciones. Sin embargo hay
excepciones. Por ejemplo si utilizamos funciones matemáticas de la librería
estándar en nuestro programa (es decir en el programa aparece #include
<math.h>, opción –lm. Sin embargo, si utilizamos funciones definidas en
una librería propia o bien en una librería no estándar, debemos indicárselo
al compilador mediante algún parámetro.
ERRORES EN TIEMPO DE COMPILACIÓN: El compilador es capaz de detectar algunos errores que pueden cometerse en el desarrollo de un programa escrito en C. Evidentemente, no puede detectar todos ya que un programa puede funcionar perfectamente pero no hacer lo que se espera de él. Los errores detectados por el compilador son de dos clases: errores propiamente dichos (errors), y advertencias (warnings) Los errores se deben a cuestiones sintácticas relacionadas con el lenguaje. El compilador enumera los errores que se encontraron, y luego detiene la compilación. El mensaje de error que aparece siempre indica al menos tres cosas: *El nombre del fichero en donde se ha encontrado el error. *la línea del fichero en donde se ha detectado el error. |
No hay comentarios.:
Publicar un comentario