Você está na página 1de 2

COMPILADORES

Los compiladores son programas que "traducen" un fichero de cdigo fuente de cualquier lenguaje al lenguaje ensamblador, y llama cuando sea necesario al ensamblador y al linker (enlazador). Los ms importantes son GCC (para C), G++ (para C++), G77 (para Fortran 77), Microsoft Visual C++, etc. Un compilador es un programa que permite traducir el cdigo fuente de un programa en lenguaje de alto nivel, a otro lenguaje de nivel inferior (tpicamente lenguaje de mquina). De esta manera un programador puede disear un programa en un lenguaje mucho ms cercano a cmo piensa un ser humano, para luego compilarlo a un programa ms manejable por una computadora. Como parte importante de este proceso de traduccin, el compilador informa a su usuario de la presencia de errores en el programa fuente La construccin de un compilador involucra la divisin del proceso en una serie de fases que variar con su complejidad. Generalmente estas fases se agrupan en dos tareas: el anlisis del programa fuente y la sntesis del programa objeto. Anlisis: Se trata de la comprobacin de la correccin del programa fuente, e incluye las fases correspondientes al Anlisis lxico (que consiste en la descomposicin del programa fuente en componentes lxicos), Anlisis sintctico (agrupacin de los componentes lxicos en frases gramaticales) y Anlisis semntico (comprobacin de la validez semntica de las sentencias aceptadas en la fase de Anlisis Sintctico). Sntesis: Su objetivo es la generacin de la salida expresada en el lenguaje objeto y suele estar formado por una o varias combinaciones de fases de Generacin de Cdigo (normalmente se trata de cdigo intermedio o de cdigo objeto) y de Optimizacin de Cdigo (en las que se busca obtener un cdigo lo ms eficiente posible). Alternativamente, las fases descritas para las tareas de anlisis y sntesis se pueden agrupar en Front-end y Back-end: Front-end: es la parte que analiza el cdigo fuente, comprueba su validez, genera el rbol de derivacin y rellena los valores de la tabla de smbolos. Esta parte suele ser independiente de la plataforma o sistema para el cual se vaya a compilar, y est compuesta por las fases comprendidas entre el Anlisis Lxico y la Generacin de Cdigo Intermedio. Back-end: es la parte que genera el cdigo mquina, especfico de una plataforma, a partir de los resultados de la fase de anlisis, realizada por el Front End. 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.

ENSAMBLADORES
Los ensambladores son aquellos programas que se encargan de desestructurar el cdigo en lenguaje ensamblador y traducirlo a lenguaje binario. Los archivos en lenguaje binario sern posteriormente enlazados en un nico fichero, el ejecutable. Los ms importantes son tas, gas, nasm...

ENLAZADORES (LINKERS)
Son los programas que enlazan varios ficheros objeto en lenguaje binario para crear un nico fichero, el ejecutable del programa. El ms importante es ld. Un enlazador (en ingls, linker) es un programa que toma los objetos generados en los primeros pasos del proceso de compilacin, la informacin de todos los recursos necesarios (biblioteca), quita aquellos recursos que no necesita, y enlaza el cdigo objeto con su(s) biblioteca(s) con lo que finalmente produce un fichero ejecutable o una biblioteca. En el caso de los programas enlazados dinmicamente, el enlace entre el programa ejecutable y las bibliotecas se realiza en tiempo de carga o ejecucin del programa.

DEPURADORES (DEBUGGERS)
Como su nombre indica, sirve para corregir bugs. Se encargan de ejecutar, paso a paso y advirtiendo de errores, valores de variables, etc. un programa. Son particularmente tiles cuando el programa parece estar bien, pero no da el resultado esperado (se cuelga, da resultados errneos...). El ms importante es GDB. Actualmente casi todas las IDEs incluyen uno, o deberan.

EDITORES DE TEXTO
Son tan importantes como un compilador (imagnate como programar sin editores), y actualmente suelen incluir funciones especficamente dedicadas a la programacin, como resaltado de sintaxis, autoindentacin, etc. Grandes editores de texto son GNU Emacs, Vim, Scite, Notepad++...

OTRAS HERRAMIENTAS
No son tan importantes como las anteriores, pero tambin tienen su importancia: IDEs (Interfaz de Desarrollo Estructurada): juntan en un slo programa editor de texto, compilador, enlazador, ensamblador, depurador... Ejemplos de ellas son Anjuta, Dev-Cpp, Codeblocks...

Programas de indentacin: sirven para aclarar el cdigo escrito confusamente. El nico que conozco es indent. De todas formas, un editor de texto medianamente decente suele incluir sus propias funciones de indentado.

Você também pode gostar