A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos"— Transcrição da apresentação:

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


Carregar ppt "1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos"

Apresentações semelhantes


Anúncios Google