¿Qué es un lenguaje intermedio?
En la programación de computadoras, cuando un compilador analiza el código fuente legible por humanos, el compilador a menudo traduce los comandos fuente en una secuencia de instrucciones que no son del código de la máquina nativa pero que el compilador u otro software pueden procesar, optimizar o compilar aún más. herramientas. Los archivos que se producen contienen instrucciones que se dice que están en un idioma intermedio, porque el lenguaje utilizado por el compilador no es significativo para el sistema operativo más grande ni el lenguaje utilizado por el programador para escribir el código en primer lugar, sino es un lenguaje que actúa como un puente entre la escritura y la ejecución del programa. A veces se usa un lenguaje intermedio para permitir que un compilador realice optimizaciones muy precisas para que el programa se ejecute de manera más eficiente, pero también se puede usar para producir archivos de salida que son portables entre diferentes sistemas incompatibles. La sintaxis real del lenguaje puede parecerse al código de máquina u otros tipos de códigos de bytes legibles no humanos, o el lenguaje puede ser solo un lenguaje de programación de computadora multiplataforma existente.
Cuando se utiliza para la optimización del compilador, un compilador de lenguaje toma cada declaración en un archivo de código fuente y divide el comando en el idioma intermedio. Una sola declaración de programación legible por humanos puede descomponerse en docenas de instrucciones de lenguaje de máquina, por lo que el lenguaje intermedio crea un nivel de abstracción que el compilador puede usar para identificar áreas del código donde se pueden realizar optimizaciones sin tener que vincular primero el código a implementaciones nativas o bibliotecas. Una vez completado, el archivo de código intermediario puede compilarse más para crear un archivo binario nativo, o puede ejecutarse a través de otro programa, conocido como intérprete, que ejecutará el código compilándolo en instrucciones nativas según sea necesario.
Algunos lenguajes, como Java®, usan un lenguaje intermedio para crear archivos compilados que están optimizados pero también son portátiles para otros sistemas informáticos. Este tipo de código a veces se conoce como bytecode y se parece al código de máquina o al lenguaje ensamblador. Bytecode se almacena en archivos de forma independiente de la plataforma, lo que significa que se puede transferir a cualquier sistema informático o dispositivo que pueda ejecutar un intérprete. Una vez que el código de bytes está en un sistema, puede ejecutarse como un programa interpretado o puede compilarse para ejecutarse de forma nativa en el sistema de destino.
En algunos casos, un lenguaje de computadora está diseñado para facilitar la programación hacia un fin específico, como una aplicación web interactiva, pero los diseñadores no desean incluir compiladores, intérpretes o complementos personalizados para diferentes sistemas. En estos casos, el lenguaje intermedio del compilador puede ser un lenguaje existente que ya tenga intérpretes multiplataforma establecidos. El lenguaje intermedio resultante en este caso es legible por humanos. Un ejemplo de un lenguaje de programación de computadora que también se usa como lenguaje intermedio es JavaScript®, que tiene la ventaja de poder ejecutarse en casi cualquier navegador web en cualquier plataforma, a partir de 2011.