Saltar al contenido
Inicio

Compilador (programa informático)

Un compilador es software que traduce código fuente de un lenguaje de programación a otro (a menudo código máquina o una forma intermedia). Este artículo explica sus partes, historia, tipos y usos.

Visión general

Un compilador es un programa informático que convierte código fuente escrito en un lenguaje de programación en código de otro lenguaje. El lenguaje original se llama lenguaje fuente y el resultado es el lenguaje destino. En muchas situaciones comunes, el destino es código máquina que un procesador puede ejecutar directamente, o bien una forma intermedia como bytecode que se ejecuta en una máquina virtual. Para una introducción breve, véase visión general.

Galería de imágenes

1 Imagen

Partes principales y fases de procesamiento

La mayoría de los compiladores se organizan en etapas de front-end y back-end, y realizan varias fases distintas. Estas fases transforman y verifican progresivamente el texto del programa, desde los caracteres en bruto hasta las instrucciones ejecutables:

  • Análisis léxico — agrupa los caracteres en tokens, como identificadores, literales y operadores.
  • Análisis sintáctico (parsing) — construye una estructura en forma de árbol que representa la gramática del programa.
  • Análisis semántico — comprueba tipos, uso de símbolos y otras reglas del lenguaje, y anota el árbol con su significado.
  • Representación intermedia y optimización — convierte el programa en una forma adecuada para su transformación e intenta mejorar el rendimiento o el tamaño.
  • Generación de código — produce texto en el lenguaje destino o instrucciones de máquina.
  • Enlazado y ensamblado — combina varias unidades compiladas y resuelve referencias para crear un ejecutable final.

Herramientas especializadas, como los generadores de analizadores sintácticos y los sistemas compilador-compilador, ayudan a construir front-ends para nuevos lenguajes.

Historia y desarrollo

Los compiladores surgieron cuando los programadores buscaron escribir en lenguajes de nivel más alto en lugar de usar instrucciones de máquina en bruto. Los primeros lenguajes de alto nivel y sus compiladores hicieron práctico expresar algoritmos con más claridad y dirigirse a distinto hardware mediante una salida traducida. Con el tiempo, el campo incorporó muchas técnicas —desde gramáticas formales y construcción automática de analizadores sintácticos hasta estrategias sofisticadas de optimización—, lo que permitió a los compiladores producir código muy eficiente y dar soporte a sistemas de software grandes y complejos. Para más contexto, consulte resúmenes históricos.

Tipos y distinciones notables

Los compiladores varían según sus objetivos y salidas. Entre las distinciones más comunes se incluyen:

  • Compiladores ahead-of-time (AOT), que traducen el código fuente al destino antes de la ejecución.
  • Compiladores just-in-time (JIT), que compilan el código en tiempo de ejecución para aprovechar las condiciones reales de ejecución.
  • Compiladores cruzados, que producen código ejecutable para una máquina o sistema operativo distinto de aquel en el que se ejecutan.
  • Transpiladores, que traducen entre lenguajes de alto nivel en lugar de hacerlo a código máquina.
  • Decompiladores, que intentan recuperar código fuente legible a partir de binarios compilados.

Si una herramienta se llama compilador o intérprete depende de si produce un programa de salida independiente o ejecuta el código directamente; muchos sistemas modernos combinan ambos enfoques (por ejemplo, compilar a bytecode e interpretar ese bytecode o recompilarlo con JIT).

Usos, ejemplos e importancia

Los compiladores son centrales en el desarrollo de software. Permiten la portabilidad al dirigirse a distintos procesadores y sistemas operativos, mejoran el rendimiento mediante la optimización, facilitan la comprobación y el análisis estáticos de errores, y hacen viables nuevos paradigmas de programación. Entre los lenguajes compilados más conocidos hay lenguajes orientados a sistemas y muchos lenguajes de propósito general; sus compiladores traducen programas legibles para humanos en operaciones eficientes a nivel de máquina o en bytecode portátil. Para tutoriales prácticos y cadenas de herramientas, véase recursos para desarrolladores y las implementaciones de compilación cruzada para sistemas integrados en guías de plataforma.

Más allá de producir ejecutables, la infraestructura moderna de compiladores suele proporcionar bibliotecas y servicios usados por entornos de desarrollo integrados (IDE), analizadores estáticos y herramientas de refactorización. Estas herramientas compartidas amplían la productividad y ayudan a mantener la calidad del software a gran escala.

Artículos relacionados

Autor

AlegsaOnline.com Compilador (programa informático)

URL: https://es.alegsaonline.com/art/22240

Compartir