Tema 19: Lenguajes de programación para aplicaciones informáticas. Flashcards

1
Q

Def. lenguaje de programación.

A
  • Notación para comunicarle a una computadora lo que deseamos que haga.
  • Sistema notacional para describir computaciones en una forma legible tanto para la máquina como para el ser humano.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Evolución de los lenguajes de programación.

A
  • 1ª generación: lenguaje máquina (compuesto exclusivamente por 0 y 1).
  • 2ª gen: lenguajes ensambladores (facilitan la lectura y escritura del programa mediante una serie de reglas mnemotécnicas.
  • 3ª gen: lenguajes de alto nivel, como C, FORTRAN, Java, etc. - > necesitan compiladores para traducir el código a lenguaje máquina.
  • 4ª gen: Lenguajes de propósito específico (SQL, NATURAL, ABAP) -> solucionan problemas concretos.
  • 5ª gen: utilizados principalmente en áreas de IA. Permiten especifica restricciones que se le indican al sistema (p. ej. Prolog).
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

sintaxis de un lenguaje de programación es un lenguaje independiente del contexto

A

G(T, N, S, P) -> gramática independiente del contexto.

  • T es el alfabeto del lenguaje,
  • N es el conjunto de símbolos no terminales,
  • S es un símbolo no terminal especial denominado símbolo inicial
  • P es el conjunto de producciones de la gramática
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Sintaxis del lenguaje

A

Se denota con el lenguaje EBNF (Backus Naur Form Extendido).

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

Procesadores del lenguaje.

A

Es el conjunto genérico de aplicaciones informáticas en las cuales uno de los datos de entrada es un programa escrito en un lenguaje de programación

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

Traductor.

A

Tipo de procesador en el que tanto la entrada como la salida son programas escritos en lenguajes de programación.

  • Generan código objeto a partir de un código fuente.

LF -> lenguaje fuente
LI -> lenguaje del traductor (de implementación)
LO -> lenguaje objeto

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

Ensambladores.

A

Son traductores donde el lenguaje fuente es lenguaje ensamblador y el lenguaje objeto es lenguaje máquina.

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

Compiladores.

A

Son los procesadores más habituales.

  • Son aplicaciones capaces de transformar un fichero de texto con código fuente en un fichero en código máquina ejecutable.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Esquema de fases de un compilador.

A
  • Análisis léxico: se encarga de verificar si todas las cadenas del programa pertenecen o no al lenguaje realizando un análisis símbolo por símbolo
  • Análisis sintáctico: Se analiza la estructura de las expresiones en base a la gramática determinando si la secuencia de componentes léxicos sigue la sintaxis del lenguaje.
  • Análisis semántico: Realiza las comprobaciones necesarias sobre el árbol sintáctico para determinar el correcto significado del programa.
  • Generación de código intermedio: Se genera una representación explicita del programa fuente para una máquina virtual.
  • Generación de código: Toma como entrada el código optimizado y genera el código objeto.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Intérprete.

A

Son programas que analizan y ejecutan una a una las instrucciones que encuentran en un código fuente.

  • Proceso de traducción se realiza en tiempo de ejecución.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Tipos de datos.

A

Un tipo de datos representa un conjunto de valores y un conjunto de operaciones definidas sobre dichos valores.

  • Dos clases:
    · Tipos de datos simples (no pueden descomponerse en tipos más elementales): entero, real, booleano, etc.
    · Tipos de datos estructurados (se componen de tipos de datos más básicos).
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Tipos de datos estructurados.

A
  • Se construyen a partir de datos simples o estructurados.
  • Arrays: estructuras de datos de tamaño fijo donde todos los elementos son del mismo tipo.
  • Registros: son estructuras de datos compuestas de un número fijo de elementos que pueden ser de distinto tipo (cada uno de los elementos se denomina campo y tiene asociado un nombre para identificarlo).
  • Listas: Es una colección ordenada de datos, se parecen a los arrays pero su mayor diferencia es que las listas son dinámicas.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Expresión.

A

Bloque de construcción básico que puede acceder a los datos del programa y que devuelve un resultado.

Puede ser una constante, variable, etc. -> Su evaluación devuelve un valor

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

Enunciado (sentencia).

A

Bloque de construcción en el que se basan los lenguajes imperativos.
Formado por expresiones.

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

Evaluación de expresiones.

A
  • Evaluación en cortocircuito: evita evaluar un segundo operando de la expresión si no es estrictamente necesario (p. ej. dentro de un bucle).
  • Evaluación diferida o perezosa: consiste en retardar el cálculo de las expresiones hasta que realmente son necesarias (lenguajes funcionales).
  • Evaluación estricta: expresiones son totalmente evaluadas antes de necesitarse (lenguajes imperativos).
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Tipos de enunciados.

A
  • Enunciado condicional: en un grupo de enunciados permite controlar cuál se ejecuta en base a una determinada condición que es necesario evaluar (el más habitual es if, también existe case/switch)
  • Enunciado de iteración: permiten repetir un enunciado un determinado número de veces (bucle for).
17
Q

Manejo de excepciones.

A

Cualquier programa debe ser capaz de enfrentarse en un momento u otro de su ejecución a determinadas condiciones de error.

18
Q

Procedimientos.

A

Son llamados funciones si devuelven un valor, son subprogramas que pueden ser llamados desde otras partes del código.

  • Tienen: nombre, secuencia de parámetros, declaraciones locales de variables y un cuerpo de enunciados.
  • Hay lenguajes que permiten la sobrecarga de parámetros (distintos procedimientos con el mismo nombre pero distinto número o tipo de parámetros formales.
19
Q

Parámetros de llamada (de una función).

A
  • se les llama parámetros reales o actuales.
20
Q

Tipos de paso de parámetros.

A
  • Paso por valor: El valor del parámetro real es copiado en el parámetro formal -> los cambios al parámetro formal no afectan al parámetro actual.
  • Paso por referencia: Existen dos referencias a la misma posición de memoria: el parámetro formal y el real -> los cambios en el parámetro formal se verán reflejados en el parámetro real.
  • Paso por copia y restauración (o valor y resultado): Los parámetros reales son evaluados y pasados al subprograma llamado en los parámetros formales. Cuando la ejecución del subprograma termina, los valores de los parámetros formales son copiados de vuelta en las direcciones de memoria de los parámetros reales.
  • Llamada por nombre: el subprograma llamado se sustituye por la llamada y los parámetros formales por los reales.
21
Q

Ámbito o alcance de variables.

A

La asociación de nombres de variables a datos o subprogramas.

  • El cuerpo de un subprograma es un ejemplo de ámbito.
  • El cuerpo de un enunciado iterativo como for también define un ámbito.
  • Los ámbitos se pueden anidar.
22
Q

Tipos abstractos de datos.

A

Tipos definidos por el usuario con una serie de operaciones asociadas.

  • Un conjunto de datos.
  • Conjunto de operaciones abstractas sobre datos de este tipo.
  • Encapsulamiento de los datos para que solo puedan manipularse mediante las operaciones definidas.
23
Q

Paradigmas y modelos de programación.

A
  • Programación funcional
  • Programación lógica
  • Programación orientada a objetos.
  • Programación concurrente.
  • Programación de lenguajes dinámicos.
24
Q

Paradigma.

A

Conjunto de conceptos y técnicas para usar dichos conceptos.

25
Q

Modelo de computación.

A

Sistema formal que define cómo se realizan las operaciones.

26
Q

Programación funcional.

A
  • Los lenguajes funcionales están basados en el concepto matemático de función y su diseño está muy influenciado por las matemáticas.
  • Junto al paradigma lógico -> programación declarativa (se centra más en lo que hay que hacer, que en cómo hacerlo).
  • En los lenguajes funcionales los programas son expresiones que pueden ser definidas como funciones y pueden recibir parámetros.
  • No existe el concepto de sentencia.
  • No existe el concepto de posición de memoria -> no hay variables, solo parámetros de funciones.
  • Ej lenguaje funcional: Haskell
  • Concepto de transferencia referencial: establece que el valor devuelto por una función depende exclusivamente de los parámetros de entrada -> aplicar una función con los mismos parámetros siempre produce el mismo resultado
  • No existe el concepto de bucle -> se usan funciones recursivas.
27
Q

Programación lógica.

A
  • Aplica el conocimiento proveniente del campo de la lógica matemática al desarrollo de software.
  • se basa en hechos, reglas y consultas -> una vez definidos se pueden plantear consultas al sistema que resolverá en base a las reglas y hechos que se le proporciona.
  • Ej. lenguaje: Prolog
  • Hechos: enunciados ciertos por definición.
  • Se pueden establecer reglas recursivas.
28
Q

Programación orientada a objetos (POO).

A
  • Evolución de la programación imperativa y los tipos abstractos de datos.
  • Proporciona el concepto de clase, evolución de un tipo abstracto de datos.
  • Cada clase representa un tipo con un estado definido por atributos y operaciones que se pueden invocar sobre objetos de esa clase.
  • Concepto de herencia -> jerarquía de tipos.
  • Polimorfismos: enviar mensajes sintácticamente iguales a objetos de tipos distintos.
  • Vista pública de clase (interfaz de clase): nombre de clase junto con las cabeceras de todos los métodos públicos de la clase.
  • Sobrecarga de métodos: varios métodos con mismo nombre.
  • Vista privada de la clase: atributos y métodos privados.
29
Q

Elementos Programación orientada a objetos.

A
  • Clase: Define un nuevo tipo de datos junto con las operaciones permitidas sobre ese tipo. Estas operaciones definen el comportamiento de un conjunto de elementos homogéneos
  • Objeto: Es un ejemplar o instancia concreto de una clase.
  • Método: Definición de una operación de una clase. La definición es la misma para todos los objetos de la clase.
  • Mensaje: Invocación de una operación sobre un objeto. Un mensaje siempre requiere un objeto, que es el que recibe el mensaje.
  • Atributo: Cada uno de los datos de una clase.
  • Estado: El estado de un objeto es el conjunto de valores de sus atributos en un instante determinado.
30
Q

Mecanismo de herencia en POO.

A
  • Las vistas públicas y privadas de una clase se transmiten a otra.
  • La clase hija añade además sus propias vistas.
  • Clases hijas pueden sobrescribir los métodos de la clase padre.
31
Q

Programación concurrente.

A
  • Programas se construyen como colecciones de procesos (o hilos) que se ejecutan concurrentemente y que interactúan entre ellos.
  • Comunicación y sincronización de procesos.
  • Modelo de paso de mensajes: los procesos se comunican entre sí mediante mensajes, normalmente enviados a través de la red que los conecta. Es el modelo habitual de las aplicaciones distribuidas.
  • Modelo de memoria compartida: los procesos comparten una memoria de acceso común pudiendo compartir variables a través de esta memoria. Es el caso de los sistemas multiprocesador muy acoplados.
  • Tipos de sincronización:
    · Condicional: un proceso debe esperar a que se active una determinada condición que sólo puede ser activada por otro proceso distinto
    · Exclusión mutua: varios procesos compiten por un recurso compartido de uso exclusivo.
  • Semáforos (herramienta de sincronización)
32
Q

Programación de lenguajes dinámicos.

A
  • No es paradigma en sí mismo.
  • Ciclo de desarrollo más ágil.
  • No se compilan: se ejecutan directamente sobre un intérprete o una máquina virtual.
  • Tipado dinámico: la asociación de tipos es en tiempo de ejecución -> no hace falta declarar las variables.
  • Son portables (solo necesitan intérprete o máquina virtual).
33
Q

Lenguajes glue.

A
  • Lenguaje que se utiliza para conectar componentes software.
  • proporcionan una forma sencilla y eficiente para comunicar y transferir datos entre componentes que en su mayoría estarán escritos en otros lenguajes de programación.
  • Suelen ser lenguajes de Script: procesamiento de textos e intérpretes de comandos.
  • Proporcionan librerías para acceder a elementos del sistema operativo.
34
Q

Criterios de selección de lenguajes.

A
  • Concisión notacional
  • Integridad conceptual
  • Ortogonalidad (las características del lenguajes se pueden combinar comportándose de igual manera)
  • Generalidad (Todas las características del lenguaje son generadas a partir de conceptos básicos)
  • Automatización (de tareas mecánicas).
  • Portabilidad (poder ejecutarse en distintos tipos de máquinas)
  • Eficiencia
  • Entornos de desarrollo.
35
Q

Frameworks de desarrollo.

A
  • Reutilización para no tener que empezar los proyectos desde cero.
  • Framework: estructura conceptual y tecnológica de soporte definida, formada por un conjunto de bloques de software predefinidos que permite el desarrollo de aplicaciones a las organizaciones de forma más sencilla y ágil.
  • Modelo Vista Controlador (MVC).
    · Modelo (representación de la información que maneja la aplicación)
    · Vista (presentación de la información al usuario).
    · Controlador (capa que envía órdenes al modelo para cambiar su estado a petición de la vista).