Clase 2
Clase 2
Teoría de la Programación
Clase 2: Introducción parte 2 - Modelo Declarativo
Oz - Procedimientos
Eager vs Lazy
Threads
Explícito vs Implícito
Concurrencia + estados
=
Indeterminismos
● Correctitud
● Complejidad temporal
● Complejidad espacial
Modelo declarativo
Modelo declarativo
“Object-oriented programming is an
exceptionally bad idea which could only
have originated in California”
Modelo declarativo
Qué es legal en un
programa sin importar
qué es lo que el
programa esté
haciendo
Sintaxis - EBNF
Debe:
○ Ser simple
○ Permitir entender el programa en cuanto a
correctitud y complejidad
Semántica - Kernel Language approach
local A B in local A in
A = 4 local B in
B = 5 + A A = 4
end B = 5 + A
end
end
Declaraciones sin asignación
X = {F Y} {F Y X}
Llamados anidados
{P {F A X} Y} local U in
{F A X U}
{P U Y}
end
Condicionales booleanos
Length
Scoping y procedures
Scoping - local scoping
local X in
X=1
local X in
X=2
{Browse X} % Muestra 2
end
{Browse X} % Muestra 1
end
Scoping - static vs dynamic scoping
local P Q in
proc {Q X} {Browse stat(X) end
proc {P X} {Q X} end
local Q in
proc {Q X} {Browse dyn(X)} end
{P ‘hola’}
end
end
Scoping - static vs dynamic scoping
local P Q in
proc {Q X} {Browse stat(X) end
proc {P X} {Q X} end
local Q in
proc {Q X} {Browse dyn(X)} end
{P ‘hola’}
end
end
Abstraccion procedural
𝛔 ●
Ej:
Variables dataflow
Notación:
E
<x> identificador de una variable
E(<x>) el valor en el store del
identificador <x> según su entorno
Operaciones:
Adición: E’ = E + {<x>-> x}
Restricción: E’ = E|{<x>,..<z>}
STACK ● Pila de semantic
statements
ST Semantic statement es un
par (<s>,E) siendo <s> un
statement
Cómputo
● Estado de ejecución.
● Un cómputo define cómo se modifica el estado de
ejecución de un programa.
Estados de ejecución
● Ejecutable
● Terminado
● Suspendido
Semántica
Statements
Skip
(skip, E) 𝛔 ST 𝛔
+ +
ST {...} {...}
Composición secuencial
En el tope del ST tenemos el siguiente semantic statement (<s1> <s2>, E)
(<s1>, E)
(<s1> <s2>, E) 𝛔 𝛔
+ (<s2>, E) +
ST {...} {...}
ST
Declaración de variable
En el tope del ST tenemos el siguiente semantic statement
(local <x> in <s> end , E)
● Se crea la variable x en el store
● Se apila (<s>,E’) al ST
(<x1> = <x2>, E) 𝛔 ST 𝛔
+ {x1,x2,...} + {x =x ...}
ST 1 2
Igualdad variable - valor
En el tope del ST tenemos el siguiente semantic statement (<x> = <v>, E)
(<x> = <v>, E) 𝛔 ST 𝛔
+ {x,...} + {x=v...}
ST
EJEMPLO
local X Y Z in
X = 10
Y = 40
Z = X
local X A in
X = 30
A = persona(nombre:'Lean' edad:X)
end
end
Bibliografía
● Concepts, Techniques, and Models of Computer Programming - Capítulo 2, Peter Van Roy and
Seif Haridi
● Extras:
○ A practical introduction to functional programming (with Python)
https://maryrosecook.com/blog/post/a-practical-introduction-to-functional-programming