Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
5. Gestin de almacenamiento: Se basa en el principio de Mantener a la PC siempre en operacin. Se implementa media los pipelines, multiprocesadores y multiprogramacin. 6. Entorno de operacin: es el conjunto deperifricos de almacenamiento y E/S. Se subdividen en: A) De alta velocidad: memorias extendidas, etc. B) De velocidad media: discos magnticos, CD-ROM, etc. C) De baja velocidad: lectores, impresoras, etc.
c. Un cargador o editor de vnculos: Su lenguaje objeto es un cdigo de mquina real y su cdigo fuente es casi igual y est compuesto de programas en lenguaje mquina en forma re-ubicable junto con unas tablas de datos que especifican los puntos en los que el cdigo reubicable se debe modificar para volverlo realmente ejecutable. d. Un preprocesador o macro procesador: su lenguaje fuente es una forma ampliada de un lenguaje de alto nivel, y su lenguaje objeto es la forma estndar del mismo lenguaje. La traduccin de un lenguaje de alto nivel a un ejecutable, suele implicar ms de un paso de traduccin. 2. Simulacin de software (interpretacin): es una alternativa a la traduccin, se puede simular un programa a travs de programas ejecutados en una computadora anfitrin, una computadora cuyo lenguaje de mquina sea el lenguaje de alto nivel. Se construye una conjunto de programas en el lenguaje mquina de la computadora anfitrin que representan los algoritmos (y estructuras de datos) necesarios para la ejecucin de programas en el lenguaje de alto nivel. El procedimiento de ejecucin, es similar al realizado por hardware: se decodifica cada instruccin y se lleva a cabo cada enunciado del programa de entrada. Se dice que el traductor procesa los enunciados en el orden fsico de entrada, mientras que el simulador lo hace siguiendo el flujo lgico a travs del programa. La traduccin y la simulacin constituyen dos extremos. En la prctica esto difcilmente ocurre as. Generalmente un lenguaje se implementa en una computadora a travs de una combinacin de traduccin y simulacin. Primero se traduce su forma original en una de ms simple ejecucin. Es mejor traducir ciertos aspectos de la estructura de un programa a formas ms sencillas mientras que para otros aspectos es preferible dejarlos en su forma original y slo procesarlos segn se requiera en la ejecucin. La ventaja de un traductor es que si tiene que ejecutar un proceso de difcil decodificacin dentro una iteracin, lo hace una vez solamente; en cambio el simulador lo hace tantas veces como la iteracin lo requiera, por lo que obviamente pierde eficacia. Como contrapartida, se pierde informacin acerca del programa ya que el programa fuente no se puede modificar al estar traducido. Por lo comn, un programa objeto es mucho ms grande que el programa fuente que lo produjo. A partir de esto, surge una nueva forma de de diferenciar los lenguajes: 1. Lenguajes compilados: significa que los programas en estos lenguajes se traducen ordinariamente al lenguaje de mquina de la computadora real que se est usando antes de que comience la ejecucin. 2. Lenguajes interpretados: en esta forma el traductor no produce cdigo de la mquina que se est utilizando, sino que produce alguna forma intermedia del programa cuya traduccin es ms fcil que la forma original. El uso de un intrprete de software da por resultado una ejecucin relativamente lenta del programa. Adems, requieren
una extensa simulacin por software de funciones primitivas , gestin de almacenamiento, etc.
COMPUTADORA VIRTUAL DESARROLLADA POR EL PROGRAMADOR (implementada por el modelo de ejecucin desarrollado en el programa C para el uso en la computadora virtual de C)
COMPUTADORA VIRTUAL DE C (implementada por rutinas de biblioteca en tempo de ejecucin cargadas con el programa compilado)
COMPUTADORA VIRTUAL DEL SISTEMA OPERATVO (implementada por programas en el lenguaje de mquina de ejecucin en la computadora virtual de firmware) COMPUTADORA VIRTUAL DE FIRMWARE (instrucciones en lenguaje de mquina implementadas por microcdigo ejecutado por la computadora real)
Aqu queda implcito un concepto importante: la equivalencia de programas y datos. Lo que es programa en un contexto, es probable que se convierta en dato en otro.
Tiempo de enlace: es el momento durante el cual se hace esta eleccin. Clases de tiempos de enlace. En el procesamiento de un lenguaje siempre interviene un paso de traduccin seguido por la ejecucin del programa traducido. 1. Tiempo de ejecucin: incluye enlaces de variables a sus valores, de variables a localidades particulares de almacenamiento. Se distingue dos tipos: a. Al entrar a un subprograma o bloque: muchos enlaces solo ocurren en esta etapa, por ejemplo: enlace de parmetros formales a reales y enlace de parmetros formales a localidades particulares de almacenamiento. b. En puntos arbitrarios durante la ejecucin: hay enlaces que pueden ocurrir en cualquier punto durante la ejecucin, por ejemplo el enlace de variables a valores mediante la asignacin. 2. Tiempo de traduccin: se pueden distinguir tres clases: a. Enlaces elegidos por el programador: nombres de variables, tipos de variables, estructuras de enunciados del programa, etc. b. Enlaces elegidos por el traductor: la localidad relativa de un objeto de datos en el almacenamiento, como se guardan los arreglos y cmo se crean descriptores para los arreglos, etc. c. Enlaces elegidos por el cargador: variables a direcciones dentro del almacenamiento designado para cada subprograma, etc. 3. Tiempo de implementacin del lenguaje: se refiere a aspectos de una definicin de lenguaje que son iguales para todos los programas que se ejecutan usando una implementacin particular, por ejemplo: representacin de nmeros y operaciones aritmticas. 4. Tiempo de definicin del lenguaje: Se refiere a la estructura de un lenguaje que se fija cuando ste se define. Ejemplo: posibles formas de hacer enunciados, tipos de estructuras de datos, estructuras de programa, etc. Ejemplo: Si tenemos X = X + 10 escrito en un lenguaje L. 1. Conjunto de posibles tipos para la variable X: se fijan durante la traduccin. 2. Tipo de variable X: puede ser durante la traduccin (ejemplo C) o durante la ejecucin (ejemplo JavaScript). 3. Conjunto de valores posibles para X: se determina durante la implementacin del lenguaje o alternativamente, en el tiempo de carga. 4. Valor de la variable X: de modo habitual, ser durante la ejecucin a travs de una asignacin de un valor. 5. Representacin de la constante 10: puede ser en el tiempo de definicin del lenguaje (usando la cadena 10 como constante en los programas) o en el tiempo de implementacin (segn la serie particular de bits para representar 10 durante la ejecucin).
6. Propiedades del operador +: la eleccin del smbolo + para representar adicin se hace en tiempo de definicin del lenguaje. Pero la operacin que se representa con el smbolo + en caso de homonimia se realiza en tiempo de compilacin.
Importancia de los tiempos de enlace. Cuando todos los enlaces se efectan durante la traduccin, se habla de un enlace temprano; pero cuando la mayora de stos se hacen durante el tiempo de ejecucin, se habla de un enlace tardo. Las ventajas y desventajas de estos dos tipos de enlaces, estn relacionadas al conflicto entre eficiencia y flexibilidad. Tiempos de enlace e implementacin de lenguajes. Por lo general, las definiciones de lenguajes son permisivas con respecto a la especificacin de tiempos de enlace (lo puede elegir el implementador), pero el momento efectivo en el cual el enlace se lleva a cabo est definido de hecho slo por la implementacin del lenguaje.
Este modelo procede del hardware de la computadora convencional que ejecuta instrucciones en forma secuencial. 2. Lenguajes aplicativos o funcionales: consisten en examinar la funcin que el programa representa como una funcin, sin importar los cambios de estado que conforme el programa se ejecute. Se observa el resultado en vez de los datos disponibles. El desarrollo del programa procede a travs del desarrollo de funciones a partir de funciones previamente desarrolladas, para construir funciones ms complejas que manipulan en conjunto de datos de entrada, hasta que la funcin final se puede usar para calcular la respuesta del programa a partir de los datos de entrada. Su forma tpica es:
3. Lenguajes con base en reglas: se ejecutan verificando la presencia de ciertas condiciones habilitadoras, y cuando stas se satisfacen, ejecutan una accin apropiada. Las condiciones habilitadoras determinan el orden de ejecucin. Sintaxis similar a:
condicion habilitadora1 => accion1 condicion habilitadora2 => accion2 condicion habilitadora3 => accion3 ... condicion habilitadoraN => accionN
4. Lenguajes orientados a objetos: se construyen objetos complejos de datos a partir de objetos ms simples, designndoles funciones para que operen con esos datos. Los objetos complejos son extensiones de los ms simples y heredan propiedades de objetos ms sencillos. Con estos lenguaje se pretende ganar la eficiencia de los lenguajes imperativos y construir la flexibilidad y confiabilidad del modelo aplicativo o funcional. Adems, existe una distincin de cdigo espagueti y cdigo estructurado.