Unidad 1 Flashcards
(41 cards)
Maquinas abstractas
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.
Gramáticas formales
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.
Maquinas de Turing
fue un formalismo propuesto con la finalidad de disponer de una herramienta abstracta para estudiar la teoría de la computabilidad.
Características y formalismos de las maquinas abstractas:
- Funcionan por intervalos, reconocen que el tiempo avanza pero de forma discreta
- 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.
- 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.
- 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.
- 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.
- 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.
Clasificación de maquinas abstractas
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.
Compiladores
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).
Lenguajes de Primera Generación
- 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
Lenguaje de 2da Generación o Lenguajes Ensambladores
- 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
Lenguajes de 3ra Generación o Lenguajes de Alto Nivel
- 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.
Editor de programas
Un editor de programas es unaherramienta de software que permite escribir y modificar el código fuente de programas, aplicaciones y sitios web.
Programas fuentes
son archivos de texto, no estructurados, que contienen el código expresado en un lenguaje superior.
Editores de Programas específicos
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.
Compilación
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.
Compilación en varias pasadas
Define la cantidad de veces que un compilador debe leer el programa fuente previo a la generación del programa objeto.
Intérprete
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.
Preprocesador
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.
Conversor Fuente-Fuente
Tienen por finalidad la conversión de un programa fuente desde un lenguaje de alto nivel a otro.
Ensamblador
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.
- Administrador de librerías
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.
- Depurador
Llamado debugger en su idioma original, es un módulo usado para facilitar las pruebas y eliminar errores de los programas.
Enlazador
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.
Librería de enlace dinámico
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.
Compilador cruzado
Autocompilador
Metacompilador
- 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.
Decompilador
Compilador optimizador
- 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.