Compiladores
Compiladores
Definició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.
Tipos
Compiladores cruzados: generan código para un sistema distinto del que están funcionando.
Compiladores optimizadores:realizan cambios en el código para mejorar su eficiencia, pero manteniendo la funcionalidad del programa original.
Compiladores de una sola pasada: generan el código máquina a partir de una única lectura del código fuente.
Compiladores de varias pasadas: necesitan leer el código fuente varias veces antes de poder producir el código máquina.
Compiladores JIT (Just In Time): forman parte de unintérprete y compilan partes del código según se necesitan.
Características
Generalmente un compilador se divide en dos partes:
Front End: parte que analiza el código fuente, comprueba su validez, genera el árbol de derivación y rellena los valores de la tabla de símbolos. Parte que suele ser independiente de la plataforma o sistema operativo para el que funcionará.
Back End: parte en donde segenera el código máquina exclusivo para una plataforma a partir de lo analizado en el front end.
Por lo general el resultado del back end no puede ser ejecutado directamente, se necesita pasar por un proceso de enlazado (linker).
Función
A grandes rasgos un compilador es un programa que lee un programa escrito es un lenguaje, el lenguaje fuente, y lo traduce a un programa equivalente en otrolenguaje, el lenguaje objeto. Como parte importante de este proceso de traducción, el compilador informa a su usuario de la presencia de errores en el programa fuente.
Sintaxis
CL [option...] file... [option | file]... [lib...] [@command-file] [/link link-opt...]
Entrada | Significado |
option | Una o varias opciones de CL. Tenga en cuenta que todas las opciones se aplican a todos losarchivos de código fuente especificados. Las opciones se especifican mediante una barra diagonal (/) o un guión (–). Si una opción recibe un argumento, la descripción de la opción documentará si se permite un espacio entre ella y el argumento. Los nombres de opción (excepto /HELP) hacen distinción entre mayúsculas y minúsculas. Vea Orden de las opciones de CL para obtener más información. |
file |Nombre de uno o varios archivos de código fuente, archivos .obj o bibliotecas. CL compila los archivos de código fuente y pasa al vinculador los nombres de los archivos .obj y las bibliotecas. Vea la Sintaxis de los nombres de archivo de CL para obtener más información. |
lib | Uno o varios nombres de biblioteca. CL pasa estos nombres al vinculador. |
command-file | Archivo que contienevarios nombres de archivo y opciones. Vea Archivos de comandos CL para obtener más información. |
link-opt | Una o varias opciones de vinculador. CL pasa estas opciones al vinculador. |
Diferencia entre ellos
Intérpretes vs compiladores
Cualquier lenguaje puede ser ejecutado tanto vía intérprete o vía compilador, pero algunos lenguajes suelen asociarse más a una vía que a la otra, y por estoson llamados "lenguajes interpretados" o "lenguajes compilados" respectivamente.
También puede darse que un programa contenga partes que son implementadas vía intérprete y otras vía compilador.
También existen intérpretes que incluyen cierta "compilación" en el medio. Son aquellos que compilan a un código intermedio llamado bytecode, que es más eficiente de ejecutar que hacerlo directamentedesde el código fuente.
En general, la principal desventaja de los intérpretes, es que cuando un programa es interpretado, suele ejecutarse más lento que si el mismo programa estuviese compilado. Esto se debe a que el intérprete debe analizar cada sentencia en el programa en cada ejecución (un análisis en tiempo real). También el acceso a variables es más lento en un intérprete, porque mapear...
Regístrate para leer el documento completo.