Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... ·...

48
Working Hypothesis Programaci´ on Concurrente y distribuida Camilo Rueda 1 1 Universidad Javeriana-Cali 1 de febrero de 2010

Transcript of Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... ·...

Page 1: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,

Working Hypothesis

Programacion Concurrente y distribuida

Camilo Rueda 1

1Universidad Javeriana-Cali

1 de febrero de 2010

Page 2: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,

Working Hypothesis Introd

Motivacion

PremisaEl contexto de aplicacion de la

Ingenierıa de Softwareesta cambiando

Page 3: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,

Working Hypothesis Introd

Motivacion

PremisaEl contexto de aplicacion de la

Ingenierıa de Softwareesta cambiando

CPU multi-nucleo

Page 4: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,

Working Hypothesis Introd

Motivacion

PremisaEl contexto de aplicacion de la

Ingenierıa de Softwareesta cambiando

CPU multi-nucleo

Programas en la web

Page 5: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,

Working Hypothesis Introd

Motivacion

PremisaEl contexto de aplicacion de la

Ingenierıa de Softwareesta cambiando

CPU multi-nucleo

Programas en la web

Dispositivos moviles programables

Page 6: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,

Working Hypothesis Introd

Motivacion

PremisaEl contexto de aplicacion de la

Ingenierıa de Softwareesta cambiando

CPU multi-nucleo

Programas en la web

Dispositivos moviles programables

Programas interactuan con el mundo fısico

Page 7: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,

Working Hypothesis Introd

Motivacion (cont)

Conceptos, modelos, tecnicasy metodologıas

deben adaptarse

Page 8: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,

Working Hypothesis Introd

Motivacion (cont)

Conceptos, modelos, tecnicasy metodologıas

deben adaptarse

En software tradicional:

Concepto Modelo Tecnica

Modularidad Tipo abstracto de datos Clase

Page 9: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,

Working Hypothesis Introd

Motivacion (cont)

Conceptos, modelos, tecnicasy metodologıas

deben adaptarse

En el nuevo contexto:

Concepto Modelo Tecnica

Proceso objeto activo Puerto+cola de mensajesLocalidad ... ...

Exclusion mutua ... ...Imparcialidad (“fairness”) ... ...

... ... ...

Page 10: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,

Working Hypothesis Introd

Por que nuevas metodologıas?

Ejemplo: Exclusion mutua

P1 ≡l0 : loop forever do

l1 : seccion no crıtical2 : s := 1;l3 : y1 := 1;l4 : wait (y2 = 0) ∨ (s 6= 1);l5 : seccion crıtical6 : y1 := 0

od

P2 ≡m0 : loop forever do

m1 : seccion no crıticam2 : s := 2;m3 : y2 := 1;m4 : wait (y1 = 0) ∨ (s 6= 2);m5 : seccion crıticam6 : y2 := 0

od

ejecutar : s := 1; y1, y2 := 0, 0; [P1 ||P2]

funciona?

Page 11: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,

Working Hypothesis Introd

Por que nuevas metodologıas?

Ejemplo: Exclusion mutua

P1 ≡l0 : loop forever do

l1 : seccion no crıtical2 : s := 1;l3 : y1 := 1;l4 : wait (y2 = 0) ∨ (s 6= 1);l5 : seccion crıtical6 : y1 := 0

od

P2 ≡m0 : loop forever do

m1 : seccion no crıticam2 : s := 2;m3 : y2 := 1;m4 : wait (y1 = 0) ∨ (s 6= 2);m5 : seccion crıticam6 : y2 := 0

od

ejecutar : s := 1; y1, y2 := 0, 0; [P1 ||P2]

funciona?Exactamente por que?

Page 12: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,

Working Hypothesis Introd

Por que nuevas metodologıas?

Ejemplo: Exclusion mutua

P1 ≡l0 : loop forever do

l1 : seccion no crıtical2 : y1 := 1;l3 : s := 1;l4 : wait (y2 = 0) ∨ (s 6= 1);l5 : seccion crıtical6 : y1 := 0

od

P2 ≡m0 : loop forever do

m1 : seccion no crıticam2 : y2 := 1;m3 : s := 2;m4 : wait (y1 = 0) ∨ (s 6= 2);m5 : seccion crıticam6 : y2 := 0

od

ejecutar : s := 1; y1, y2 := 0, 0; [P1 ||P2]

funciona?

Page 13: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,

Working Hypothesis Introd

Por que nuevas metodologıas?

Ejemplo: Exclusion mutua

P1 ≡l0 : loop forever do

l1 : seccion no crıtical2 : y1 := 1;l3 : s := 1;l4 : wait (y2 = 0) ∨ (s 6= 1);l5 : seccion crıtical6 : y1 := 0

od

P2 ≡m0 : loop forever do

m1 : seccion no crıticam2 : y2 := 1;m3 : s := 2;m4 : wait (y1 = 0) ∨ (s 6= 2);m5 : seccion crıticam6 : y2 := 0

od

ejecutar : s := 1; y1, y2 := 0, 0; [P1 ||P2]

funciona?Exactamente por que?

Page 14: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,

Working Hypothesis Introd

Estrategia del curso

Presentar con cada concepto deprogramacion concurrente y distribuida,sus modelos y tecnologıas

Page 15: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,

Working Hypothesis Introd

Estrategia del curso

Presentar con cada concepto deprogramacion concurrente y distribuida,sus modelos y tecnologıas

Para los modelos

Formalizarlos en un lenguaje de nucleo extendible,el Kernel Oz

Page 16: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,

Working Hypothesis Introd

Estrategia del curso

Presentar con cada concepto deprogramacion concurrente y distribuida,sus modelos y tecnologıas

Para los modelos

Formalizarlos en un lenguaje de nucleo extendible,el Kernel Oz

Para las tecnicas

Programarlas en el lenguaje de nucleo,construir aplicaciones

Page 17: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,

Working Hypothesis Introd

El Lenguaje de nucleo

Lenguaje de programacion minimal:con el mınimo de construcciones necesariaspara representar un concepto

Page 18: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,

Working Hypothesis Introd

El Lenguaje de nucleo

Lenguaje de programacion minimal:con el mınimo de construcciones necesariaspara representar un concepto

Expresivo

Page 19: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,

Working Hypothesis Introd

El Lenguaje de nucleo

Lenguaje de programacion minimal:con el mınimo de construcciones necesariaspara representar un concepto

Expresivo

Implementable e implementado

Page 20: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,

Working Hypothesis Introd

El Lenguaje de nucleo

Lenguaje de programacion minimal:con el mınimo de construcciones necesariaspara representar un concepto

Expresivo

Implementable e implementado

Simple

Page 21: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,

Working Hypothesis Introd

El Lenguaje de nucleo

Lenguaje de programacion minimal:con el mınimo de construcciones necesariaspara representar un concepto

Expresivo

Implementable e implementado

Simple

Modular (o “incrementable”)

Page 22: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,

Working Hypothesis Introd

El Lenguaje de nucleo

Lenguaje de programacion minimal:con el mınimo de construcciones necesariaspara representar un concepto

Expresivo

Implementable e implementado

Simple

Modular (o “incrementable”)

Realısticamente cercano a lenguajes existentes

Page 23: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,

Working Hypothesis Introd

El Lenguaje de nucleo

Lenguaje de programacion minimal:con el mınimo de construcciones necesariaspara representar un concepto

Expresivo

Implementable e implementado

Simple

Modular (o “incrementable”)

Realısticamente cercano a lenguajes existentes

Semantica precisa

Nombre de moda: “framework”

Page 24: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,

Working Hypothesis Introd

El KL Oz: modelo declarativo

< st > ::=< st1 >< st2 > secuencia de comandos

local < var > in < st > end variable localif < var > then < st1 > condicional

else < st2 > endcase < var > of casos

< patron > then < st1 >[ ] < patronk > then < stk >

else < st >end{< var >< arg1 > . . . < argn > } llamado a procedimiento

Por que no hay declaracion de procedimientos?

Page 25: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,

Working Hypothesis Introd

El KL Oz: modelo declarativo

< st > ::=< st1 >< st2 > secuencia de comandos

local < var > in < st > end variable localif < var > then < st1 > condicional

else < st2 > endcase < var > of casos

< patron > then < st1 >[ ] < patronk > then < stk >

else < st >end{< var >< arg1 > . . . < argn > } llamado a procedimiento

Por que no hay declaracion de procedimientos? son valores:< valor >::=< numero > | < registro > | < proced >< proced >::= proc { $ < arg1 > . . . < argn >} < st > end

Page 26: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,

Working Hypothesis Introd

Por que KL en el curso

Por ser dispositivo de computo: refuerza conceptos teoricosviendo su realizacion practica

es a la vez riguroso, simple y practico.

Puede cubrir varios paradigmas de programacion

Puede aumentarse para distintos modelos de computacion:Programacion concurrenteProgramacion distribuida

Page 27: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,

Working Hypothesis Introd

Modelos de computacion (version PVR&SH)

Declarativo ((X, un poco)

Abstraccion procedimental y recursionEvaluacion perezosaProgramacion de alto ordenLenguajes: ML ( caML)

Estado explıcito (imperativo)

Funciones con memoriaTipos abstractos de datosLenguajes: C

Concurrente declarativo o dirigido por datos (X)

Programacion multi-hilos (X)Flujos (streams) (X)Sincronizacion de procesos (X)

Page 28: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,

Working Hypothesis Introd

Modelos (2)

Concurrencia por paso de mensaje (X)

Asincronıa (X)Puertos (X)Agentes (X)Lenguajes: Earlang (X)

Orientado-objetos

HerenciaClase, objetoLenguajes: Java, Eiffel, C++, et al.

Concurrencia de estado compartido (X)

Candados (X)Monitores (X)Transacciones (X)Lenguajes: Java concurrente (X)

Page 29: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,

Working Hypothesis Introd

Modelos (3)

Programacion distribuida (X)

Distribucon de datos (X)istribucion de estado (X)Patrones de programacion distribuida (X)Protocolos distribuidos (X)Manejo de fallas (X)aspectos de seguridad (X)Movilidad (X ?)

Page 30: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,

Working Hypothesis Introd

Objetivos generales

Saber disenar programas concurrentes y distribuidos

Poder razonar formalmente sobre un programa concurrente odistribuido

Conocer como verificarlos

Poder implementar un programa concurrente o distribuidousando el lenguaje de nucleo

Page 31: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,

Working Hypothesis Introd

Programa concurrente vs secuencial

Secuencial:

Observables: Parejas de estados iniciales y finalesi.e. Valores de las variables de entrada/salidaEl como se llega al estado final no importaHay un solo camino posible al estado final

Concurrente:

Estados intermedios son tan importantes como los finales(sincronizacion)Observables:

Conjunto de variables que ocurren en un componenteConjunto de variables con las que se comunica

Page 32: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,

Working Hypothesis Introd

Semantica de la concurrencia

traza: una secuencia particular de transiciones atomicasde estado

σ0 →α1 σ1 →α2 ...→αi σi →αi+1 σi+1

σi : Estados

αi : acciones atomicas

α1α2... es un intercalamiento (interleaving). Corresponde auna historia del proceso

Semantica de un programa:conjunto de todas sus historias posibles

Page 33: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,

Working Hypothesis Introd

Como razonar sobre prog. concurrentes?

Inspeccionar cada historia?

Page 34: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,

Working Hypothesis Introd

Como razonar sobre prog. concurrentes?

Inspeccionar cada historia? son demasiadas!!

Page 35: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,

Working Hypothesis Introd

Como razonar sobre prog. concurrentes?

Inspeccionar cada historia? son demasiadas!!

Mejor:Representar conjuntos enteros de trazas por sus propiedadesun predicado representa un conjunto de estados

Un programa es una relacion entre predicados

Page 36: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,

Working Hypothesis Introd

Como involucrar sincronizacion?

La comunicacion permite a un proceso influir sobre otro

Posibilidades:

Variables compartidasPaso de mensajes (canales compartidos)

Esquemas de sincronizacion:

Exclusion mutuaSincronizacion condicionalComunicacion sıncrona

Page 37: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,

Working Hypothesis Introd

Ejemplo

ENVIA RECIBEBUFFER

Exclusion mutua entre envıo y recepcion

Sincronizacion condicional: Evitar que el mismo mensaje seenvıe dos veces.

Protocolo de comunicacion: sincronıa.

Page 38: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,

Working Hypothesis Introd

Semantica operacional del KL

Las variables son de asignacion unicaLa asociacion de variables con valores se mantiene en elalmacen (“store”)El store esta compuesto de entidades: variables con susvalores.

Page 39: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,

Working Hypothesis Introd

Identificadores y variables

Los identificadores son las variables del usuario en unprograma

Un identificador referencia una entidad del store

Page 40: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,

Working Hypothesis Introd

Tipos en el modelo declarativo

Page 41: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,

Working Hypothesis Introd

Maquina abstracta de KL

Un store de asignacion unica σ: conjunto de variablesx1, . . . , xk

Un Ambiente E : funcion de identificadores a variables del store{〈x〉1 → x1, . . . 〈x〉n → xn, }Una Instruccion Semantica: pareja (〈s〉,E )

s: instruccionE : ambiente

Un estado de ejecucion: pareja (ST , σ)ST : pila de instrucciones semanticas

Una computacion: secuencia de estados de ejecucion, a partirde un estado inicial

(ST0, σ0)→ (ST1, σ1)→ (ST2, σ2)→ . . .

Page 42: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,

Working Hypothesis Introd

Ejecucion de un programa

El estado de ejecucion inicial es [(〈s〉, ∅)], ∅). La instruccionsemantica inicial es (〈s〉, ∅) con un ambiente vacıo, y el storeinicial es vacıo

En cada paso de ejecucion, el primer elemento de ST se sacade la pila y la ejecucion prosigue segun la forma del elemento

El estado final (si existe) es en el que la pila semanticaesta vacıa.

Una pila semantica puede estar en uno de los estados:

corriendo: ST puede hacer un paso de ejecucionterminado: ST es vacıosuspendido: ST no es vacıo, pero no puede ejecutar un paso

Page 43: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,

Working Hypothesis Introd

Ejemplo: instruccion local

Instruccion semantica: (local 〈x〉in 〈s〉end ,E )

La ejecucion consiste de las acciones siguientes:

Crear una variable x nueva en el storeAgregar a la pila (〈s〉,E + {〈x〉 → x})

Page 44: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,

Working Hypothesis Introd

Ejemplo: instruccion if

Instruccion semantica: (if 〈x〉then 〈s〉1else 〈s〉2end ,E )

Esta instruccion tiene una condicion de activacion: E (〈x〉)debe estar determinado, i.e. ligado a numero, registro oprocedimiento

La ejecucion consiste de las acciones siguientes:

Si la condicion de activacion se cumple, entoncessi E (〈x〉) no es un booleano, levante condicion de errorsi E (〈x〉) es verdadero, agregar a la pila (〈s〉1,E )si E (〈x〉) es falso, agregar a la pila (〈s〉2,E )

Si la condicion de activacion no se cumple, se suspende laejecucion

Si otra actividad hace la condicion de activacion cierta, laejecucion puede continuar. Esto permite programacion de flujode datos (concurrencia declarativa)

Page 45: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,

Working Hypothesis Introd

Ejemplo: procedimientos

Un valor procedimental es una pareja:(proc {$〈y〉1 . . . 〈y〉n}〈s〉end ,CE )donde CE (el ambiente contextual) es el ambiente en el quese definio el procedimiento

En un llamado a procedimiento({〈x〉 〈x〉1 . . . 〈x〉n},E ):

Si E (〈x〉) es de la forma(proc {〈y〉1 . . . 〈y〉n}〈s〉 end ,CE ), entonces agregue a la pila

(〈s〉,CE + {〈y〉1 → E (〈x〉1), . . . , 〈y〉n → E (〈x〉n)})Esto permite programacion de alto orden como en lenguajesfuncionales

Page 46: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,

Working Hypothesis Introd

Importancia del modelo declarativo

Un programa declarativo puede particionarse en componentesque pueden escribirse, chequearse y probar su correccion

independientemente de los otros

Hay tecnicas simples de razonamiento para construirprogramas

Page 47: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,

Working Hypothesis Introd

tarea

Asegurar conocimientos basicos de Mozat: leer libro PVR, cap2 (hasta 2.7 )

Escriba la ejecucion formal del programa

local Op W inproc {Op X Y F R}

if X > Y then R = {F X Y }else R = {F Y X} endend{Op 7 5 fun {$ X Y } X − Y end W }

end

Page 48: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,

Working Hypothesis Introd

Primeros programas en Oz

(archivo primeros.oz)