Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouMarina Barbosa Alterado mais de 10 anos atrás
1
1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos www.inf.unisinos.br/~barbosa barbosa@exatas.unisinos.br
2
2 1 – Abordagem do Sebesta para Funcionais Sumário
3
3 2 – Abordagem do Sebesta para Lógicas Sumário
4
4 1 – Abordagem do Sebesta para Funcionais 2 – Abordagem do Sebesta para Lógicas 3 – Implementação de Lógicas Sumário
5
5 1 – Abordagem do Sebesta para Funcionais 2 – Abordagem do Sebesta para Lógicas 3 – Implementação de Lógicas 4 – Implementação de Funcionais Sumário
6
6 1 – Abordagem do Sebesta para Funcionais 2 – Abordagem do Sebesta para Lógicas 3 – Implementação de Lógicas 4 – Implementação de Funcionais 5 – Proposta do Holo Sumário
7
7 1 – Abordagem do Sebesta para Funcionais 2 – Abordagem do Sebesta para Lógicas 3 – Implementação de Lógicas 4 – Implementação de Funcionais 5 – Proposta do Holo Sumário
8
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ário
9
9 1 – Abordagem do Sebesta para Funcionais 2 – 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ário
10
10 1 – Abordagem do Sebesta para Funcionais 2 – Abordagem do Sebesta para Lógicas 3 – Implementação de Lógicas Sumário
11
11 1 – Abordagem do Sebesta para Funcionais 2 – Abordagem do Sebesta para Lógicas 3 – Implementação de Lógicas Sumário
12
12 Implementação Warrens Abstract Machine (WAM) David Warren, 1983
13
13 Implementação Warrens Abstract Machine (WAM) David Warren, 1983 Máquina Abstrata: - Representação de dados - Instruções de máquina
14
14 Implementação Warrens Abstract Machine (WAM) David Warren, 1983 Máquina Abstrata: - Representação de dados - Instruções de máquina Arquitetura da WAM
15
15 Implementação Warrens Abstract Machine (WAM) David Warren, 1983 Máquina Abstrata: - Representação de dados - Instruções de máquina Arquitetura da WAM
16
16 Arquitetura da WAM LOW HIGH
17
17 Arquitetura da WAM Code Area LOW HIGH Opcodes
18
18 Arquitetura da WAM Code Area HEAP LOW HIGH Células contendo variáveis, estruturas e constantes Opcodes
19
19 Arquitetura da WAM Code Area HEAP STACK LOW HIGH Pontos de Escolha e Ambientes Opcodes Células contendo variáveis, estruturas e constantes
20
20 Arquitetura da WAM Code Area HEAP STACK TRAIL LOW HIGH Variáveis que devem ser desligadas no backtracking Pontos de Escolha e Ambientes Opcodes Células contendo variáveis, estruturas e constantes
21
21 Arquitetura da WAM Code Area HEAP STACK TRAIL PDL LOW HIGH Push Down List Pilha usada pelo algoritmo de unificação Variáveis que devem ser desligadas no backtracking Pontos de Escolha e Ambientes Opcodes Células contendo variáveis, estruturas e constantes
22
22 Arquitetura da WAM Code Area HEAP STACK TRAIL PDL LOW HIGH REGISTRADORESREGISTRADORES
23
23 Arquitetura da WAM Code Area HEAP STACK TRAIL PDL LOW HIGH REGISTRADORESREGISTRADORES Registradores de Argumentos A1 A2 A3... An
24
24 Arquitetura da WAM Code Area HEAP STACK TRAIL PDL LOW HIGH Registradores de Argumentos A1 A2 A3... An REGISTRADORESREGISTRADORES Registradores Temporários X1 X2 X3... Xn
25
25 Implementação Warrens 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
26
26 Implementação Warrens 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
27
27 Arquitetura da WAM Code Area HEAP STACK TRAIL PDL LOW HIGH
28
28 Arquitetura da WAM Code Area HEAP STACK TRAIL PDL LOW HIGH p(Z,h(Z,W),f(W))
29
29 Arquitetura da WAM Code Area HEAP STACK TRAIL PDL LOW HIGH p(Z,h(Z,W),f(W)) STR1 h / 2 REF2 3 0 1 2 3
30
30 Arquitetura da WAM Code Area HEAP STACK TRAIL PDL LOW HIGH p(Z,h(Z,W),f(W)) STR1 h / 2 REF2 3STR5 f / 1 REF3 0 1 2 3 4 5 6
31
31 Arquitetura da WAM Code Area HEAP STACK TRAIL PDL LOW HIGH p(Z,h(Z,W),f(W)) STR1 h / 2 REF2 3STR5 f / 1 REF3STR8 p / 3 REF2STR1 5 0 1 2 3 4 5 6 7 8 9 10 11
32
32 Arquitetura da WAM Code Area HEAP STACK TRAIL PDL LOW HIGH ?- p(Z,h(Z,W),f(W)).
33
33 Arquitetura da WAM Code Area HEAP STACK TRAIL PDL LOW HIGH 1.put_variable Xi,Ai 2.put_structure f/n,Ai 3.set_variable Xi 4.set_value Xi 5.call f/n ?- p(Z,h(Z,W),f(W)).
34
34 Arquitetura da WAM Code Area HEAP STACK TRAIL PDL LOW HIGH put_variable X4,A1 put_structure h/2,A2 set_value X4 set_variable X5 put_structure f/1,A3 set_value X5 call p/3 ?- p(Z,h(Z,W),f(W)). 1.put_variable Xi,Ai 2.put_structure f/n,Ai 3.set_variable Xi 4.set_value Xi 5.call f/n
35
35 ?- p(Z,h(Z,W),f(W)). put_variable X4,A1 put_structure h/2,A2 set_value X4 set_variable X5 put_structure f/1,A3 set_value X5 call p/3
36
36 REF0 0 ?- p(Z,h(Z,W),f(W)). put_variable X4,A1 put_structure h/2,A2 set_value X4 set_variable X5 put_structure f/1,A3 set_value X5 call p/3 A1 X4
37
37 ?- p(Z,h(Z,W),f(W)). REF0 0 ?- p(Z,h(Z,W),f(W)). put_variable X4,A1 put_structure h/2,A2 set_value X4 set_variable X5 put_structure f/1,A3 set_value X5 call p/3 A1 X4 h / 2 A2 1
38
38 ?- p(Z,h(Z,W),f(W)). REF0 0 ?- p(Z,h(Z,W),f(W)). put_variable X4,A1 put_structure h/2,A2 set_value X4 set_variable X5 put_structure f/1,A3 set_value X5 call p/3 A1 X4 h / 2 A2 1 REF0 3
39
39 ?- p(Z,h(Z,W),f(W)). REF0 0 ?- p(Z,h(Z,W),f(W)). put_variable X4,A1 put_structure h/2,A2 set_value X4 set_variable X5 put_structure f/1,A3 set_value X5 call p/3 A1 X4 h / 2 A2 1 REF0 2 3 3 X5
40
40 ?- p(Z,h(Z,W),f(W)). REF0 0 ?- p(Z,h(Z,W),f(W)). put_variable X4,A1 put_structure h/2,A2 set_value X4 set_variable X5 put_structure f/1,A3 set_value X5 call p/3 A1 X4 h / 2 A2 1 REF0 2 3 3 X5 f / 1 4 A3
41
41 ?- p(Z,h(Z,W),f(W)). REF0 0 ?- p(Z,h(Z,W),f(W)). put_variable X4,A1 put_structure h/2,A2 set_value X4 set_variable X5 put_structure f/1,A3 set_value X5 call p/3 A1 X4 h / 2 A2 1 REF0 2 3 3 X5 f / 1 4 A3 REF3 5
42
42 ?- p(Z,h(Z,W),f(W)). REF0 0 ?- p(Z,h(Z,W),f(W)). put_variable X4,A1 put_structure h/2,A2 set_value X4 set_variable X5 put_structure f/1,A3 set_value X5 call p/3 A1 X4 h / 2 A2 1 REF0 2 3 3 X5 f / 1 4 A3 REF3 5
43
43 ?- p(Z,h(Z,W),f(W)). REF0 0 ?- p(Z,h(Z,W),f(W)). put_variable X4,A1 put_structure h/2,A2 set_value X4 set_variable X5 put_structure f/1,A3 set_value X5 call p/3 A1 X4 h / 2 A2 1 REF0 2 3 3 X5 f / 1 4 A3 REF3 5
44
44 ?- p(Z,h(Z,W),f(W)). REF0 0 ?- p(Z,h(Z,W),f(W) put_variable X4,A1 put_structure h/2,A2 set_value X4 set_variable X5 put_structure f/1,A3 set_value X5 call p/3 A1 X4 h / 2 A2 1 REF0 2 3 3 X5 f / 1 4 A3 REF3 5
45
45 ?- p(Z,h(Z,W),f(W)). REF0 0 ?- p(Z,h(Z,W),f(W)). put_variable X4,A1 put_structure h/2,A2 set_value X4 set_variable X5 put_structure f/1,A3 set_value X5 call p/3 A1 X4 h / 2 A2 1 REF0 2 3 3 X5 f / 1 4 A3 REF3 5 Procedimento p/3 na área de código
46
46 Arquitetura da WAM Code Area HEAP STACK TRAIL PDL LOW HIGH p(f(X),h(Y,f(a)),Y).
47
47 Arquitetura da WAM Code Area HEAP STACK TRAIL PDL LOW HIGH 1.get_structure f/n,Xi 2.unify_variable Xi 3.unify_value Xi 4.get_value Xn,Na 5.unify_constant C 6.proceed p(f(X),h(Y,f(a)),Y).
48
48 Arquitetura da WAM Code Area HEAP STACK TRAIL PDL LOW HIGH p(f(X),h(Y,f(a)),Y). 1.get_structure f/n,Xi 2.unify_variable Xi 3.unify_value Xi 4.get_value Xn,Na 5.unify_constant C 6.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
49
49 ?- p(Z,h(Z,W),f(W)). p(f(X),h(Y,f(a)),Y).
50
50 ?- p(Z,h(Z,W),f(W)). p(f(X),h(Y,f(a)),Y). REF0 0 A1 h / 2 A2 1 REF0 2 3 3 f / 1 4 A3 REF3 5
51
51 ?- p(Z,h(Z,W),f(W)). p(f(X),h(Y,f(a)),Y). REF0 0 A1 h / 2 A2 1 REF0 2 3 3 f / 1 4 A3 REF3 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
52
52 ?- p(Z,h(Z,W),f(W)). p(f(X),h(Y,f(a)),Y). REF0 -> 6 0 A1 h / 2 A2 1 REF0 2 3 3 f / 1 4 A3 REF3 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 STR7 6 f / 1 7
53
53 ?- p(Z,h(Z,W),f(W)). p(f(X),h(Y,f(a)),Y). REF0 -> 6 0 A1 h / 2 A2 1 REF0 2 3 3 f / 1 4 A3 REF3 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 STR7 6 f / 1 7 REF8 8X4
54
54 ?- p(Z,h(Z,W),f(W)). p(f(X),h(Y,f(a)),Y). REF0 -> 6 0 A1 h / 2 A2 1 REF0 2 3 3 f / 1 4 A3 REF3 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 STR7 6 f / 1 7 REF8 8X4
55
55 ?- p(Z,h(Z,W),f(W)). p(f(X),h(Y,f(a)),Y). REF0 -> 6 0 A1 h / 2 A2 1 REF0 2 3 3 f / 1 4 A3 REF3 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 STR7 6 f / 1 7 REF8 8X4 X5 REF2
56
56 ?- p(Z,h(Z,W),f(W)). p(f(X),h(Y,f(a)),Y). REF0 -> 6 0 A1 h / 2 A2 1 REF0 2 3 3 f / 1 4 A3 REF3 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 STR7 6 f / 1 7 REF8 8X4 X5 REF2 X6 REF3
57
57 ?- p(Z,h(Z,W),f(W)). p(f(X),h(Y,f(a)),Y). REF0 -> 6 0 A1 h / 2 A2 1 REF0 2 3 3 f / 1 4 A3 REF3 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 STR7 6 f / 1 7 REF8 8X4 X5 REF2 X6 REF3STR7
58
58 ?- p(Z,h(Z,W),f(W)). p(f(X),h(Y,f(a)),Y). REF0 -> 6 0 A1 h / 2 A2 1 REF0 2 3 3 f / 1 4 A3 REF3 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 STR7 6 f / 1 7 REF8 8X4 X5 REF2 X6 REF3STR7 unify X5,A3
59
59 ?- p(Z,h(Z,W),f(W)). p(f(X),h(Y,f(a)),Y). REF0 -> 6 0 A1 h / 2 A2 1 REF0 2 3 3 f / 1 4 A3 REF3 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 STR7 6 f / 1 7 REF8 8X4 X5 REF2 X6 REF3STR7 unify X5,A3
60
60 ?- p(Z,h(Z,W),f(W)). p(f(X),h(Y,f(a)),Y). REF0 -> 6 0 A1 h / 2 A2 1 REF0 2 3 3 f / 1 4 A3 REF3 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 STR7 6 f / 1 7 REF8 8X4 X5 REF2 X6 REF3STR7 unify X5,A3
61
61 ?- p(Z,h(Z,W),f(W)). p(f(X),h(Y,f(a)),Y). REF0 -> 6 0 A1 h / 2 A2 1 REF0 2 3 3 f / 1 4 A3 REF3 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 STR7 6 f / 1 7 REF8 -> 3 8X4 X5 REF2 X6 REF3STR7 unify X5,A3
62
62 ?- p(Z,h(Z,W),f(W)). p(f(X),h(Y,f(a)),Y). REF0 -> 6 0 A1 h / 2 A2 1 REF0 2 3 -> 9 3 f / 1 4 A3 REF3 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 STR7 6 f / 1 7 REF8 - > 3 8X4 X5 REF2 X6 REF3STR7 9 f / 1 10 STR10
63
63 ?- p(Z,h(Z,W),f(W)). p(f(X),h(Y,f(a)),Y). REF0 -> 6 0 A1 h / 2 A2 1 REF0 2 3 -> 9 3 f / 1 4 A3 REF3 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 STR7 6 f / 1 7 REF8 - > 3 8X4 X5 REF2 X6 REF3STR7 9 f / 1 10 STR10 11 CONa
64
64 ?- p(Z,h(Z,W),f(W)). p(f(X),h(Y,f(a)),Y). REF0 -> 6 0 A1 h / 2 A2 1 REF0 2 3 -> 9 3 f / 1 4 A3 REF3 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 STR7 6 f / 1 7 REF8 - > 3 8X4 X5 REF2 X6 REF3STR7 9 f / 1 10 STR10 11 CONa Retorna para local da chamada Instanciações resultantes: Z = f(f(a)) e W = f(a)
65
65 Có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
66
66 Có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
67
67 1 – Abordagem do Sebesta para Funcionais 2 – Abordagem do Sebesta para Lógicas 3 – Implementação de Lógicas 4 – Implementação de Funcionais - Normalmente utilizam máquinas abstratas - Normalmente máquinas baseadas em redução de grafos - G-Machine Sumário
68
68 1 – Abordagem do Sebesta para Funcionais 2 – Abordagem do Sebesta para Lógicas 3 – Implementação de Lógicas 4 – Implementação de Funcionais - Normalmente utilizam máquinas abstratas - Normalmente máquinas baseadas em redução de grafos - G-Machine Sumário
69
69 G-Machine Compilador G-Machine (run-time) Definições de funções (programa) Programa em G-Code
70
70 1 – Abordagem do Sebesta para Funcionais 2 – Abordagem do Sebesta para Lógicas 3 – Implementação de Lógicas 4 – Implementação de Funcionais - Normalmente utilizam máquinas abstratas - Normalmente máquinas baseadas em redução de grafos - G-Machine - Linguagem Fun Sumário
71
71 Linguagem Fun Compilador que gera G-Code (escrito em Haskell) G-Machine (implementada em Java) Programa em Fun Classes Java (G-Code) JVM
72
72 1 – Abordagem do Sebesta para Funcionais 2 – Abordagem do Sebesta para Lógicas 3 – Implementação de Lógicas 4 – Implementação de Funcionais 5 – Proposta do Holo Sumário
73
73 Holoplataforma HoloJava Programa em Holo Classes Java JavaC Byte Code JVM Hardware + SO Imperativo Lógica Funcional Concorrente
74
74 Holoplataforma HoloJava Programa em Holo Classes Java JavaC Byte Code JVM Hardware + SO Imperativo Lógica Funcional Concorrente HoloCompiler Byte Code HoloVM Hardware + SO
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.