Evaluacion minima teorica1 cpclp Flashcards

preguntas de repaso para la primera evaluacion teorica de cplp

1
Q

¿Cuáles son los objetivos de diseño?

A

-Simplicidad y legibilidad
-Claridad en los bindings
-Confiabilidad
-Soporte
-Abstracción
-Ortogonalidad
-Eficiencia

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

¿Qué significa que un lenguaje sea simple y legible?

A

Para decir que un lenguaje es simple y legible debe ser fácil de escribir, leer, aprender y enseñarlo.
-Tiene pocos componentes elementales( sino solo se utiliza un subconjunto de estos componentes).
-Un concepto semántico, uno o pocas notaciones sintácticas ( por ejemplo, si se puede incrementar el valor de una variable A de muchas formas, atenta contra la legibilidad).
-Una notación sintáctica, un conceptos semántico( por ejemplo que el “()” sirva solo para encerrar a los parámetros de una función)

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

¿Qué significa que haya claridad en los bindings?

A

Significa que el lenguaje indica en que momento se realiza la ligadura el elemento con su contenido, ya sea en tiempo de compilación, ejecución, etc.
Si no es claro el binding entonces se dice que es ambiguo y que el elemento puede cambiar dependiendo de donde se ejecute( por ejemplo, un if el cual no se especifique como se cierra o que tenga varias alternativas y no se sepa como actuara el programa)

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

Que significa que tenga confiabilidad?

A

Relacionada con la seguridad, debe realizar chequeo de tipos y manejos de excepciones

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

¿Qué significa que un lenguaje tenga soporte?

A

-Accesible(el compilador o interprete de dominio publico)
-Multiplataforma
-Fácil familiarización con el lenguaje

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

¿Qué significa un lenguaje tenga abstracción?

A

Que sea capaz de definir y usar estructuras y operaciones sin complicarse la vida

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

Que significa que un lenguaje tenga ortogonalidad?

A

Significa que el lenguaje debe presentar varios elementos con los cuales se puedan combinar y que el lenguaje aun así pueda entenderlo y sean legales

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

¿Qué significa que un lenguaje sea eficiente?

A

-Tiempo y espacio
-Esfuerzo humano
-Optimizable

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

¿Qué es la sintaxis?

A

Es el conjunto de reglas que indican como se debe escribir las instrucciones en el programa
Establece un conjunto de reglas que sirven para que el programador se comunique con el procesador. Además define como deben combinarse las componentes básicas (words) para formas sentencias y programas

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

¿Qué es la semántica?

A

Es el conjunto de reglas que le dan un significado a los programas sintácticamente validos

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

¿Cuáles son las características de la sintaxis?

A

-Legibilidad
-Verificabilidad
-Traducción
-Falta de ambigüedad

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

¿Cuáles son los elementos de la sintaxis?

A

-Alfabeto o conjunto de caracteres
-Identificadores
-Operadores
-Palabras clave y palabras reservadas
-Comentarios y uso de blancos

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

¿ Que es una palabra clave?

A

Son palabras que tienen un significado dentro de un contexto del lenguaje

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

¿Qué es una palabra reservada?

A

Es una palabra clave que el lenguaje restringe para darle un único propósito a dicha palabra y no pueden ser usadas como variable

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

¿Cuáles son los elementos de la estructura sintáctica?

A

-Vocabularios o words(conjunto de caracteres y palabras para armar expresiones sentencias y programas, ej identificadores, operadores)
-Expresiones(operaciones que dan un resultado ,ej int y = 2 * (3 + 4))
-Sentencia(instrucción que realizan una acción, ej int x = 10)

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

¿Qué son las reglas léxicas?

A

Conjunto de reglas que dictaminan como armar las palabras (ej camel case)

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

¿Cuáles son los tipos de sintaxis?

A

-Abstracta(se fija en las reglas sintácticas)
-Concreta(se fija en las reglas léxicas)
-Pragmática( se fija en como es mas cómodo para escribir?)

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

¿Cómo se puede definir la sintaxis?

A

(como dar una descripción finita para definir un conjunto infinito)
-Lenguaje natural (PD: resulto ser un toque ambiguo y se dejo de usar tanto)
-Gramática libre de contexto, definida por Backus y Naun: BNF, EBNF
-Diagramas sintácticos equivalentes

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

¿Que es BNF?

A

-Es una notación formal para describir la sintaxis
-Es un metalenguaje( metalenguaje: lenguaje que define lenguajes)
-Utiliza metasimbolos
-Define reglas mediante producciones

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

¿Qué es la gramática?

A

Es el conjunto de reglas finita que define un conjunto infinito de posibles sentencias validas, esta conformado por N(conjunto de símbolos no terminales), T(conjunto de símbolos terminales),S(símbolo distinguido de la gramática que pertenece a N, es como el punto de partida),P(conjunto de producciones, que van a describir las reglas para N )

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

¿Qué es un árbol sintáctico?

A

Es una técnica que permite determinar si una sentencia dada es valido o no
Puede ser construido de 2 maneras
botton-up(abajo pa arriba)
top-down (de arriba pa abajo)
ambas maneras se puede hacer de derecha a izquierda o izquierda a derecha

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

¿Qué es una producción recursiva?

A

Son producciones que hacen que el conjunto de sentencias descripto sea infinito, en otras palabras, utilizo la propia definición de la sentencia para definirla (explota la cabeza)

<numero>::=<numero><digito>|<digito>
Una producción recursiva describe un lenguaje infinito
No puede estar dos veces por izquierda y por derecha la parte recursiva, sino seria ambiguo
</digito></digito></numero></numero>

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

¿Qué es una sub-gramática?

A

Es una gramática a bajo nivel, se utilizan para definir identificadores, etc. Son gramáticas ez

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

¿Qué son las gramáticas libres de contexto y sensibles al contexto?

A

Como lo dice su nombre una gramática libre de contexto es aquella que no realiza un análisis del contexto, puede ser que las sentencias dentro de un código sean sintácticamente validas pero no semánticamente
Aquellas gramáticas sensibles al contexto si ;)

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

Recite la principal diferencia entre BNF y EBNF

A

BNF utiliza recursión
EBNF utiliza opcionales

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

¿Qué es un diagrama sintáctico(CONWAY)?

A

Es una forma de representar gráficamente las producciones

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

¿Cuál es la diferencia entre semántica estática y dinámica?

A

La semántica estática se realiza antes de la ejecución y la dinámica durante

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

¿Qué es la semántica estática?

A

Es el análisis semántico que se realiza en tiempo de compilación que verifica las formas validas, se realiza entre el análisis sintáctico y la semántica dinámica. Sirve para detectar los errores antes y que no aborte el programa, utiliza la gramática sensible al contexto. La usan los compiladores

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

¿Qué es la gramática de atributos?

A

Es una forma de evaluar las reglas de las semántica estática, A las construcciones del lenguaje se les asocia información a través de “atributos” asociados a los símbolos de la gramática (terminales o no terminales), que sirven para detectar errores.
Un atributo puede ser: el valor de una variable, el tipo de una variable o expresión, lugar que ocupa una variable en la memoria, dígitos significativos de un número, etc.
Los valores de los atributos se obtienen mediante las llamadas “ecuaciones o reglas semánticas” asociadas a las producciones gramaticales. Con esto se pueden hacer arbolitos sintácticos de atributos donde se entiende un toque mas

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

¿Qué es la semántica dinámica?

A

Es el análisis del significado de ejecutar las diferentes construcciones del lenguaje de programación
Esta se realiza después del análisis sintáctico y la semántica estática

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

¿Cómo se define la semántica dinámica?

A

En síntesis, se puede definir la semántica dinámica con
-Semántica axiomática (tipo: formal y compleja)
-Semántica denotacional(tipo: formal y compleja)
-Semántica operacional(tipo: informal)
Sirven para comprobar la ejecución, la exactitud de un lenguaje, comparar funcionalidades de distintos programas, se pueden usar combinados y no todos sirven para todos los tipos de lenguaje, por eso es complicada de definir

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

¿Qué es la semántica axiomática?

A

Es una manera formal y compleja de definir la semántica dinámica
Se le dice axiomática porque se parte desde un axioma( algo verdadero) y de ahí se prueban estados y condiciones
Un estado es un predicado, un predicado son los valores de las variables en ese estado, existe un estado anterior y posterior a la ejecución del constructor
Cada sentencia se precede y se continúa con una expresión lógica que describe las restricciones y relaciones entre los datos.
Precondición (condiciones de estado previo)
Poscondición (condiciones de estado posterior)

33
Q

¿Qué es la semántica denotaciones?

A

Es una manera formal y compleja de definir la semántica dinámica
Se basa en la teoría de funciones recursivas y modelos matemáticos, es más exacto para obtener y verificar resultados, pero es más
difícil de leer ,funciona como una maquina de estados y realiza las comprobaciones mediante funciones.
En otras palabras, utiliza funciones para verificar que las expresiones estén dando bien

34
Q

¿Qué es la semántica operacional?

A

Es una manera no formal (no formal porque puede conducir a errores) de definir la semántica dinámica
Se utiliza un lenguaje de bajo nivel para explicar las sentencias de otro lenguaje

35
Q

¿Qué es un código mnemotécnico?

A

una abreviatura de una instrucción

36
Q

¿Cuáles eran los problemas de que cada maquina o familia de procesadores tenia su propio juego de instrucciones?

A

-Imposible intercambiar programas entre distintas maquinas
-Diferentes versiones de una misma CPU podían tener instrucciones incompatibles
-Los modelos evolucionados podían incorporar instrucciones nuevas

37
Q

¿Cómo los programas escritos en lenguajes de alto nivel pueden ser ejecutados sobre una computadora cuyo lenguaje es diferente y de bajo nivel?

A

Con programas de traducción:
-Interpretación
-Compilación

38
Q

¿Qué es la interpretación?

A

Es un programa de traducción, el cual consta de un lenguaje de programación interpretado y un interprete que realiza la traducción, este lee, analiza, decodifica y ejecuta (evidentemente, este proceso se realiza en run time y se hace cada vez que se ejecuta)
También el interprete tiene subprogramas, que son estos llamados en secuencia los que realizan la interpretación
Sigue el orden lógico del programa, por lo que puede ahorrarse pasar por código

39
Q

¿Qué es la compilación?

A

Es un programa de traducción que genera un código compilado (lenguaje objeto)antes de ser ejecutado, el código queda guardadito, sigue el orden físico del código (todo el código)
El lenguaje objeto puede ser un lenguaje de maquina o lenguaje ensamblador

40
Q

El interprete es mas lento que el compilador al ejecutar
V o F

A

V
si se habla de ejecución, el compilador es mas rápido ya que preparo el código ejecutable con anterioridad, en cambio el interprete debe realizar todo el proceso en ejecución

41
Q

El compilador debe realizar el proceso de compilación tantas veces como sea requerido
V o F

A

F
El compilador solo compila una vez, una vez generado el lenguaje fuente, se utiliza este y no se vuelve a compilar

42
Q

El Interprete detecta mas errores que el compilador
V o F

A

F
El compilador detectó más errores al pasar por todas las sentencias

43
Q

El interprete ocupa menos espacio en memoria que el compilador
V o F

A

V
Cada sentencia se deja en la forma original y las instrucciones interpretadas necesarias para ejecutarlas se almacenan en subprogramas del interprete en memoria, solo se generan las tablas de símbolos, variables y otras cosas cuando se usan en forma dinámica
El compilador genera TODO, por lo que ocupa mas espacio, además cada instrucción puede convertirse en muchas sentencias

44
Q

Es mas fácil detectar el origen los errores con el compilador que con el interprete
V o F

A

F
Se puede relacionar directamente el error con la sentencia en ejecución, en cambio en compilación se pierde la referencia del código fuente con el código objeto, por ende es casi imposible encontrar el error, se deben usar otras técnicas(semántica dinámica)

45
Q

¿Cuál es la ventaja de interpretar y luego compilar y viceversa?

A

Primero Interpreto y luego Compilo:
-facilita el diagnostico de errores
-se genera un código objeto mas eficiente
Primero Compilo y luego Interpreto:
-se puede generar un código portable a distintas maquinas y arquitecturas

46
Q

Describa las etapas de la compilación

A

1)Etapa de Análisis
1.1 Análisis léxico
1.2 Análisis sintáctico(Parser)
1.3 Análisis semántico
2)Etapa de síntesis
2.1 Optimización del código
2.2 Generación del código final

47
Q

¿Qué hace el compilador en el análisis léxico?

A

Hace el análisis a nivel de palabra
Divide el programa en sus elementos/
categorías
Analiza el tipo de cada uno para ver si son
TOKENS válidos
Filtra comentarios y separadores
En taka taka, descompone todo y luego verifica que cada componente este en una categoría

48
Q

¿Qué hace el compilador en el análisis sintáctico?

A

Se identifican las estructuras ayudándose con los tokens
Se arma un arbolito sintáctico del programa y compara con los arboles de derivación para ver que lo que entra es correcto

49
Q

¿Qué hace el compilador en el análisis semántico?

A

-Realiza la comprobación de tipos
-Realiza comprobaciones de duplicados
-Realiza comprobaciones de nombres(toda variable debe estar declarada en su entorno, variables no declaradas)

50
Q

El código objeto es dependiente de la maquina
V o F

A

V, e así papito

51
Q

¿Qué hace el compilador en la etapa de síntesis?

A

-Construye el programa ejecutable y genera el
código necesario
-Se genera el módulo de carga. Programa objeto completo
-Se realiza el proceso de optimización. (Optativo)
-El cargador Loader (Programa) lo carga en memoria

52
Q

¿Qué es el descriptor?

A

Es el lugar( repositorio) donde se guarda la relación entre las entidades y los atributos

53
Q

¿Cuál es el concepto de binding(ligadura)?

A

Es el momento en el que el atributo se asocia con un valor

54
Q

¿Cuáles son las diferencias que se presentan en la ligadura en distintos lenguajes?

A

-El número de entidades
-El número de atributos que se les pueden ligar
-El momento de la ligadura
-La estabilidad de la ligadura

55
Q

¿Cuáles son los tipos de ligadura?

A

-Estática
-Dinámica

56
Q

¿Cuál es la diferencia entre ligadura estática y ligadura dinámica?

A

La ligadura estática se establece antes de la ejecución y no se puede modificar, mientras que la dinámica se establece durante la ejecución y si se pueden modificar (excepto las constantes)

57
Q

¿En que momentos se puede establecer la ligadura?

A

La estática en:
-Definición del lenguaje
-Implementación del lenguaje
-Compilación/traducción
La dinámica:
-En ejecución

58
Q

¿Cuáles son los atributos de una variable?

A

-Nombre(String de caracteres para referenciarla)
-Alcance(lugar donde es conocida la variable)
-Tipo(valores y operaciones permitidas)
-Lvalor(el área de memoria ligada a la variable)
-Rvalor(valor almacenado en el l-valor de la variable

59
Q

¿Cuáles son los aspectos de diseño del nombre? (atributos)

A

-La longitud máxima según el lenguaje
-Caracteres aceptados
-Sensitivo a mayúsculas
-Palabras reservadas
-Palabras clave

60
Q

¿Cuáles son los tipos de ligadura de alcance?

A

-Ligadura de alcance estático(alcance léxico, se define dentro de una estructura léxica)
-Ligadura de alcance dinámico
El alcance de la variable se extiende hasta el resto del código o cuando hay una variable con el mismo nombre
Luego además, estas se pueden combinar con las siguientes características:
Global: referencias a variables creadas por el programa principal
Local: referencias a variables creadas dentro de una unidad (subprograma)
No local: referencias a variables utilizadas en un subprograma pero no creadas en un subprograma

61
Q

¿En que ayuda el tipo de una variable?

A

-Proteger a las variables de operaciones no
permitidas
-Chequear tipos
-Verificar el uso correcto de las variables
Ayuda a a detectar errores en forma temprana y a la confiabilidad del código

62
Q

¿Cuáles son las clases de tipos?

A

-Predefinidos por el lenguaje(boolean,int,etc)
-Definidos por el usuario( nuevos tipos creados por el usuario, permiten crear abstracciones, escapsular lógica y datos, reutilizar código y mejorar la claridad y legibilidad del código)

63
Q

¿Qué es un tipo de dato abstracto(TAD)?

A

Son estructuras de datos que representan un nuevo tipo de abstracto, están compuestas por una colección de operaciones, no hay una ligadura por defecto, el programador la establece
(son las listas, vectores, grafos de toda la vida)

64
Q

¿Cómo se puede realizar la ligadura estática?

A

-Explicita( la ligadura se establece mediante una declaración, mas claridad y fiabilidad)
-Implícita(la ligadura se establece mediante reglas del lenguaje)
-Inferida(la ligadura se establece por intuición de su contenido)

65
Q

Describa la ligadura dinámica

A

Ligadura dinámica:
Se liga en ejecución y puede cambiarse cuando se le asigna un valor en una sentencia de asignación(mas costosa, chequeo dinámico, menor legibilidad y errores

66
Q

¿Cómo esta compuesto el L-valor?

A

-Periodo de vida(periodo en el que existe la ligadura)
-Alocación(Momento en que se reserva la memoria para una variable)
(todo esto es en runtime)

67
Q

¿Cuáles son los tipos de alocación?

A

-Estática(en compilación, se guarda en zona de datos y perdura hasta el fin de la ejecución)
-Dinámica(1Automatica:cuando aparece una declaración en ejecucion,2Implicita: con la creación de una sentencia)
-Persistente(son aquellos que persisten mas allá de la memoria ej: archivos)

68
Q

¿Cuándo se realiza la ligadura de la variable a su valor? (concretamente el r-valor)

A

Binding dinamico de una variable a su valor:
El valor (r-valor) puede cambiar durante la ejecución con una asignación, pero no se puede cambiar si es una constante
el binding dinámico puede cambiar dependiendo del lenguaje

69
Q

¿Qué son los punteros?

A

Puntero: variable que sirve para señalar la posición de la memoria en que se encuentra otro dato almacenando como valor, con la dirección de ese dato.

70
Q

¿Qué es el alias?

A

Es una técnica que permite que haya quevariables comparten un objeto en el mismo entorno de referencia, y sus caminos de acceso conducen al mismo objeto.

71
Q

¿Cuáles son las ventajas y desventajas del alias?

A

Ventaja:
-Compartir objetos se utiliza para mejorar la eficiencia.
Desventajas
-Generar programas que sean difíciles de leer
-Generar errores porque el valor de una variable se puede modificar incluso cuando no se utiliza su nombre.

72
Q

¿Cuándo se dice que un nombre esta sobrecargado?

A

Un nombre esta sobrecargado si en un momento referencia más de una entidad

73
Q

¿Cuál es la principal diferencia entre alias y sobrecarga?

A

El alias es muchos nombres que referencian a una entidad, y la sobrecarga es un nombre que referencia múltiples entidades
Lo mejor seria que no haya ambigüedad
1 elemento -> 1 entidad

74
Q

Las variables contantes tienen alcance todo el programa
V o F

A

F

75
Q

Un error de tipo semántico siempre es provocado por un error de tipo sintáctico
V o F

A

F

76
Q

En muchos lenguajes, una variable puede aparecer del lado derecho de la asignación sin habérsele asignado, a través de una sentencia, un valor previamente
V o F

A

V

77
Q

El r-valor de un puntero es el l-valor del objeto que quiere representar
V o F

A

F

78
Q

Un error de tipo sintáctico siempre provoca un error de tipo semántico
V o F

A

F

79
Q

Los errores de semántica estática son aquellos que se detectan cuando el programa pasa a ejecución
V o F

A

F