1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa...

74
1 Aula 11 Aula 11 Linguagens Declarativas Linguagens Declarativas e e Multiparadigma Multiparadigma Universidade do Vale do Rio dos S < Página da Disciplina > www.inf.unisinos.br/~barbosa www.inf.unisinos.br/~barbosa <Endereço do Professor > [email protected] [email protected]

Transcript of 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa...

Page 1: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

1

Aula 11Aula 11Linguagens DeclarativasLinguagens Declarativas

eeMultiparadigmaMultiparadigma

Universidade do Vale do Rio dos Sinos

< Página da Disciplina >

www.inf.unisinos.br/~barbosawww.inf.unisinos.br/~barbosa

<Endereço do Professor >

[email protected]@exatas.unisinos.br

Page 2: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

2

1 – Abordagem do Sebesta para Funcionais

SumárioSumário

Page 3: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

3

1 – Abordagem do Sebesta para Funcionais2 – Abordagem do Sebesta para Lógicas

SumárioSumário

Page 4: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

4

1 – Abordagem do Sebesta para Funcionais2 – Abordagem do Sebesta para Lógicas3 – Implementação de Lógicas

SumárioSumário

Page 5: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

5

1 – Abordagem do Sebesta para Funcionais2 – Abordagem do Sebesta para Lógicas3 – Implementação de Lógicas4 – Implementação de Funcionais

SumárioSumário

Page 6: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

6

1 – Abordagem do Sebesta para Funcionais2 – Abordagem do Sebesta para Lógicas3 – Implementação de Lógicas4 – Implementação de Funcionais5 – Proposta do Holo

SumárioSumário

Page 7: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

7

1 – Abordagem do Sebesta para Funcionais2 – Abordagem do Sebesta para Lógicas

3 – Implementação de Lógicas4 – Implementação de Funcionais5 – Proposta do Holo

SumárioSumário

Page 8: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

8

1 – Abordagem do Sebesta para Funcionais - Introdução - Funções matemáticas - Fundamentos da linguagens funcionais - LISP (1970) - Scheme (dialeto LISP, 1975) - Common LISP (1980) - ML (1990) - Haskell (1996) - Aplicações da funcionais - Comparação entre funcionais e imperativas

SumárioSumário

Page 9: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

9

1 – Abordagem do Sebesta para Funcionais2 – Abordagem do Sebesta para Lógicas - Introdução - Cálculo de predicados - Demonstração de teoremas - Visão geral da programação em lógica - Origens do Prolog - Elementos básicos do Prolog - Deficiências do Prolog - Aplicações da programação em lógica

SumárioSumário

Page 10: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

10

1 – Abordagem do Sebesta para Funcionais2 – Abordagem do Sebesta para Lógicas3 – Implementação de Lógicas

SumárioSumário

Page 11: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

11

1 – Abordagem do Sebesta para Funcionais2 – Abordagem do Sebesta para Lógicas3 – Implementação de Lógicas

SumárioSumário

Page 12: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

12

ImplementaçãoImplementação• Warren’s Abstract Machine (WAM) David Warren , 1983

Page 13: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

13

ImplementaçãoImplementação• Warren’s Abstract Machine (WAM) David Warren , 1983• Máquina Abstrata: - Representação de dados - Instruções de máquina

Page 14: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

14

ImplementaçãoImplementação• Warren’s Abstract Machine (WAM) David Warren , 1983• Máquina Abstrata: - Representação de dados - Instruções de máquina• Arquitetura da WAM

Page 15: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

15

ImplementaçãoImplementação• Warren’s Abstract Machine (WAM) David Warren , 1983• Máquina Abstrata: - Representação de dados - Instruções de máquina• Arquitetura da WAM

Page 16: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

16

Arquitetura da WAMArquitetura da WAM

LOW

HIGH

Page 17: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

17

Arquitetura da WAMArquitetura da WAM

Code AreaLOW

HIGH

Opcodes

Page 18: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

18

Arquitetura da WAMArquitetura da WAM

Code Area

HEAP

LOW

HIGH

Células contendovariáveis, estruturas e constantes

Opcodes

Page 19: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

19

Arquitetura da WAMArquitetura da WAM

Code Area

HEAP

STACK

LOW

HIGH

Pontos de Escolha e Ambientes

Opcodes

Células contendovariáveis, estruturas e constantes

Page 20: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

20

Arquitetura da WAMArquitetura da WAM

Code Area

HEAP

STACK

TRAIL

LOW

HIGH

Variáveis que devemser desligadas no backtracking

Pontos de Escolha e Ambientes

Opcodes

Células contendovariáveis, estruturas e constantes

Page 21: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

21

Arquitetura da WAMArquitetura da WAM

Code Area

HEAP

STACK

TRAIL

PDL

LOW

HIGHPush Down ListPilha usada pelo algoritmo de unificação

Variáveis que devemser desligadas no backtracking

Pontos de Escolha e Ambientes

Opcodes

Células contendovariáveis, estruturas e constantes

Page 22: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

22

Arquitetura da WAMArquitetura da WAM

Code Area

HEAP

STACK

TRAIL

PDL

LOW

HIGH

REGISTRADORES

Page 23: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

23

Arquitetura da WAMArquitetura da WAM

Code Area

HEAP

STACK

TRAIL

PDL

LOW

HIGH

REGISTRADORES

Registradoresde

Argumentos

A1A2A3.........An

Page 24: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

24

Arquitetura da WAMArquitetura da WAM

Code Area

HEAP

STACK

TRAIL

PDL

LOW

HIGH

Registradoresde

Argumentos

A1A2A3.........An

REGISTRADORES

RegistradoresTemporários

X1X2X3.........Xn

Page 25: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

25

ImplementaçãoImplementação• Warren’s Abstract Machine (WAM) David Warren , 1983• Máquina Abstrata: - Representação de dados - Instruções de máquina• Arquitetura da WAM• Representação de dados e compilação

Page 26: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

26

ImplementaçãoImplementação• Warren’s Abstract Machine (WAM) David Warren , 1983• Máquina Abstrata: - Representação de dados - Instruções de máquina• Arquitetura da WAM• Representação de dados e compilação

Page 27: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

27

Arquitetura da WAMArquitetura da WAM

Code Area

HEAP

STACK

TRAIL

PDL

LOW

HIGH

Page 28: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

28

Arquitetura da WAMArquitetura da WAM

Code Area

HEAP

STACK

TRAIL

PDL

LOW

HIGH

p(Z,h(Z,W),f(W))

Page 29: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

29

Arquitetura da WAMArquitetura da WAM

Code Area

HEAP

STACK

TRAIL

PDL

LOW

HIGH

p(Z,h(Z,W),f(W))

STR 1

h / 2

REF 2

REF 3

0

12

3

Page 30: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

30

Arquitetura da WAMArquitetura da WAM

Code Area

HEAP

STACK

TRAIL

PDL

LOW

HIGH

p(Z,h(Z,W),f(W))

STR 1

h / 2

REF 2

REF 3

STR 5

f / 1

REF 3

0

12

3

4

5

6

Page 31: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

31

Arquitetura da WAMArquitetura da WAM

Code Area

HEAP

STACK

TRAIL

PDL

LOW

HIGH

p(Z,h(Z,W),f(W))

STR 1

h / 2

REF 2

REF 3

STR 5

f / 1

REF 3

STR 8

p / 3

REF 2

STR 1

STR 5

0

12

3

4

5

6

78

9

10

11

Page 32: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

32

Arquitetura da WAMArquitetura da WAM

Code Area

HEAP

STACK

TRAIL

PDL

LOW

HIGH

?- p(Z,h(Z,W),f(W)).

Page 33: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

33

Arquitetura da WAMArquitetura da WAM

Code Area

HEAP

STACK

TRAIL

PDL

LOW

HIGH

1. put_variable Xi,Ai2. put_structure f/n,Ai3. set_variable Xi4. set_value Xi5. call f/n

?- p(Z,h(Z,W),f(W)).

Page 34: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

34

Arquitetura da WAMArquitetura da WAM

Code Area

HEAP

STACK

TRAIL

PDL

LOW

HIGH

put_variable X4,A1put_structure h/2,A2set_value X4set_variable X5put_structure f/1,A3set_value X5call p/3

?- p(Z,h(Z,W),f(W)).

1. put_variable Xi,Ai2. put_structure f/n,Ai3. set_variable Xi4. set_value Xi5. call f/n

Page 35: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

35

?- p(Z,h(Z,W),f(W)).

put_variable X4,A1put_structure h/2,A2set_value X4set_variable X5put_structure f/1,A3set_value X5call p/3

Page 36: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

36

REF 0 0

?- p(Z,h(Z,W),f(W)).

put_variable X4,A1put_structure h/2,A2set_value X4set_variable X5put_structure f/1,A3set_value X5call p/3

A1

X4

Page 37: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

37

?- p(Z,h(Z,W),f(W)).REF 0 0

?- p(Z,h(Z,W),f(W)).

put_variable X4,A1put_structure h/2,A2set_value X4set_variable X5put_structure f/1,A3set_value X5call p/3

A1

X4 h / 2

A2

1

Page 38: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

38

?- p(Z,h(Z,W),f(W)).?- p(Z,h(Z,W),f(W)).REF 0 0

?- p(Z,h(Z,W),f(W)).

put_variable X4,A1put_structure h/2,A2set_value X4set_variable X5put_structure f/1,A3set_value X5call p/3

A1

X4 h / 2

A2

1

REF 0 3

Page 39: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

39

?- p(Z,h(Z,W),f(W)).?- p(Z,h(Z,W),f(W)).REF 0 0

?- p(Z,h(Z,W),f(W)).

put_variable X4,A1put_structure h/2,A2set_value X4set_variable X5put_structure f/1,A3set_value X5call p/3

A1

X4 h / 2

A2

1

REF 0 2

REF 3 3X5

Page 40: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

40

?- p(Z,h(Z,W),f(W)).?- p(Z,h(Z,W),f(W)).REF 0 0

?- p(Z,h(Z,W),f(W)).

put_variable X4,A1put_structure h/2,A2set_value X4set_variable X5put_structure f/1,A3set_value X5call p/3

A1

X4 h / 2

A2

1

REF 0 2

REF 3 3X5 f / 1 4A3

Page 41: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

41

?- p(Z,h(Z,W),f(W)).?- p(Z,h(Z,W),f(W)).REF 0 0

?- p(Z,h(Z,W),f(W)).

put_variable X4,A1put_structure h/2,A2set_value X4set_variable X5put_structure f/1,A3set_value X5call p/3

A1

X4 h / 2

A2

1

REF 0 2

REF 3 3X5 f / 1 4A3 REF 3 5

Page 42: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

42

?- p(Z,h(Z,W),f(W)).?- p(Z,h(Z,W),f(W)).REF 0 0

?- p(Z,h(Z,W),f(W)).

put_variable X4,A1put_structure h/2,A2set_value X4set_variable X5put_structure f/1,A3set_value X5call p/3

A1

X4 h / 2

A2

1

REF 0 2

REF 3 3X5 f / 1 4A3 REF 3 5

Page 43: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

43

?- p(Z,h(Z,W),f(W)).?- p(Z,h(Z,W),f(W)).REF 0 0

?- p(Z,h(Z,W),f(W)).

put_variable X4,A1put_structure h/2,A2set_value X4set_variable X5put_structure f/1,A3set_value X5call p/3

A1

X4 h / 2

A2

1

REF 0 2

REF 3 3X5 f / 1 4A3 REF 3 5

Page 44: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

44

?- p(Z,h(Z,W),f(W)).?- p(Z,h(Z,W),f(W)).REF 0 0

?- p(Z,h(Z,W),f(W)

put_variable X4,A1put_structure h/2,A2set_value X4set_variable X5put_structure f/1,A3set_value X5call p/3

A1

X4 h / 2

A2

1

REF 0 2

REF 3 3X5 f / 1 4A3 REF 3 5

Page 45: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

45

?- p(Z,h(Z,W),f(W)).?- p(Z,h(Z,W),f(W)).REF 0 0

?- p(Z,h(Z,W),f(W)).

put_variable X4,A1put_structure h/2,A2set_value X4set_variable X5put_structure f/1,A3set_value X5call p/3

A1

X4 h / 2

A2

1

REF 0 2

REF 3 3X5 f / 1 4A3 REF 3 5

Procedimento p/3na área de código

Page 46: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

46

Arquitetura da WAMArquitetura da WAM

Code Area

HEAP

STACK

TRAIL

PDL

LOW

HIGH

p(f(X),h(Y,f(a)),Y).

Page 47: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

47

Arquitetura da WAMArquitetura da WAM

Code Area

HEAP

STACK

TRAIL

PDL

LOW

HIGH

1. get_structure f/n,Xi2. unify_variable Xi3. unify_value Xi4. get_value Xn,Na5. unify_constant C6. proceed

p(f(X),h(Y,f(a)),Y).

Page 48: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

48

Arquitetura da WAMArquitetura da WAM

Code Area

HEAP

STACK

TRAIL

PDL

LOW

HIGH

p(f(X),h(Y,f(a)),Y).1. get_structure f/n,Xi2. unify_variable Xi3. unify_value Xi4. get_value Xn,Na5. unify_constant C6. proceed

p/3: get_structure f/1,A1 unify_variable X4 get_structure h/2,A2 unify_variable X5 unify_variable X6 get_value X5,A3 get_structure f/1,X6 unify_constant a proceed

Page 49: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

49

?- p(Z,h(Z,W),f(W)).

p(f(X),h(Y,f(a)),Y).

Page 50: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

50

?- p(Z,h(Z,W),f(W)).

p(f(X),h(Y,f(a)),Y).

REF 0 0A1h / 2

A2

1

REF 0 2

REF 3 3

f / 1 4A3 REF 3 5

Page 51: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

51

?- p(Z,h(Z,W),f(W)).

p(f(X),h(Y,f(a)),Y).

REF 0 0A1h / 2

A2

1

REF 0 2

REF 3 3

f / 1 4A3 REF 3 5

p/3: get_structure f/1,A1 unify_variable X4 get_structure h/2,A2 unify_variable X5 unify_variable X6 get_value X5,A3 get_structure f/1,X6 unify_constant a proceed

Page 52: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

52

?- p(Z,h(Z,W),f(W)).

p(f(X),h(Y,f(a)),Y).

REF 0 -> 6 0A1h / 2

A2

1

REF 0 2

REF 3 3

f / 1 4A3 REF 3 5

p/3: get_structure f/1,A1 unify_variable X4 get_structure h/2,A2 unify_variable X5 unify_variable X6 get_value X5,A3 get_structure f/1,X6 unify_constant a proceed

STR 7 6

f / 1 7

Page 53: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

53

?- p(Z,h(Z,W),f(W)).

p(f(X),h(Y,f(a)),Y).

REF 0 -> 6 0A1h / 2

A2

1

REF 0 2

REF 3 3

f / 1 4A3 REF 3 5

p/3: get_structure f/1,A1 unify_variable X4 get_structure h/2,A2 unify_variable X5 unify_variable X6 get_value X5,A3 get_structure f/1,X6 unify_constant a proceed

STR 7 6

f / 1 7

REF 8 8X4

Page 54: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

54

?- p(Z,h(Z,W),f(W)).

p(f(X),h(Y,f(a)),Y).

REF 0 -> 6 0A1h / 2

A2

1

REF 0 2

REF 3 3

f / 1 4A3 REF 3 5

p/3: get_structure f/1,A1 unify_variable X4 get_structure h/2,A2 unify_variable X5 unify_variable X6 get_value X5,A3 get_structure f/1,X6 unify_constant a proceed

STR 7 6

f / 1 7

REF 8 8X4

Page 55: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

55

?- p(Z,h(Z,W),f(W)).

p(f(X),h(Y,f(a)),Y).

REF 0 -> 6 0A1h / 2

A2

1

REF 0 2

REF 3 3

f / 1 4A3 REF 3 5

p/3: get_structure f/1,A1 unify_variable X4 get_structure h/2,A2 unify_variable X5 unify_variable X6 get_value X5,A3 get_structure f/1,X6 unify_constant a proceed

STR 7 6

f / 1 7

REF 8 8X4

X5 REF 2

Page 56: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

56

?- p(Z,h(Z,W),f(W)).

p(f(X),h(Y,f(a)),Y).

REF 0 -> 6 0A1h / 2

A2

1

REF 0 2

REF 3 3

f / 1 4A3 REF 3 5

p/3: get_structure f/1,A1 unify_variable X4 get_structure h/2,A2 unify_variable X5 unify_variable X6 get_value X5,A3 get_structure f/1,X6 unify_constant a proceed

STR 7 6

f / 1 7

REF 8 8X4

X5 REF 2

X6 REF 3

Page 57: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

57

?- p(Z,h(Z,W),f(W)).

p(f(X),h(Y,f(a)),Y).

REF 0 -> 6 0A1h / 2

A2

1

REF 0 2

REF 3 3

f / 1 4A3 REF 3 5

p/3: get_structure f/1,A1 unify_variable X4 get_structure h/2,A2 unify_variable X5 unify_variable X6 get_value X5,A3 get_structure f/1,X6 unify_constant a proceed

STR 7

6

f / 1 7

REF 8 8X4

X5 REF 2

X6 REF 3

STR 7

Page 58: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

58

?- p(Z,h(Z,W),f(W)).

p(f(X),h(Y,f(a)),Y).

REF 0 -> 6 0A1h / 2

A2

1

REF 0 2

REF 3 3

f / 1 4A3 REF 3 5

p/3: get_structure f/1,A1 unify_variable X4 get_structure h/2,A2 unify_variable X5 unify_variable X6 get_value X5,A3 get_structure f/1,X6 unify_constant a proceed

STR 7

6

f / 1 7

REF 8 8X4

X5 REF 2

X6 REF 3

STR 7

unify X5,A3

Page 59: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

59

?- p(Z,h(Z,W),f(W)).

p(f(X),h(Y,f(a)),Y).

REF 0 -> 6 0A1h / 2

A2

1

REF 0 2

REF 3 3

f / 1 4A3 REF 3 5

p/3: get_structure f/1,A1 unify_variable X4 get_structure h/2,A2 unify_variable X5 unify_variable X6 get_value X5,A3 get_structure f/1,X6 unify_constant a proceed

STR 7

6

f / 1 7

REF 8 8X4

X5 REF 2

X6 REF 3

STR 7

unify X5,A3

Page 60: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

60

?- p(Z,h(Z,W),f(W)).

p(f(X),h(Y,f(a)),Y).

REF 0 -> 6 0A1h / 2

A2

1

REF 0 2

REF 3 3

f / 1 4A3 REF 3 5

p/3: get_structure f/1,A1 unify_variable X4 get_structure h/2,A2 unify_variable X5 unify_variable X6 get_value X5,A3 get_structure f/1,X6 unify_constant a proceed

STR 7

6

f / 1 7

REF 8 8X4

X5 REF 2

X6 REF 3

STR 7

unify X5,A3

Page 61: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

61

?- p(Z,h(Z,W),f(W)).

p(f(X),h(Y,f(a)),Y).

REF 0 -> 6 0A1h / 2

A2

1

REF 0 2

REF 3 3

f / 1 4A3 REF 3 5

p/3: get_structure f/1,A1 unify_variable X4 get_structure h/2,A2 unify_variable X5 unify_variable X6 get_value X5,A3 get_structure f/1,X6 unify_constant a proceed

STR 7

6

f / 1 7

REF 8 -> 3 8X4

X5 REF 2

X6 REF 3

STR 7

unify X5,A3

Page 62: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

62

?- p(Z,h(Z,W),f(W)).

p(f(X),h(Y,f(a)),Y).

REF 0 -> 6 0A1h / 2

A2

1

REF 0 2

REF 3 -> 9 3

f / 1 4A3 REF 3 5

p/3: get_structure f/1,A1 unify_variable X4 get_structure h/2,A2 unify_variable X5 unify_variable X6 get_value X5,A3 get_structure f/1,X6 unify_constant a proceed

STR 7

6

f / 1 7

REF 8 - > 3 8X4

X5 REF 2

X6 REF 3

STR 7

9

f / 1 10

STR 10

Page 63: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

63

?- p(Z,h(Z,W),f(W)).

p(f(X),h(Y,f(a)),Y).

REF 0 -> 6 0A1h / 2

A2

1

REF 0 2

REF 3 -> 9 3

f / 1 4A3 REF 3 5

p/3: get_structure f/1,A1 unify_variable X4 get_structure h/2,A2 unify_variable X5 unify_variable X6 get_value X5,A3 get_structure f/1,X6 unify_constant a proceed

STR 7

6

f / 1 7

REF 8 - > 3 8X4

X5 REF 2

X6 REF 3

STR 7

9

f / 1 10

STR 10

11 CON a

Page 64: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

64

?- p(Z,h(Z,W),f(W)).

p(f(X),h(Y,f(a)),Y).

REF 0 -> 6 0A1h / 2

A2

1

REF 0 2

REF 3 -> 9 3

f / 1 4A3 REF 3 5

p/3: get_structure f/1,A1 unify_variable X4 get_structure h/2,A2 unify_variable X5 unify_variable X6 get_value X5,A3 get_structure f/1,X6 unify_constant a proceed

STR 7

6

f / 1 7

REF 8 - > 3 8X4

X5 REF 2

X6 REF 3

STR 7

9

f / 1 10

STR 10

11 CON a

Retorna para local da chamadaInstanciações resultantes: Z = f(f(a)) e W = f(a)

Page 65: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

65

Código gerado para uma cláusulaCódigo gerado para uma cláusula

p(X,Y) :- q(X,Z), r(Z,Y).

p/2 : allocate 2 get_variable X3,A1 get_variable Y1,A2 put_value X3,A1 put_variable Y2,A2 call q/2 put_variable Y2,A1 put_value Y1,A2 call r/2 deallocate

Page 66: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

66

Código gerado para uma cláusulaCódigo gerado para uma cláusula

p(X,Y) :- q(X,Z), r(Z,Y).

p/2 : allocate 2 get_variable X3,A1 get_variable Y1,A2 put_value X3,A1 put_variable Y2,A2 call q/2 put_variable Y2,A1 put_value Y1,A2 call r/2 deallocate

Page 67: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

67

1 – Abordagem do Sebesta para Funcionais2 – Abordagem do Sebesta para Lógicas3 – Implementação de Lógicas4 – Implementação de Funcionais - Normalmente utilizam máquinas abstratas - Normalmente máquinas baseadas em redução de grafos - G-Machine

SumárioSumário

Page 68: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

68

1 – Abordagem do Sebesta para Funcionais2 – Abordagem do Sebesta para Lógicas3 – Implementação de Lógicas4 – Implementação de Funcionais - Normalmente utilizam máquinas abstratas - Normalmente máquinas baseadas em redução de grafos - G-Machine

SumárioSumário

Page 69: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

69

G-MachineG-Machine

Compilador

G-Machine(run-time)

Definições de funções (programa)

Programa em G-Code

Page 70: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

70

1 – Abordagem do Sebesta para Funcionais2 – Abordagem do Sebesta para Lógicas3 – Implementação de Lógicas4 – Implementação de Funcionais - Normalmente utilizam máquinas abstratas - Normalmente máquinas baseadas em redução de grafos - G-Machine - Linguagem Fun

SumárioSumário

Page 71: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

71

Linguagem FunLinguagem Fun

Compilador que gera G-Code

(escrito em Haskell)

G-Machine(implementada em

Java)

Programa em Fun

Classes Java (G-Code)

JVM

Page 72: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

72

1 – Abordagem do Sebesta para Funcionais2 – Abordagem do Sebesta para Lógicas3 – Implementação de Lógicas4 – Implementação de Funcionais5 – Proposta do Holo

SumárioSumário

Page 73: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

73

HoloplataformaHoloplataforma

HoloJava

Programa em Holo

Classes Java

JavaCByte Code

JVM

Hardware + SO

• Imperativo• Lógica• Funcional• Concorrente

Page 74: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br.

74

HoloplataformaHoloplataforma

HoloJava

Programa em Holo

Classes Java

JavaCByte Code

JVM

Hardware + SO

• Imperativo• Lógica• Funcional• Concorrente

HoloCompilerByte Code

HoloVM

Hardware + SO