B3-Lenguajes de programación Flashcards

1
Q

¿Qué es un compilador?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Fases del proceso de compilación

A

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).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Compiladores optimizadores

A

Realizan cambios (minimiza ciertos atributos) en el código para mejorar su eficiencia y rendimiento, pero manteniendo la funcionalidad del programa original.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Compiladores de una sola pasada

A

Generan el código máquina a partir de una única lectura del código fuente.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Compiladores de varias pasadas

A

Necesitan leer el código fuente varias veces antes de poder producir el código máquina.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Compiladores JIT (just in time)

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

¿Qué es un transpilador?

A

Es un tipo especial de compilador que traduce de un lenguaje fuente a otro fuente también de un nivel de abstracción parecido.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Compilador cruzado

A

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).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

¿Qué es Bytecode o código intermedio?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Ejemplos de Bytecode en lenguajes de programación

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Clasificación histórica de los lenguajes de programación

A

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)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Primera generación

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Segunda generación

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Tercera generación

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Cuarta generación

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Quinta generación

A

Se refiere a un conjunto de lenguajes de programación de alto nivel que se centran en la resolución de problemas utilizando inteligencia artificial y técnicas de programación declarativa.
Utilizan paradigmas de programación no convencionales para ayudar a los desarrolladores a resolver problemas complejos.
Lenguajes funcionales: Mercury,
Lenguajes lógicos: Mercury, OPS5, Prolog

17
Q

Paradigma de programación

A

Es una forma de nivel relativamente alto de conceptualizar y estructurar la implementación de un programa de computadora.

18
Q

Programación imperativa

A

El código controla directamente el flujo de ejecución y el cambio de estado, declaraciones explícitas que cambian el estado de un programa.

19
Q

Imperativa Procedural

A

Organizado como procedimientos que se llaman entre sí Fortran, ALGOL, COBOL, PL/I and BASIC, Pascal and C

20
Q

Orientado a objetos

A

Organizado como objetos que contienen tanto la estructura de datos como el comportamiento asociado, utiliza estructuras de datos que consisten en campos y métodos de datos junto con sus interacciones

21
Q

Principales lenguajes de programación orientada a objetos.

A

Ada, ActionScript, C++, Common Lisp, C#, Dart, Eiffel, Fortran 2003, Haxe, Java, JavaScript, Kotlin, Logo, MATLAB, Objective-C, Object Pascal, Perl, PHP, Python, R, Raku, Ruby, Scala, SIMSCRIPT, Simula, Smalltalk, Swift, Vala and Visual Basic.NET.

22
Q

Programación orientada a objetos basada en clases

A

Programación orientada a objetos en la que la herencia se logra definiendo clases de objetos, versus los objetos mismos.

23
Q

Programación orientada a objetos basada en prototipos

A

Programación orientada a objetos que evita clases e implementa la herencia mediante la clonación de instancias.

24
Q

Programación declarativa

A

El código declara las propiedades del resultado deseado, pero no cómo calcularlo, describe qué cálculo debe realizar, sin especificar cambios de estado detallados.

25
Q

Programación funcional

A

El resultado deseado se declara como el valor de una serie de evaluaciones de funciones, utiliza la evaluación de funciones matemáticas y evita estados y datos mutables.

26
Q

Programación declarativa

A

El programa es un conjunto de hechos y reglas que definen relaciones. Un cálculo se inicia ejecutando una consulta sobre el programa.

27
Q

Programación declarativa lógica

A

El resultado deseado se declara como respuesta a una pregunta sobre un sistema de hechos y reglas, utiliza lógica matemática explícita para la programación

28
Q

Programación declarativa reactiva

A

Se declara un resultado deseado con flujos de datos (streams) y la propagación del cambio.

29
Q

Ej implementaciones de programación reactiva

A

ReactiveX Apache licencia (RxJs, RxJava, Rx.NET, RxPy and RxSwift)
Elm (web user interfaces)
Reactive Streams (JVM standard)
ObservableComputations ( .NET implementation)
Svelte (JavaScript)
Solid.js (junto con plantillas JSX)
Quantum JS (runtime extension to JavaScript)

30
Q

JSX (JavaScript XML),

A

formalmente JavaScript Syntax eXtension, es una extensión de JavaScript que permite la creación de árboles DOM usando una sintaxis similar a XML.

31
Q
A

Hope

32
Q

Mercury

A

Lenguaje de programación de lógica funcional hecho para usos del mundo real. Es un lenguaje de programación de lógica puramente declarativa. Está relacionado tanto con Prolog como con Haskell.

33
Q

OPS5

A

Lenguaje informático de sistema de producción basado en reglas, notable como el primer lenguaje de este tipo que se utiliza en un sistema experto exitoso, el sistema R1/XCON utilizado para configurar computadoras VAX.

34
Q

Prolog

A

Lenguaje de programación lógica que tiene su origen en la inteligencia artificial, la demostración automatizada de teoremas y la lingüística computacional.

35
Q

Haskell

A

Lenguaje de programación de propósito general. Es puramente funcional, estáticamente tipado, y con inferencia de tipos y evaluación diferida.
La principal implementación de Haskell es el compilador Glasgow Haskell (GHC).

36
Q

Lisp

A

Es una familia de lenguajes de programación de computadora de tipo multiparadigma con larga historia
Scheme (1975), Common Lisp (1984), Emacs Lisp (1985) y Clojure (2007).

37
Q

Common Lisp

A

Descrito en el documento estándar ANSI INCITS 226-1994 (R2004) del ANSI. De propósito general, admite una combinación de paradigmas de programación procedimental, funcional y orientada a objetos. Como lenguaje de programación dinámico, facilita el desarrollo de software evolutivo e incremental, con compilación iterativa en programas de tiempo de ejecución eficientes.

38
Q

Scheme

A

La filosofía de Scheme es minimalista. Scheme proporciona el mínimo número posible de nociones primitivas, construyendo todo lo demás a partir de un reducido número de abstracciones.
El mecanismo principal para el control de flujo son las llamadas recursivas.

39
Q

Emacs Lisp

A

Se usa en los editores GNU Emacs y XEmacs. Permite métodos de programación imperativa y funcional. Incluye la habilidad de tratar funciones como datos.