Unidad 1 Flashcards

(41 cards)

1
Q

Maquinas abstractas

A

son conceptualizaciones, sistemas reactivos que operan en respuesta a los estímulos que recibe del exterior donde se lleva a los mismos a adoptar distintos estados y a mandar una respuesta al exterior.

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

Gramáticas formales

A

son sistemas matemáticos utilizados para describir la estructura de los lenguajes. Se componen de un conjunto de reglas que definen cómo se pueden formar cadenas válidas en un lenguaje.

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

Maquinas de Turing

A

fue un formalismo propuesto con la finalidad de disponer de una herramienta abstracta para estudiar la teoría de la computabilidad.

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

Características y formalismos de las maquinas abstractas:

A
  1. Funcionan por intervalos, reconocen que el tiempo avanza pero de forma discreta
  2. En cada intervalo de tiempo se encuentran en un cierto y único estado. El conjunto de estos es finito y esta agrupado en un alfabeto de estados.
  3. la maquina recibe información (estímulos) del exterior. La maquina en cada intervalo lee un símbolo de entrada y el conjunto de todos estos símbolos se agrupa en un alfabeto de entrada.
  4. Pueden actuar sobre el medio exterior, grabando símbolos en una cinta de salida, estos símbolos forman parte de un alfabeto de salida y en algunos casos puede la cinta de salida ser la misma de entrada o un medio distinto.
  5. las lecturas y grabaciones se realizan por cabezales apropiados. estos se desplazan sobre los medios de entrada y salida, las maquinas se distinguen por cabezales y se mueven linealmente o se puede adaptar el sentido.
  6. para cada símbolo de entrada y para cada estado posible ,el próximo estado a ser tomado y donde si la maquina puede determinar que hace el cabezal también define el sentido del mismo y también define el símbolo a ser grabado para la salida.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Clasificación de maquinas abstractas

A

Según lo que hacen:

  • Traductores: las que establecen relación entra las cadenas de entrada y las cadenas de salida
  • Reconocedoras: son las que validan o aceptan ciertas cadenas de entrada, arribando a estados finales definidos como de aceptación.
  • Ejecutoras: son los modelos computacionales que pueden reconocer y procesar los lenguajes definidos por las gramáticas formales de Chomsky. Cada tipo de gramática está asociado con un tipo específico de máquina que puede procesarla.

Según como lo hacen:

  • Deterministas: contemplan un único próximo estado a partir de cada estado posible y del alfabeto de entrada.
  • No deterministas: la función de transición puede tener más de un próximo estado posible para cierta condición de estado y entrada.

Según su definición:

  • Secuenciales: estas máquinas no tienen un estado inicial y tampoco estados de aceptación, esto significa que operan ininterrumpidamente y terminan sin reconocer condiciones especificas.
  • Autómatas: Estos comienzan en un estado conocido y completan el ciclo arribando a un estado de aceptación que fue identificado con anterioridad.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Compiladores

A

Herramienta de desarrollo de software destinada a traducir un programa escrito en un lenguaje de alto nivel (programa fuente) en otro programa escrito en lenguaje máquina (programa objeto).

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

Lenguajes de Primera Generación

A
  • Las computadoras eran programadas con códigos binarios que representaban instrucciones individuales reconocidas por la unidad central de proceso (CPU)
  • Mantenimiento de los programas escritos: tarea ardua y costosa
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Lenguaje de 2da Generación o Lenguajes Ensambladores

A
  • Estructuración de programas
  • Abreviaturas nemotécnicas (código de máquina)
  • Facilitaban el uso de instrucciones y mantenimiento de los programas

Desventajas:

  • Fuerte dependencia de la máquina y profundos conocimientos de su arquitectura
  • Seguía siendo una tarea artesanal
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Lenguajes de 3ra Generación o Lenguajes de Alto Nivel

A
  • Permitieron alcanzar mayor nivel de
    abstracción
  • Rápida evolución de la programación
  • Nuevos conceptos: diseño modular, programación orientada a objetos, programación visual, etc.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Editor de programas

A

Un editor de programas es unaherramienta de software que permite escribir y modificar el código fuente de programas, aplicaciones y sitios web.

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

Programas fuentes

A

son archivos de texto, no estructurados, que contienen el código expresado en un lenguaje superior.

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

Editores de Programas específicos

A

reconocen variables, constantes, instrucciones del lenguaje, palabras reservadas, directivas al compilador y diagnósticos de errores, utilizando diferente simbología que incluye variados tipos de letras y colores.

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

Compilación

A

proceso de convertir un programa fuente en un programa objeto, para lo cual el compilador comienza por verificar la integridad y ausencia de errores del primero.

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

Compilación en varias pasadas

A

Define la cantidad de veces que un compilador debe leer el programa fuente previo a la generación del programa objeto.

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

Intérprete

A

Se denomina así a una herramienta o módulo que interpreta y ejecuta las sentencias de un programa fuente una tras otra, sin generar un programa objeto.

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

Preprocesador

A

Es un módulo que tiene la finalidad de modificar o completar al programa fuente previo a ser leído por el compilador. En algunos casos, esto se hace usando el contenido de otros archivos y en otras amplia el código a partir de instrucciones ajenas al lenguaje compilado.

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

Conversor Fuente-Fuente

A

Tienen por finalidad la conversión de un programa fuente desde un lenguaje de alto nivel a otro.

18
Q

Ensamblador

A

Se denomina así a un compilador que tiene por lenguaje fuente a uno de 2ª generación, por lo que se trata de un procesador sencillo que guarda una relación 1 a 1 entre entrada y salida.

19
Q
  • Administrador de librerías
A

Es una herramienta que permite gestionar en una librería las
partes de un sistema que han sido compiladas por separado y que están destinadas a integrar una aplicación.

20
Q
  • Depurador
A

Llamado debugger en su idioma original, es un módulo usado para facilitar las pruebas y eliminar errores de los programas.

21
Q

Enlazador

A

tiene la misión de construir el programa ejecutable a partir del programa objeto, las librerías que pueda tener la aplicación y la librería del sistema operativo.

22
Q

Librería de enlace dinámico

A

librerías que son incorporadas a la aplicación en tiempo de ejecución cuando son necesarias. son llamadas Dynamic Link Libraries (DLL). Permiten que componentes básicos sean compartidos por numerosas aplicaciones y reducen el tamaño de los archivos de los sistemas.

23
Q

Compilador cruzado
Autocompilador
Metacompilador

A
  • Es el compilador que genera programas objeto que están destinados a ser ejecutados en computadores diferentes de aquél en el que se lo ha compilado.
  • Es un compilador en que su propio programa fuente está escrito en el mismo lenguaje que el de los programas fuentes que admite.
  • Se trata de un compilador capaz de admitir programas fuentes escritos en diversos lenguajes.
24
Q

Decompilador
Compilador optimizador

A
  • convertir programas escritos en lenguaje máquina a programas fuentes en lenguajes de alto nivel.
  • cuando hacen el programa objeto buscan mejorar el rendimiento del sistema, manteniendo la funcionalidad original. Los objetivos principales reducir el tamaño del ejecutable, reduccion de uso de memoria y la rapidez de operación.
25
- Compilador gráfico - Compilador intérprete
- Son aquellos que admiten programas objeto representados en forma simbólica. - Se trata de compiladores que generan los programas objeto en un lenguaje intermedio, que luego son interpretados en el momento de la ejecución. Con esto, se obtiene total transportabilidad de los programas objeto.
26
Ambiente integrado de desarrollo (IDE)
Son sistemas interactivos que incorporan al compilador servicios complementarios, tales como un editor de programas fuentes, facilidades para interpretar los programas y ejecutarlos paso a paso o en forma parcial, identificar errores (depuración o debugging) y gestionar las librerías de los proyectos.
27
Interpretes
Herramienta o módulo que interpreta y ejecuta las sentencias de un programa fuente una tras otra, sin generar un programa objeto. Un intérprete traduce código de alto nivel a código máquina línea por línea, ejecutando el programa a medida que lo lee.
28
¿Cómo trabaja un intérprete?
1. Traducción línea por línea: el intérprete lee y traduce el programa una línea a la vez. 2. Ejecución inmediata: ejecuta cada línea inmediatamente después de la traducción. 3. Informe de errores: durante el proceso, el intérprete se detiene y reporta errores y fallos tan pronto como los encuentra.
29
Principal diferencia entre compiladores e interpretes
La principal diferencia entre un intérprete y un compilador es que el intérprete lee, traduce y ejecuta un programa simultáneamente, línea por línea, mientras que el compilador lo hace todo de una vez. Esto facilita a los intérpretes la identificación de errores y la depuración.
30
Notacion T:
1. el del programa fuente “F”, que se desea compilar. 2. el del programa Objeto “O”, que se desea generar. 3. el lenguaje de implantación “I”, que es aquél en el que el propio compilador fue escrito.
31
Contexto del compilador.
32
Análisis léxico:
En esta fase, la cadena de caracteres (variables, constantes, instrucciones del lenguaje, operadores aritméticos, etc.) que constituye el programa fuente es leída carácter a carácter, para identificar y agrupar sus componentes léxicos. y son denominados tokens. Para identificar unívocamente un tipo de token, se reconoce a la expresión regular como patrón léxico.
33
Análisis sintáctico
Se reciben las secuencias de componentes léxicos que fueron identificadas en la fase anterior y como todo esto genera el programa fuente se debe comprobar que las sentencias sean sintácticamente correctas. En caso contrario, el analizador debe informar sobre los errores.
34
Análisis semántico:
Se encarga de revisar al Programa Fuente para reunir información sobre los tipos de variables que será utilizada en la fase posterior de Generación de Código Intermedio. Simultáneamente, se procuran identificar eventuales errores semánticos. 1. comprobación de tipos 2. comprobación de flujos de control 3. comprobación de unicidad o coherencia en las denominaciones de identificadores 4. coherencia en los argumentos de subprogramas 5. potenciales errores en tiempo de ejecución (variables no inicializadas, direccionamiento de arreglos fuera de límites, cocientes que pueden tomar valores nulos, etc.).
35
Generación de código intermedio:
La etapa de análisis prepara al Programa Fuente para ser convertido en un nuevo programa escrito en un lenguaje elemental que es normalmente denominado Lenguaje Intermedio.
36
Optimización de código
esta fase realiza una mejora en la calidad y eficiencia del código intermedio, pero difícilmente permita alcanzar un código óptimo. Para hacer este paso se necesita: - identificar las zonas críticas del programa al efectuarse las mejoras requeridas por el proceso de optimización, se sigue un orden que es el siguiente: 1. Mejoras que se refieren a la calidad de la implementación del programa desde el punto de vista lógico 2. Mejoras particulares para el mejor aprovechamiento global de una cierta máquina, como son la selección de las instrucciones más apropiadas, direccionamientos, etcétera.
37
Generación del programa objeto
fase final del proceso de compilación, donde se usa la representación intermedia y se produce un programa objeto equivalente, que debe ser correcto, eficiente, apropiado a la máquina en la que se va a operar y apto para dar lugar a un ejecutable compatible con el entorno (sistema operativo). Algunas de las tareas de esta fase son: - selección del orden de evaluación de expresiones - selección de instrucciones de la máquina de destino - asignación de registros, memoria y otros recursos - administración de la memoria para datos y programa.
38
Gestor de la tabla de símbolos:
administrador de una base de datos que contiene los identificadores del programa fuente y sus atributos. En el análisis es definida y completada, para que en las fases de síntesis se utilicen estos datos. contiene un registro por cada identificador y es cargada a medida que el analizador léxico detecta nuevos elementos en el programa fuente. El resto de atributos se definen en las fases de análisis sintáctico y semántico.
39
Errores de programación:
Al hablarse de errores se hable de condiciones potenciales de falla. Para detectar ambos tipos de errores, los procesos de desarrollo incluyen una etapa denominada *testing*. - Lexicográficos - sintácticos - semánticos - falla de compilación - falla de ejecución
40
Estrategias de recuperación de errores.
- Recuperación en modo de pánico: luego de que un error es detectado, el analizador avanza hasta completar la sentencia para volver a sincronizarse y poder reanudar el proceso. - Recuperación por reemplazo: se realizan cambios en el código para intentar superar los errores detectados en forma temporaria y luego informarlos. - Recuperación por expansión de la gramática: se introducen producciones especiales en la gramática para superar ciertos errores. Como en el caso anterior, el objetivo es completar el proceso de compilación para informar todos los errores una vez finalizado.
41
Fallas en el compilador
no tienen que ver con defectos en el programa fuente sino con haber excedido ciertos límites específicos referidos a la capacidad del compilador. Errores comunes: 1. Tamaño máximo de la tabla de símbolos. 2. Límite de cantidad de bloques en un programa. 3. Limite en el número de anidamientos de ejecuciones repetidas. 4. Encadenamiento de llamadas a funciones. 5. Límite en el tamaño de las pilas en el análisis sintáctico o semántico.