B3-Lenguajes de programación Flashcards
¿Qué es un compilador?
Es un programa que traduce código escrito en un lenguaje de programación (llamado fuente) a otro lenguaje (conocido como objeto).
El lenguaje fuente es generalmente un lenguaje de alto nivel y el objeto un lenguaje de bajo nivel, como assembly o código máquina.
Fases del proceso de compilación
Análisis del programa fuente
Léxico (que consiste en la descomposición del programa fuente en componentes léxicos),
sintáctico (agrupación de los componentes léxicos en frases gramaticales ) y
semántico (comprobación de la validez semántica de las sentencias aceptadas en la fase de análisis sintáctico).
Síntesis del programa objeto: suele estar formado por una o varias combinaciones de
generación de código (normalmente se trata de código intermedio o de código objeto) y
de optimización de código: (en las que se busca obtener un programa objetivo lo más eficiente posible).
Compiladores optimizadores
Realizan cambios (minimiza ciertos atributos) en el código para mejorar su eficiencia y rendimiento, 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)
Compilación en tiempo de ejecución. Técnica para mejorar el rendimiento de sistemas de programación que compilan a bytecode, consistente en traducir el bytecode a código máquina nativo en tiempo de ejecución.
¿Qué es un transpilador?
Es un tipo especial de compilador que traduce de un lenguaje fuente a otro fuente también de un nivel de abstracción parecido.
Compilador cruzado
Generan código para una plataforma distinta a aquella en la que están funcionando. Son útiles cuando quiere compilarse código para una plataforma a la que no se tiene acceso, o cuando es incómodo o imposible compilar en dicha plataforma (como en el caso de los sistemas embebidos).
¿Qué es Bytecode o código intermedio?
Es un lenguaje de programación que sirve como puente entre un lenguaje de programación de alto nivel y el código máquina que leen los microprocesadores en los ordenadores.
Ejemplos de Bytecode en lenguajes de programación
Java: El código fuente de Java se compila en bytecode para que después la Máquina Virtual Java lo interprete a código máquina.
C#: El código fuente de C# se compila en CIL (Common Intermediate Language), también conocido como MSIL (Microsoft Intermediate Language). El Common Language Runtime ejecuta el código, la máquina virtual de .NET.
JavaScript: En motores avanzados como V8 en Google Chrome y Node.js, JavaScript también compila el código fuente en bytecode.
Paradigmas de programación