Lenguajes compiladores: ¿Qué son? Ejemplos
¿Compilar? Es el momento decisivo en donde comprobarás cómo se comporta la aplicación que acabas de desarrollar. Si no estás seguro de los alcances de esta tarea, estás en el lugar adecuado para despejar todas tus dudas.
En este post encontrarás toda la información y las herramientas para compilar necesarias para llevar a cabo este proceso de forma clara y sencilla, y además como un experto.
Qué vas a encontrar aquí?: Qué es compilar un programa. Qué es un lenguaje compilador? Etapas de compilación. Partes de un compilador. Ejemplos de compiladores.
Qué es compilar un programa?
Antes de empezar a transitar este camino, no sería mala idea repasar los conceptos sobre lo que es compilar.
Básicamente, se denomina compilación al proceso de traducir el código escrito en un determinado lenguaje de programación a un formato binario, más cercano al procesador.
Al programa informático encargado de llevar adelante esta tarea, también llamada “ensamblar”, se lo denomina “Compilador”.
Entonces, cuando compilas, estás traduciendo de un lenguaje como C++ o Java textos y órdenes que pueden ser entendidas por personas a unos y ceros, que sólo entienden los procesadores digitales.
Cabe destacar en este punto que a algunos compiladores que traducen códigos de un lenguaje a otro del mismo nivel, se los denomina “Transpiladores”.
Qué es un lenguaje compilador?
Todo comenzó hace casi 70 años. En aquel momento, Grace Hopper, doctora en matemáticas y oficial de alto rango del ejército norteamericano, creía que las computadoras tenían que extenderse hacia un público masivo.
La misma idea que tenía Bill Gates unos cuantos años después.
Sin embargo, para que esto sucediera, debía darse que la programación se escapara de los ámbitos de los matemáticos y llegara a la gente con menos conocimientos en esta materia.
Precisamente en 1949, Hopper desarrolló un método que permitía traducir a lenguaje máquina código escrito de manera más amigable para los humanos. Es decir podía traducir los símbolos e instrucciones matemáticas, entendibles por personas, a lenguaje máquina. ¡Todo un logro!
Este programa, más que un método, no era otro que el compilador.
Luego de 3 años de trabajo, Hopper y su equipo presentaron en sociedad su compilador, sentando las bases de toda la informática moderna.
Básicamente, un programa compilador es un software capaz de traducir código fuente escrito en un lenguaje de alto nivel, entendible por las personas, al llamado lenguaje ensamblador, también conocido por código objeto.
Podría considerarse en este punto al compilador como un traductor, sin embargo, también cumple con otras tareas, como por ejemplo, el control de errores.
En este sentido, el compilador traduce todo el código fuente, es decir las instrucciones, más todas las bibliotecas y dependencias necesarias para que tu software pueda correr sin problemas.
El resultado de esta compilación es un archivo binario.
Además como se menciona, el compilador cumple con otras tareas, siendo una de las más importantes de ellas la comprobación de errores.
Esta corrección incluye el análisis de la estructura y la sintaxis del programa que escribiste. Si este análisis sale bien, entonces se pasa a otra instancia, en donde lo traduce a un lenguaje ensamblador intermedio entre tu código fuente y el archivo binario.
Este archivo binario es tu programa ejecutable.
Si quieres conocer con mayor profundidad y más explicadas todas las fases de la compilación, a partir de este punto tienes toda la información necesaria.
Etapas de compilación
Existen tres etapas en la compilación. En cada una de ellas se lleva a cabo un proceso diferente. Estas son:
Etapa de análisis
El primer paso que da tu código para convertirse en programa. En esta etapa el compilador lleva adelante un análisis profundo de la sintaxis y la estructura de tu programa.
En este punto, se analizará el contenido para agrupar a todos aquellos componentes relacionados con el programa. Estos se agrupan de forma jerárquica. Aquí también se eliminará toda la información que no es necesaria para la ejecución del programa como por ejemplo los espacios y los comentarios.
Con esto se garantiza que el código que escribiste esté correcto. Si el código es no tiene errores, se generará un intermedio (bytecode). Cuando este paso esté terminado, comenzará la etapa de la síntesis.
Etapa de síntesis
En esta etapa, a partir del código fuente, se generará el código objeto. Este código objeto usualmente está en lenguaje ensamblador. El lenguaje ensamblador es un lenguaje de bajo nivel.
Si quieres saber más sobre este lenguaje, en este post encontrarás mucha info: El lenguaje ensamblador.
Luego de este paso, y con el objetivo de traducir tu código fuente en lenguaje máquina, es necesario dar el último paso, la optimización.
Etapa de optimización
Una vez que se ha generado el código objeto, se comienza con esta etapa, en la cual se interpreta el código y se analiza para poder optimizarlo. ¿Qué significa esto?
Simplemente que el compilador buscará que las instrucciones sean lo más cortas posible, lo que resultara en una ejecución más rápida una vez que tu programa se encuentre instalado en una computadora.
Cabe destacar que en esta fase, se puede optar por dos tipos de optimización.
La primera es la optimización rápida. Esto implica un software menos optimizado, pero que utiliza menos tiempo de compilación.
La segunda opción es un software mucho más optimizado, pero por el contrario que tarde más en compilar.
Partes de un compilador
Los compiladores cuentan con dos partes. Estas son:
- El Front-end: También llamado Analizador. Esta parte del compilador se encarga de analizar el código fuente a compilar de tu programa. Usualmente es independiente de la plataforma en donde se programa.
- El Back-end: También llamado Generador. Quizás la parte más importante del compilador, ya que es la encargada de generar el lenguaje máquina a partir de los resultados de los análisis realizados.
Ejemplos de compiladores
Cuando la historia de la informática se comenzaba a gestar, los compiladores eran herramientas de software muy complejas de usar, y ni hablar de desarrollar.
En aquellos primeros tiempos, los desarrolladores utilizaban lenguaje ensamblador, o directamente los hacían en lenguaje binario, una tarea verdaderamente titánica.
Sin embargo, en la actualidad el panorama es completamente distinto. Y si bien los compiladores continúan siendo complicados de utilizar, su creación es un poco más distendida. Esto es gracias a todos los avances en la informática y los lenguajes de programación.
De hecho, hoy en día existen compiladores diseñados para determinados escenarios. Estos son:
- De una sola pasada o “Single pass compilers”: Este tipo de compiladores ofrecen la posibilidad de generar código máquina con una sola lectura del código fuente.
- De varias pasadas o “Multi-pass compilers”: Este tipo de compiladores requieren varias pasadas al código fuente de tu programa antes de convertirlo a lenguaje máquina. Esto es para evitar programas corruptos.
- JIT (Just In Time): Tipo de compilador que permite compilar un código en tiempo real cuando sea necesario.
- Cruzados o “Cross compilers”: Este tipo de compiladores fueron desarrolladores con el objetivo de generar código para un sistema operativo diferente al que se está utilizando para desarrollarlo.
- Optimizadores u “Optimizer compiler”: Este tipo de compiladores son capaces de analizar y realizar cambios a tu código con el objetivo de conseguir un mejor rendimiento.
Espero que este post les haya sido útil!
Deja una respuesta