Evaluacion minima teorica1 cpclp Flashcards
preguntas de repaso para la primera evaluacion teorica de cplp
¿Cuáles son los objetivos de diseño?
-Simplicidad y legibilidad
-Claridad en los bindings
-Confiabilidad
-Soporte
-Abstracción
-Ortogonalidad
-Eficiencia
¿Qué significa que un lenguaje sea simple y legible?
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)
¿Qué significa que haya claridad en los bindings?
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)
Que significa que tenga confiabilidad?
Relacionada con la seguridad, debe realizar chequeo de tipos y manejos de excepciones
¿Qué significa que un lenguaje tenga soporte?
-Accesible(el compilador o interprete de dominio publico)
-Multiplataforma
-Fácil familiarización con el lenguaje
¿Qué significa un lenguaje tenga abstracción?
Que sea capaz de definir y usar estructuras y operaciones sin complicarse la vida
Que significa que un lenguaje tenga ortogonalidad?
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
¿Qué significa que un lenguaje sea eficiente?
-Tiempo y espacio
-Esfuerzo humano
-Optimizable
¿Qué es la sintaxis?
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
¿Qué es la semántica?
Es el conjunto de reglas que le dan un significado a los programas sintácticamente validos
¿Cuáles son las características de la sintaxis?
-Legibilidad
-Verificabilidad
-Traducción
-Falta de ambigüedad
¿Cuáles son los elementos de la sintaxis?
-Alfabeto o conjunto de caracteres
-Identificadores
-Operadores
-Palabras clave y palabras reservadas
-Comentarios y uso de blancos
¿ Que es una palabra clave?
Son palabras que tienen un significado dentro de un contexto del lenguaje
¿Qué es una palabra reservada?
Es una palabra clave que el lenguaje restringe para darle un único propósito a dicha palabra y no pueden ser usadas como variable
¿Cuáles son los elementos de la estructura sintáctica?
-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)
¿Qué son las reglas léxicas?
Conjunto de reglas que dictaminan como armar las palabras (ej camel case)
¿Cuáles son los tipos de sintaxis?
-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?)
¿Cómo se puede definir la sintaxis?
(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
¿Que es BNF?
-Es una notación formal para describir la sintaxis
-Es un metalenguaje( metalenguaje: lenguaje que define lenguajes)
-Utiliza metasimbolos
-Define reglas mediante producciones
¿Qué es la gramática?
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 )
¿Qué es un árbol sintáctico?
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
¿Qué es una producción recursiva?
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>
¿Qué es una sub-gramática?
Es una gramática a bajo nivel, se utilizan para definir identificadores, etc. Son gramáticas ez
¿Qué son las gramáticas libres de contexto y sensibles al contexto?
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 ;)
Recite la principal diferencia entre BNF y EBNF
BNF utiliza recursión
EBNF utiliza opcionales
¿Qué es un diagrama sintáctico(CONWAY)?
Es una forma de representar gráficamente las producciones
¿Cuál es la diferencia entre semántica estática y dinámica?
La semántica estática se realiza antes de la ejecución y la dinámica durante
¿Qué es la semántica estática?
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
¿Qué es la gramática de atributos?
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
¿Qué es la semántica dinámica?
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
¿Cómo se define la semántica dinámica?
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