aspectos de diseñó de los lenguajes de programación (tema 2)
Post on 25-Jan-2016
221 Views
Preview:
TRANSCRIPT
Aspectos de diseñó de los Aspectos de diseñó de los lenguajes de lenguajes de programaciónprogramación
(Tema 2)
IntroducciónIntroducción
Los primeros lenguajes al ejecutarse en equipos Los primeros lenguajes al ejecutarse en equipos costosos se proyectaban para producir un costosos se proyectaban para producir un código de máquina eficiente, aún cuando la código de máquina eficiente, aún cuando la escritura de los programas era escritura de los programas era difícildifícil..
Ejemplos: Fortran y LISPEjemplos: Fortran y LISP
IntroducciónIntroducción
En la actualidad los equipos son de bajo costo, En la actualidad los equipos son de bajo costo, por lo que, permiten el desarrollo de por lo que, permiten el desarrollo de programas que son programas que son fácilesfáciles de escribir de escribir correctamente aunque se ejecuten con correctamente aunque se ejecuten con lentitud algo mayor.lentitud algo mayor.
Ejemplos: C++, Java, Ada Ejemplos: C++, Java, Ada
Pero, ¿cómo se diseñan esta clase de Pero, ¿cómo se diseñan esta clase de lenguajes?lenguajes?
¿Cómo diseñar un lenguaje?¿Cómo diseñar un lenguaje?
Se tiene que tomar en cuenta tres influencias Se tiene que tomar en cuenta tres influencias principales:principales:
1 La computadora subyacente en donde se van La computadora subyacente en donde se van a ejecutar los programas escritos en el a ejecutar los programas escritos en el lenguaje.lenguaje.
2 El modelo de ejecución, o computadora virtual, El modelo de ejecución, o computadora virtual, que apoya a ese lenguaje en el equipo real.que apoya a ese lenguaje en el equipo real.
3 El modelo de computación que el lenguaje El modelo de computación que el lenguaje implementa.implementa.
Organización y operación de una Organización y operación de una computadoracomputadora
La La arquitectura de una computadoraarquitectura de una computadora la la podemos describir como la unión de podemos describir como la unión de microprocesadores, memoria y dispositivos de microprocesadores, memoria y dispositivos de I/O.I/O.
Organización y operación de una Organización y operación de una computadoracomputadora
Una Una computadoracomputadora es un conjunto de tipos de es un conjunto de tipos de datos, operaciones y características, capaz de datos, operaciones y características, capaz de almacenar y ejecutar programas.almacenar y ejecutar programas.
A partir de la definición de una computadora A partir de la definición de una computadora siempre es posible construir la computadora siempre es posible construir la computadora en hardware.en hardware.
Arquitecturas AlternativasArquitecturas Alternativas•MultiprocesadoresMultiprocesadores
Arquitectura Arquitectura TradicionalTradicional•Von NewmannVon Newmann
Tipos de ArquitecturasTipos de Arquitecturas
Archivos externos dispositivos de entrada y salida
Memoria Principal
Memoria Caché
Registros de Datos
Operación PrimitivaIntérprete
UCP
Operación Primitiva
Registro de Direcciones
Organización de una computadora convencionalOrganización de una computadora convencional
•DatosDatos
•Operaciones PrimitivasOperaciones Primitivas
•Control de SecuenciaControl de Secuencia
•Acceso a DatosAcceso a Datos
•Gestión de AlmacenamientoGestión de Almacenamiento
•Entorno de Operación.Entorno de Operación.
Componentes Fundamentales de Componentes Fundamentales de una Computadorauna Computadora
DatosDatos
Elementos de información integradosElementos de información integrados a la a la computadoracomputadora, , manipulablesmanipulables directamente directamente a travésa travésdede operaciones primitivas de hardware operaciones primitivas de hardware..
Operaciones PrimitivasOperaciones Primitivas
Una computadora Una computadora debe contener un debe contener un conjunto conjunto de operacionesde operaciones primitivas primitivas interconstruidas, interconstruidas, útiles para la manipulación de datos.útiles para la manipulación de datos.
Control de SecuenciaControl de Secuencia
Una computadora debe proporcionar Una computadora debe proporcionar mecanismos para mecanismos para controlarcontrolar el orden en el el orden en el que se van a ejecutar las Operaciones que se van a ejecutar las Operaciones primitivas.primitivas.
Acceso a DatosAcceso a Datos
Una computadora debe incorporar algún medio para Una computadora debe incorporar algún medio para designar operandos y un mecanismo para recuperardesignar operandos y un mecanismo para recuperar operandos de un designador de operandos dado.operandos de un designador de operandos dado.
Gestión de AlmacenamientoGestión de Almacenamiento
Una computadora debe proveer Una computadora debe proveer mecanismos para la mecanismos para la asignaciónasignación de de almacenamiento para programas.almacenamiento para programas.
Entorno de OperaciónEntorno de Operación
El entorno de operación de una computadora El entorno de operación de una computadora consiste ordinariamente en un conjunto de consiste ordinariamente en un conjunto de dispositivos periféricos de almacenamiento dispositivos periféricos de almacenamiento dede entrada / salida entrada / salida
Estados de ComputadorasEstados de Computadoras
Representación dinámica de la computadora Representación dinámica de la computadora durante la ejecución de los programas.durante la ejecución de los programas.
Computadoras de FirmwareComputadoras de Firmware
Es la computadora simulada por un Es la computadora simulada por un microprograma que se ejecuta en una microprograma que se ejecuta en una computadora microprogramable de hardware computadora microprogramable de hardware especial.especial.
Su lenguaje de máquina consiste en un Su lenguaje de máquina consiste en un conjunto de microinstrucciones de nivel conjunto de microinstrucciones de nivel extremadamente bajo. extremadamente bajo.
Traductores y computadoras Traductores y computadoras simuladas por Softwaresimuladas por Software
I. TraducciónI. Traducción
PreprocesadorPreprocesadorCompiladorCompiladorEnsambladorEnsambladorCargadorCargador
II. Simulación de softwareII. Simulación de software
Programa Fuente Preprocesador
Compilador
Ensamblador
Cargador
Programa Fuente estándar
Código Objeto
CódigoMáquina
Ejecutable
PreprocesadorPreprocesador
Básicamente es un procesador de texto, Básicamente es un procesador de texto, toma como entrada una forma ampliada de toma como entrada una forma ampliada de un lenguaje fuente y su salida es una forma un lenguaje fuente y su salida es una forma estándar del mismo lenguaje fuente.estándar del mismo lenguaje fuente.
Un compilador es un traductor cuyo lenguaje Un compilador es un traductor cuyo lenguaje fuente fuente es un lenguaje de alto nivel y cuyo lenguaje es un lenguaje de alto nivel y cuyo lenguaje objeto objeto se aproxima al lenguaje máquina de una se aproxima al lenguaje máquina de una computadora real , ya sea que se trate de un computadora real , ya sea que se trate de un lenguaje ensamblador o alguna variedad de lenguaje ensamblador o alguna variedad de lenguaje máquina.lenguaje máquina.
CompiladorCompilador
Es un traductor cuyo lenguaje objeto es Es un traductor cuyo lenguaje objeto es también alguna variedad de lenguaje también alguna variedad de lenguaje máquina para una computadora real, pero máquina para una computadora real, pero cuyo lenguaje fuente, un lenguaje cuyo lenguaje fuente, un lenguaje ensamblador, constituye en gran medida una ensamblador, constituye en gran medida una representación simbólica del código de representación simbólica del código de máquina objeto.máquina objeto.
EnsambladEnsambladoror
CargadorCargador
Es un traductor cuya entrada es un lenguaje Es un traductor cuya entrada es un lenguaje objeto y la objeto y la salida salida es un programa en lenguaje es un programa en lenguaje máquina remáquina relocalizable.localizable.
Máquina VirtualMáquina Virtual
Son las estructuras de datos y algoritmos de Son las estructuras de datos y algoritmos de un lenguaje que se emplean durante el un lenguaje que se emplean durante el tiempo tiempo de ejecuciónde ejecución de un programa. de un programa.
Programa en C
Máquina virtual de C
ADD #1, AXMOV BX, 300
010111011
Oculta las operaciones y Oculta las operaciones y estructuras de bajo nivel estructuras de bajo nivel
Relación entre Lenguaje y Relación entre Lenguaje y Máquina Virtual Máquina Virtual
Una máquina define un lenguajeUna máquina define un lenguaje Un lenguaje define una máquinaUn lenguaje define una máquina
Código en C
if (x==n) { var1 = 1; var2 = 0;
} else { var1 = 0; var2 = 1; }var1 = 0;var2 = 0;
Máquina virtual de C
Jerarquía de Máquinas VirtualesJerarquía de Máquinas Virtuales
Una computadora con Una computadora con nn niveles puede verse niveles puede verse como como nn máquinas virtualesmáquinas virtuales diferentes, cada diferentes, cada una de las cuales tiene un lenguaje especial.una de las cuales tiene un lenguaje especial.
Nivel de lenguaje orientado a problemas
Nivel de Dispositivo
Nivel de lenguaje ensamblador
Nivel de Microprogramación
Física Estado Sólido
Nivel de Lógica Digital
Nivel del Sistema Operativo
Nivel del Sistema Convencional
Programador
0101 Los RISC no cuentan con Los RISC no cuentan con una descripción de una descripción de microinstruccionesmicroinstrucciones
Traductor para la Máquina Traductor para la Máquina VirtualVirtual
Se debe suministrar un Se debe suministrar un traductortraductor para traducir para traducir programas de usuario al lenguaje de máquina programas de usuario al lenguaje de máquina de la computadora virtual definida por el de la computadora virtual definida por el lenguaje.lenguaje.
Programa en C
Computadora virtual de C
traductortraductor
Computadora virtual de Ensamblador
Computadora de Hardware Real
traductortraductor
traductortraductor
......
Jerarquía de Máquinas VirtualesJerarquía de Máquinas Virtuales
Cada nivel representa una abstracción con objetos y Cada nivel representa una abstracción con objetos y operaciones diferentesoperaciones diferentes
Cada nivel esta construido sobre su predecesorCada nivel esta construido sobre su predecesor Si se quiere escribir programas para la máquina Si se quiere escribir programas para la máquina
virtual del nivel virtual del nivel nn, no se necesita conocer los , no se necesita conocer los interpretes ni los traductores de los niveles de abajo.interpretes ni los traductores de los niveles de abajo.
Las computadoras están diseñadas como una serie Las computadoras están diseñadas como una serie de nivelesde niveles
Para diseñar nuevos niveles, se necesita conocer Para diseñar nuevos niveles, se necesita conocer todos.todos.
La Máquina Virtual de JavaLa Máquina Virtual de Java ¿Por qué están de moda los Bytecodes¿Por qué están de moda los Bytecodes
Habrás oído que con el lenguaje de programación Java, puedes "escribir Habrás oído que con el lenguaje de programación Java, puedes "escribir una vez, ejecutar en cualquier parte". Esto significa que cuando se una vez, ejecutar en cualquier parte". Esto significa que cuando se compila un programa, no se generan instrucciones para una compila un programa, no se generan instrucciones para una plataforma específica. En su lugar, se generan bytecodes Java, que plataforma específica. En su lugar, se generan bytecodes Java, que son instrucciones para la Máquina Virtual Java (Java VM). Si tu son instrucciones para la Máquina Virtual Java (Java VM). Si tu plataforma- sea Windows, UNIX, MacOS o un navegador de internet-- plataforma- sea Windows, UNIX, MacOS o un navegador de internet-- tiene la Java VM, podrá entender los bytecodes.tiene la Java VM, podrá entender los bytecodes.
Enlaces y tiempo de enlaceEnlaces y tiempo de enlace
Un Un enlaceenlace es la asignación de atributos a una es la asignación de atributos a una celda de memoria para un elemento de celda de memoria para un elemento de programa.programa.
El momento en que el programa hace esta El momento en que el programa hace esta elección se conoce como el elección se conoce como el tiempo de enlacetiempo de enlace..
nombre tipo dirección
a entero •a
MemoriaMemoriaTabla de SímbolosTabla de Símbolos
Tipos de tiempos de enlaceTipos de tiempos de enlace
Tiempo de ejecuciónTiempo de ejecución El enlace de parámetros formales a realesEl enlace de parámetros formales a reales A través de la asignación de valores a variablesA través de la asignación de valores a variables
Tiempo de compilaciónTiempo de compilación Tipos para las variablesTipos para las variables Como se guardan las estructuras de datos y sus Como se guardan las estructuras de datos y sus
descriptoresdescriptores Tiempo de cargaTiempo de carga
Fusionar los subprogramas en un ejecutable único Fusionar los subprogramas en un ejecutable único enlazando las variables a direcciones reales de enlazando las variables a direcciones reales de memoria memoria
Tipos de tiempos de enlaceTipos de tiempos de enlace
Tiempo de implantación del lenguajeTiempo de implantación del lenguaje Representación de números y operaciones aritméticas Representación de números y operaciones aritméticas
en la computadora de hardware subyacenteen la computadora de hardware subyacente Tiempo de definición del lenguajeTiempo de definición del lenguaje
Todas las posibles formas opcionales de enunciados, Todas las posibles formas opcionales de enunciados, tipos de estructuras de datos, estructuras de tipos de estructuras de datos, estructuras de programa.programa.
Por ejemplo, cuántos tipos de enlace tiene este sencillo Por ejemplo, cuántos tipos de enlace tiene este sencillo enunciado de asignación escrito en un lenguaje L:enunciado de asignación escrito en un lenguaje L:
X X := := X X + 10+ 10
Tipos de tiempos de enlaceTipos de tiempos de enlace
Cuando un enlace se efectúa durante el Cuando un enlace se efectúa durante el tiempo de ejecución, se dice que es de tipo tiempo de ejecución, se dice que es de tipo dinámicodinámico.. Ejemplos: Prolog, LISP y MLEjemplos: Prolog, LISP y ML
El enlace que ocurre durante el tiempo de El enlace que ocurre durante el tiempo de compilación es de tipo compilación es de tipo estáticoestático.. Ejemplos: C, Pascal y FortranEjemplos: C, Pascal y Fortran
Alcance de una variableAlcance de una variable
Es el conjunto de enunciados en el que el Es el conjunto de enunciados en el que el identificador de la variable es válido.identificador de la variable es válido.
Alcance estáticoAlcance estático: El alcance se determina de : El alcance se determina de acuerdo al lugar donde el identificador es acuerdo al lugar donde el identificador es definido. Se le llama también alcance definido. Se le llama también alcance lexicográfico.lexicográfico.
El alcance estático se determina fácilmente El alcance estático se determina fácilmente utilizando utilizando diagramas de contornodiagramas de contorno..
Alcance estáticoAlcance estático
Programa Avar x,l,m : enterocomienza Proc B var l : entero comienza . . . termina Proc C var m, r : entero comienza Proc D var x,y,z : entero comienza . . . termina terminatermina
x,l,m A
l B Cm,r
Dx,y,z
Diagrama de ContornoDiagrama de Contorno
Alcance DinámicoAlcance Dinámico
El alcance se determina de acuerdo al lugar El alcance se determina de acuerdo al lugar donde se hizo la última definición del donde se hizo la última definición del identificador. Se puede decir que va siguiendo identificador. Se puede decir que va siguiendo “la historia del programa”.“la historia del programa”.
El alcance dinámico se determina utilizando El alcance dinámico se determina utilizando los los registros de activaciónregistros de activación..Enlace dinámico
Enlace estático
Dir. de retorno
Valor de retorno
Variables Locales
Parámetros
Quien lo llamóQuien lo llamó
Diferencias entre Alcance Diferencias entre Alcance Estático y Alcance DinámicoEstático y Alcance Dinámico
Programa Bvar a : entero
Proc P1 comienza Imprime(a); Termina
Proc P2 var a : entero comienza a = 0; P1; termina
comienza a = 7; P2;termina
a = 7 B
P1 P2a = 0
Diagrama de ContornoDiagrama de Contorno
Alcance estáticoImprime 7
Diferencias entre Alcance Diferencias entre Alcance Estático y Alcance DinámicoEstático y Alcance Dinámico
Programa Bvar a : entero
Proc P1 comienza Imprime(a); Termina
Proc P2 var a : entero comienza a = 0; P1; termina
comienza a = 7; P2;termina
Registros de ActivaciónRegistros de Activación
Alcance dinámicoImprime 0
Enlace dinámico
Enlace estático
Dir. de retorno
Valor de retornoEnlace dinámico
Enlace estático
Dir. de retorno
Valor de retorno
a = 0
a = 7
BP2
P1
Funciones Virtuales en C++Funciones Virtuales en C++// Archivo descrip1.hpp class description { protected: char * information public: description(char *info): information(info){} void print(){ printf("%s\n", information); } }; // Archivo descrip2.hpp class sphere: public description { private: float radius; public: sphere(char * info, float rad): (info),radius(rad){} void print(){ printf("%s\n", information); printf("radio=%g\n", radius); } };
// Archivo descrip.cpp sphere small_ball("mini",1.0), beach_ball("plastico", 24.0), planetoid("luna", 1e24); description *shapes[] = { &small_ball, &beach_ball, &planetoid } main() { double tam; tam = sizeof(shapes)/sizeof(shapes[0]); small_ball.print(); beach_ball.print(); planetoid.print(); for(int=0;i<tam; i++) shapes[i]->print(); }
miniradio=1.0plasticoradio=24.0lunaradio=1e+024miniplasticoluna
Funciones Virtuales en C++Funciones Virtuales en C++// Archivo descrip1.hpp class description { protected: char * information public: description(char *info): information(info){} virtual void print(){ printf("%s\n", information); } }; // Archivo descrip2.hpp class sphere: public description { private: float radius; public: sphere(char * info, float rad): (info),radius(rad){} virtual void print(){ printf("%s\n", information); printf("radio=%g\n", radius); } };
// Archivo descrip.cpp sphere small_ball("mini",1.0), beach_ball("plastico", 24.0), planetoid("luna", 1e24); description *shapes[] = { &small_ball, &beach_ball, &planetoid } main() { double tam; tam = sizeof(shapes)/sizeof(shapes[0]); small_ball.print(); beach_ball.print(); planetoid.print(); for(int=0;i<tam; i++) shapes[i]->print(); }
miniradio=1.0plasticoradio=24.0lunaradio=1e+024miniradio=1.0plasticoradio=24.0lunaradio=1e+024
Consecuencias del tiempo de Consecuencias del tiempo de enlaceenlace
Dependiendo del tipo de enlace un programa Dependiendo del tipo de enlace un programa puede ser más eficiente o más flexiblepuede ser más eficiente o más flexible
Tipo Eficiencia Flexibilidad
Dinámico - +
Estático + -
Paradigmas de los lenguajes de Paradigmas de los lenguajes de programaciónprogramación
En ciencias de la computación un En ciencias de la computación un paradigmaparadigma se puede definir como un conjunto de se puede definir como un conjunto de conceptos que permiten modelar el mundo.conceptos que permiten modelar el mundo.
Un paradigma es usado para formular una Un paradigma es usado para formular una solución de cómputo a un problema.solución de cómputo a un problema.
Paradigmas de los lenguajes de Paradigmas de los lenguajes de programaciónprogramación
Existen 5 modelos que describen los Existen 5 modelos que describen los lenguajes de programaciónlenguajes de programación
Lenguajes imperativos o de procedimientosLenguajes imperativos o de procedimientos Lenguajes aplicativos o funcionalesLenguajes aplicativos o funcionales Lenguajes con base en reglas o lógicosLenguajes con base en reglas o lógicos Lenguajes orientados a objetosLenguajes orientados a objetos Lenguajes concurrentesLenguajes concurrentes
1. Lenguajes imperativos o de 1. Lenguajes imperativos o de procedimientosprocedimientos
Se caracterizan por ser claros, formales y Se caracterizan por ser claros, formales y elegantes.elegantes.
Son controlados por enunciados imperativosSon controlados por enunciados imperativos
enunciado 1;enunciado 1;
enunciado 2;enunciado 2;
......
La ejecución de un enunciado hace que el interprete La ejecución de un enunciado hace que el interprete
cambie el valor de una o mas localidades en memoriacambie el valor de una o mas localidades en memoria Ejemplos: Fortran, Pascal, C, Algol, Ada, PL/1Ejemplos: Fortran, Pascal, C, Algol, Ada, PL/1
INTEGER I REAL X(10), SUM SUM = 0.0 DO 100 I=1,10100 SUM=SUM+ X(I)**2 IF (SUM .GT. 1E+5) STOP WRITE(6,200) I,SUM200 FORMAT ('SUMA', I, 'VALORES E',E15.7) END
FORTRANFORTRAN
2. Lenguajes aplicativos o 2. Lenguajes aplicativos o funcionalesfuncionales
Se caracterizan por ser muy eficientes, Se caracterizan por ser muy eficientes, expresivos y semanticamente elegantes.expresivos y semanticamente elegantes.
Los lenguajes aplicativos hacen uso de las funciones Los lenguajes aplicativos hacen uso de las funciones puras con composición funcional, recursión y puras con composición funcional, recursión y expresiones condicionalesexpresiones condicionales
Tienen 4 componentes:Tienen 4 componentes:• un conjunto de funciones primitivasun conjunto de funciones primitivas• un conjunto de formas funcionalesun conjunto de formas funcionales• la operación de aplicaciónla operación de aplicación• un conjunto de objetos de datosun conjunto de objetos de datos
Ejemplos: LISP, MLEjemplos: LISP, ML
; Factorial (defun fact (n) (if (= n 1) ; caso de terminación -> 1! = 1 1 (* n (fact (- n 1))) ; relación recursiva: n! = n * (n-1)! ) )
LISPLISP
3. Lenguajes con base en reglas 3. Lenguajes con base en reglas o lógicoso lógicos
Se caracterizan por ser eficaces y velocesSe caracterizan por ser eficaces y veloces Se ejecutan verificando una condición, que cuando se Se ejecutan verificando una condición, que cuando se
satisface ejecutan una acciónsatisface ejecutan una acción
condición 1 condición 1 entoncesentonces acción 1 acción 1
condicion 2 condicion 2 entonces entonces accion 2accion 2
...... Ejemplo: PrologEjemplo: Prolog
/* Esta linea es un comentario *//* BASE DE HECHOS */padre(pam, bob).padre(tom, bob).padre(tom, liz).padre(bob, ann).padre(bob, pat).padre(pat, jim).femenino(pam).femenino(liz).femenino(ann).femenino(pat).masculino(bob).masculino(tom).masculino(jim).
/* REGLAS */es_hijo(X,Y):- padre(Y,X), masculino(X).tia(X,Y):- padre(PY,Y), hermanos(X,PY), femenino(X).hermanos(X,Y):- padre(PX,X), padre(PX,Y), no_es_igual(X,Y).abuelo(X,Y):- padre(PY,Y), padre(X,PY), masculino(X).no_es_igual(X,X):- !,fail.no_es_igual(X,Y):- true.
/* PREGUNTA */?- abuelo(tom,liz).
PROLOGPROLOG
Pam
Liz
Ann
Tom
Bob
Jim
Pat
4. Lenguajes orientados a 4. Lenguajes orientados a objetosobjetos
Se caracterizan por trabajar con entes abstractos Se caracterizan por trabajar con entes abstractos (objetos) que reflejan las propiedades y (objetos) que reflejan las propiedades y características de objetos o entes realescaracterísticas de objetos o entes reales
Las actividades a realizarse se tornan alrededor de los Las actividades a realizarse se tornan alrededor de los objetos mediante métodos (funciones)objetos mediante métodos (funciones)
La comunicación con el objeto se da a través de La comunicación con el objeto se da a través de mensajesmensajes
Un aspecto fundamental es el concepto de herencia que Un aspecto fundamental es el concepto de herencia que se da cuando los objetos pertenecen a la misma clasese da cuando los objetos pertenecen a la misma clase
Ejemplos: Simula, Smalltalk, JavaEjemplos: Simula, Smalltalk, Java
class TestTh extends Thread { private String nombre; private int retardo; // Constructor para almacenar nuestro nombre // y el retardo public TestTh( String s,int d ) { nombre = s; retardo = d; } // El metodo run() es similar al main(), pero para // threads. Cuando run() termina el thread muere public void run() { // Retasamos la ejecución el tiempo especificado try { sleep( retardo ); } catch( InterruptedException e ) { ; } // Ahora imprimimos el nombre System.out.println( "Hola Mundo! "+nombre+" "+retardo ); }}
JavaJava
public class MultiHola { public static void main( String args[] ) { TestTh t1,t2,t3; // Creamos los threads t1 = new TestTh( "Thread 1",(int)(Math.random()*2000) ); t2 = new TestTh( "Thread 2",(int)(Math.random()*2000) ); t3 = new TestTh( "Thread 3",(int)(Math.random()*2000) ); // Arrancamos los threads t1.start(); t2.start(); t3.start(); } }
JavaJava
5. Lenguajes Concurrentes5. Lenguajes Concurrentes
Su principal objetivo es mejorar la velocidad de Su principal objetivo es mejorar la velocidad de computo, compartir recursos y distribuir la carga computo, compartir recursos y distribuir la carga de trabajode trabajo
Diferentes tipos de arquitecturas:Diferentes tipos de arquitecturas:– Redes de cobertura ampliaRedes de cobertura amplia– Redes LocalesRedes Locales– Multiprocesadores (Multiprocesadores (ClustersClusters))
Comunicación y cooperación entre aplicaciones a través de :Comunicación y cooperación entre aplicaciones a través de :– Envío y recepción de mensajesEnvío y recepción de mensajes– Llamado a procedimiento remotoLlamado a procedimiento remoto– Comunicación de grupoComunicación de grupo– Memoria Virtual DistribuidaMemoria Virtual Distribuida
Ejemplos: PVM, CSP, AdaEjemplos: PVM, CSP, Ada
procedure DECOD_MENSAJEtask GENERAR_CODIGOS;task DECODIFICAR is
entry ENVIAR_CODIGO (C: in CHARACTER);entry RECIBIR_CAR (C: out CHARACTER);
end;task IMPR_MENSAJES;task body GENERAR_CODIGOS is
CODIGO_SIGUIENTE: CHARACTER; begin loop
--setencias para recibir datos--y generar un valor para CODIGO_SIGUIENTEDECODIFICAR.ENVIAR_CODIGO (CODIGO_SIGUIENTE);
end;
AdaAda
task body DECODIFICAR isCODIGO, CAR : CHARACTER;
beginloop
accept ENVIAR_CODIGO (C: in CHARACTER) do CODIGO := C;
end; --setencias para decodificar el valor de CODIGO
--y presentar el valor decodificado en CARaccept RECIBIR_CAR (C: out CHARACTER) do
C:= CAR;end;
end loop;end;
task body IMPR_MENSAJE is TAM_LINEA := 1;
CAR_SIGUIENTE: CHARACTER;POSICION_LINEA: INTEGER;LINEA: STRING (1..TAM_LINEA);
beginPOSICION_LINEA := 1;
loopDECODIFICAR.RECIBIR_CAR (CAR_SIGUIENTE);
LINEA(POSICION_LINEA):=CAR_SIGUIENTE;if POSICION_LINEA < TAM_LINEA then
POSICION_LINEA := POSICION_LINEA + 1;else
IMPRIMIR(LINEA);POSICION_LINEA := 1;
end if;end loop;
end;
beginPUT (“SE HAN ACTIVADO LAS TAREAS PARA DECODIFICAR MENSAJES”)
end;
Pratt, Terrence W.Pratt, Terrence W. Programming languages: design and Programming languages: design and implementation.implementation.
4th Ed.4th Ed. Prentice Hall. Prentice Hall.
ISBN 0130276782ISBN 0130276782
Bruce EckelBruce Eckel Aplique C++ / Madrid ; México : Aplique C++ / Madrid ; México : Osborne McGraw-Hill, c1991Osborne McGraw-Hill, c1991 ISBN 84-7615-567-0ISBN 84-7615-567-0
BibliografíaBibliografía
FinFin
top related