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.
Clasificación histórica de los lenguajes de programación
Primera generación (Lenguajes de bajo nivel o sistema binario)
Segunda generación (Lenguajes simbólicos)
Tercera generación (Lenguajes de alto nivel)
Cuarta generación (Herramientas para combinar piezas prefabricadas)
Quinta generación (Lenguajes de alto nivel que se centran en la resolución de problemas utilizando inteligencia artificial y técnicas de programación declarativa)
Primera generación
Lenguajes de bajo nivel o sistema binario. Se programaban directamente en código de máquina. Sus instrucciones ejercen un control directo sobre el hardware. Se utilizan para programar tareas críticas de los SO, de aplicaciones en tiempo real o controladores de dispositivos.
Segunda generación
Lenguajes simbólicos. Se refiere al lenguaje ensamblador ensamblado a través de un macroensamblador. Es el lenguaje de máquina combinado con una serie de poderosas macros que permiten declarar estructuras de datos y de control complejas.
Tercera generación
Sustituyen las instrucciones simbólicas por códigos independientes de la máquina, parecidas al lenguaje humano o al de las Matemáticas.
C, Fortran, Smalltalk, Ada, C++, C#, Cobol, Delphi, Java, PHP, BASIC, JavaScript y Visual Basic, entre otros.
Cuarta generación
Se ha dado este nombre a ciertas herramientas que permiten construir aplicaciones sencillas combinando piezas prefabricadas. Algunas de sus características son: acceso a base de datos, capacidades gráficas, generación de código automáticamente, así como poder programar visualmente.
Visual Basic o SQL