Erick Dennel & Patrícia Felinto
Apresentação

• Introdução
  – Linguagens multiparadigma
• Oz
  –   O que é
  –   Como surgiu
  –   Características
  –   ...
Apresentação
 – Variáveis
 – Tipos primários
 – Igualdade estrutural
 – Números
 – Literais
 – Registros
Apresentação
  – Tuplas
  – Listas
  – Strings Virtuais
  – Operador de teste de igualdade
  – Matrizes
  – If Statement
•...
Introdução
• As linguagens de programação existem em
  grande número porém não são todas
  radicalmente diferentes entre s...
Introdução
• Todos os paradigmas de programação têm o
  mesmo poder computacional
• No entanto, as soluções para um proble...
Linguagens multiparadigma
  – Integração de vários paradigmas de programação em
    um simples modelo
  – Permite o entend...
Linguagens multiparadigma

 – Programação imperativa ou procedural - são uma
   seqüência de comandos para o computador ex...
Linguagem
 Multiparadigma
OZ
O que é
• Poderoso modelo multiparadigma
• Sua sintaxe e semântica não estão limitadas a
  nenhum paradigma básico
• É uti...
Como surgiu
• A pesquisa começou em 1990
• Gert Smolka fundou o Laboratório de
  Programação de Sistemas no Centro Germâni...
Como surgiu

• Sua primeira implementação foi lançada em
  Setembro de 1992
• Daí evoluiu rapidamente, até um ponto fixo
 ...
Características
• Suporta
  – Procedimentos de Primeira Classe
  – Conceito de thread
• Utiliza o conceito de Porta (proce...
Características
• Reúne características
  – Imperativas (o modelo de computação são
    threads executando instruções em s...
Características
• Valores e Estruturas de dados
  – Valores em OZ incluem integers, floats,
    strings,listas e registros...
A linguagem
• Não há outra linguagem concorrente que combine um rico
  sistema de objetos com aspectos avançados para
  pr...
O modelo de programação Oz (OPM)
• É um modelo de programação concorrente
  resumindo programação funcional e
  programaçã...
Espaço computacional
• Hospeda um número de tarefas conectadas a
  um depósito compartilhado
  – A computação avança pela ...
Constraint store

• Lugar onde são armazenadas as informações
  sobre os valores que estão participando de
  um cálculo.
•...
Variáveis
• Variáveis são "single-assignment“(atribuição
  única)
• Estados:
  – Não definida, aguardando uma atribuição
 ...
Variável
• Declaração de variáveis:
  – declaração de uma variável local:
     • local X Y Z in S end
  – declaração de um...
Tipos Primários em Oz
Igualdade Estrutural

• Os tipos Número(number), Registro(record) e
  seus subtipos têm valores iguais somente se
  suas e...
Números
• Declaração de três variáveis, um inteiro, um
  float e um character:
     local I F C in
       I=5
       F = 5...
Literais
• Não possuem estrutura interna.
• Literais são dividos em atomos e nomes.
  – Atomos: é uma entidade simbólica i...
Registros
• São estruturas de entidades compostas. Um
  registro tem um label e um número fixo de
  componentes ou argumen...
Tuplas

• Muito parecidos com registros, mas há
  omissão das características.
• Este recurso vêm da programação lógica e ...
Tuplas
• Exemplo:
   declare T I Y LT RT W in
   T = tree(key:I value:Y left:LT right:RT)
   I = seif
   Y = 43
   LT = ni...
Listas
• Há várias formas de se representar listas:
  – 1|2|3|X -> lista com cauda
  – [1 2 3] -> lista fechada
  – "OZ 3....
Strings virtuais
• Representa uma string através de uma
  concatenação virtual

           123#"-"#23#" is "#100
   repres...
Operador de teste de
igualdade
• Procedimento básico {Value . '==' X Y R}
  – tenta testar se X e Y são iguais ou não, e r...
Is Statement
• if B then S1 else S2 end
   – B deve ser um valor booleano
• Fornece um número de procedimentos utilizados ...
Matrizes
• {NewArray + L + H + I ?A}
  – Cria uma matriz A
  – L é o menor índice vinculado
  – H é o maior índice vincula...
Matrizes
• {Array . low + A ?L}
   – retorna o menor índice
• {Array . high + A ?L}
   – retorna o maior índice
• R := A ....
Ambiente de
desenvolvimento
• Nos últimos anos, vários trabalhos de
  pesquisa vêm sendo desenvolvidos para
  criação de u...
Conclusão
• Oz não foi construído a partir de nenhum
  paradigma básico
• Os criadores de Oz propõem um novo
  modelo base...
Conclusão
• O modelo computacional que suporta a execução
  de diversas tarefas compartilhando um
  armazenamento (espaço ...
Referências
• Documentação da linguagem
  – http://www.mozart-oz.org/documentation/tutorial/
  – http://www.mozart-oz.org/...
Fim
Oz
Upcoming SlideShare
Loading in …5
×

Oz

1,583 views
1,490 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,583
On SlideShare
0
From Embeds
0
Number of Embeds
101
Actions
Shares
0
Downloads
24
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Oz

  1. 1. Erick Dennel & Patrícia Felinto
  2. 2. Apresentação • Introdução – Linguagens multiparadigma • Oz – O que é – Como surgiu – Características – A linguagem – O modelo de programação Oz (OPM) • Espaço computacional • Constraint Store
  3. 3. Apresentação – Variáveis – Tipos primários – Igualdade estrutural – Números – Literais – Registros
  4. 4. Apresentação – Tuplas – Listas – Strings Virtuais – Operador de teste de igualdade – Matrizes – If Statement • Conclusão
  5. 5. Introdução • As linguagens de programação existem em grande número porém não são todas radicalmente diferentes entre si • As linguagens similares àquela usual do programador geralmente o são porque pertencem ao mesmo paradigma de programação • Mas por que existem diferentes paradigmas de programação?
  6. 6. Introdução • Todos os paradigmas de programação têm o mesmo poder computacional • No entanto, as soluções para um problema específico podem ter atributos muito diferentes quando implementadas em linguagens de paradigmas distintos • Um dos ramos da pesquisa sobre linguagens de programação lida com as chamadas linguagens multiparadigma
  7. 7. Linguagens multiparadigma – Integração de vários paradigmas de programação em um simples modelo – Permite o entendimento de várias formas de computação como partes de um fenômeno simples – Engloba a codificação de algoritmos em um estilo "natural“ – O objetivo é permitir ao programador expressar-se da melhor maneira possível ao resolver um problema específico sem ter de trocar de linguagem de programação
  8. 8. Linguagens multiparadigma – Programação imperativa ou procedural - são uma seqüência de comandos para o computador executar – Programação funcional - enfatiza a aplicação de funções – Programação lógica - faz uso da lógica matemática para realizar computações por dedução – Programação orientada a objeto - organiza as atividades computacionais em entidades chamadas objetos – Programação com restrições - se refere ao uso de restrições na construção de relações entre variáveis
  9. 9. Linguagem Multiparadigma OZ
  10. 10. O que é • Poderoso modelo multiparadigma • Sua sintaxe e semântica não estão limitadas a nenhum paradigma básico • É utilizado na solução de problemas clássicos do universo do desenvolvimento em lógica, funcional e orientado a objetos • Apesar do seu enfoque multiparadigma permite a utilização de conceitos de paradigmas básicos
  11. 11. Como surgiu • A pesquisa começou em 1990 • Gert Smolka fundou o Laboratório de Programação de Sistemas no Centro Germânico de Pesquisa em Inteligência Artificial (DFKI - German Research Center for Artificial Intelligence) na Alemanha • Este modelo possui como base a linguagem AKL – Criada no Instituto Sueco de Ciência da Computação – Primeira linguagem concorrente restrita com busca encapsulada
  12. 12. Como surgiu • Sua primeira implementação foi lançada em Setembro de 1992 • Daí evoluiu rapidamente, até um ponto fixo que foi alcançado em Janeiro de 1995 • De lá pra cá seu desenvolvimento está parado, mas está estável • Seus criadores afirmam que pode substituir linguagens de alto nível seqüenciais, tais como Lisp, Prolog e Smalltalk
  13. 13. Características • Suporta – Procedimentos de Primeira Classe – Conceito de thread • Utiliza o conceito de Porta (procedimento ligado a uma stream) para comunicação • Implementa Busca Encapsulada • Controle em Tempo Real
  14. 14. Características • Reúne características – Imperativas (o modelo de computação são threads executando instruções em seqüência, e as instruções podem ter efeitos colaterais), – Funcionais (funções) e – Orientadas a objeto (um sistema de classes com herança múltipla) • Dinamicamente tipada • Interpretada por uma máquina virtual
  15. 15. Características • Valores e Estruturas de dados – Valores em OZ incluem integers, floats, strings,listas e registros – Vetores e dicionários são tratados como objetos – Estruturas de dados compostas combinam-se com variáveis lógicas e valores do mais alto nível – Estruturas de dados cíclicas e correntes infinitas são facilmente expressadas
  16. 16. A linguagem • Não há outra linguagem concorrente que combine um rico sistema de objetos com aspectos avançados para processamento simbólico e solução de problemas • As primeiras aplicações do OZ incluem: – Simulações – Sistemas multi-agentes – Processamento de linguagem natural – Realidade virtual – Interfaces de usuário gráficas – Programações – Utilização de tabelas e configurações • A programação multiparadigma empregada utiliza programação concorrente restrita (ccp) como fundamento
  17. 17. O modelo de programação Oz (OPM) • É um modelo de programação concorrente resumindo programação funcional e programação orientada a objetos como partes de um modelo geral • A computação no OPM é feita em um chamado espaço computacional
  18. 18. Espaço computacional • Hospeda um número de tarefas conectadas a um depósito compartilhado – A computação avança pela redução das tarefas, as quais podem manipular o depósito e criar novas tarefas – Quando uma tarefa é reduzida ela desaparece. – Enquanto a computação avança, o depósito acumula relações entre as variáveis em um depósito chamado de constraint store
  19. 19. Constraint store • Lugar onde são armazenadas as informações sobre os valores que estão participando de um cálculo. • Um exemplo de como o OZ pode guardar informações parciais de variáveis: X = Y ^Y = Z|U ^Z = 3 • As tarefas podem sincronizar-se no depósito de maneira que elas sejam reduzidas somente se o depósito satisfizer certas condições
  20. 20. Variáveis • Variáveis são "single-assignment“(atribuição única) • Estados: – Não definida, aguardando uma atribuição • Thread é bloqueada, se for preciso utilizar o valor dessa variável – Definida, não pode ser mais mudada
  21. 21. Variável • Declaração de variáveis: – declaração de uma variável local: • local X Y Z in S end – declaração de uma variável global: • declare X Y Z in S • Em OZ as variáveis são tipadas dinamicamente.
  22. 22. Tipos Primários em Oz
  23. 23. Igualdade Estrutural • Os tipos Número(number), Registro(record) e seus subtipos têm valores iguais somente se suas estruturas forem similares - um for subtipo do outro. • Ou seja, para dois números serem iguais eles têm que ser do mesmo tipo, ou um ser subtipo do outro
  24. 24. Números • Declaração de três variáveis, um inteiro, um float e um character: local I F C in I=5 F = 5.5 C = &t end • C=&t, caracteres possuem uma representação de inteiros, neste caso, o inteiro 48
  25. 25. Literais • Não possuem estrutura interna. • Literais são dividos em atomos e nomes. – Atomos: é uma entidade simbólica identificada por uma sequencia de caracteres em lower case • a foo '=' ':=' 'OZ 3.0‘ 'Hello World‘ – Nomes: o único meio de se criar nomes é chamando o procedimento {NewName X} local X Y B in X = foo {NewName Y} B = true end
  26. 26. Registros • São estruturas de entidades compostas. Um registro tem um label e um número fixo de componentes ou argumentos. tree(key: I value: Y left: LT right: RT) Cada argumento consiste em um par "característica:campo"
  27. 27. Tuplas • Muito parecidos com registros, mas há omissão das características. • Este recurso vêm da programação lógica e é conhecido como termo composto. Exemplo: tree(I Y LT RT), é apenas uma notação sintática do registro: tree(1:I 2:Y 3:LT 4:RT)
  28. 28. Tuplas • Exemplo: declare T I Y LT RT W in T = tree(key:I value:Y left:LT right:RT) I = seif Y = 43 LT = nil RT = nil W = tree(I Y LT RT) {Browse [T W]} • Neste exemplo, são criados um registro e uma tupla, depois os dois são imprimidos: [tree(key:seif value:43 left:nil right:nil) tree(seif 43 nil nil)]
  29. 29. Listas • Há várias formas de se representar listas: – 1|2|3|X -> lista com cauda – [1 2 3] -> lista fechada – "OZ 3.0" -> lista: [79 90 32 51 46 48] ou [&O &Z & &3 &. &0]
  30. 30. Strings virtuais • Representa uma string através de uma concatenação virtual 123#"-"#23#" is "#100 representação da string: "123-23 is 100"
  31. 31. Operador de teste de igualdade • Procedimento básico {Value . '==' X Y R} – tenta testar se X e Y são iguais ou não, e retorna o resultado em R • Normalmente usado como uma expressão funcional, ao invés de uma declaração • Também pode ser escrito R = X == Y
  32. 32. Is Statement • if B then S1 else S2 end – B deve ser um valor booleano • Fornece um número de procedimentos utilizados para comparação – incluem == que vimos anteriormente, assim como = =< < >= > local X Y Z in X = 5 Y = 10 if X >= Y then Z = X else Z = Y end end • Neste exemplo Z está vinculado ao máximo de X e Y ou seja, Y
  33. 33. Matrizes • {NewArray + L + H + I ?A} – Cria uma matriz A – L é o menor índice vinculado – H é o maior índice vinculado – I é o valor inicial dos elementos da matriz
  34. 34. Matrizes • {Array . low + A ?L} – retorna o menor índice • {Array . high + A ?L} – retorna o maior índice • R := A . I – retorna A[I] em R • A . I := X – atribui X à entrada A[I]
  35. 35. Ambiente de desenvolvimento • Nos últimos anos, vários trabalhos de pesquisa vêm sendo desenvolvidos para criação de uma plataforma distribuída para o modelo Oz • Esta plataforma é denominada Mozart
  36. 36. Conclusão • Oz não foi construído a partir de nenhum paradigma básico • Os criadores de Oz propõem um novo modelo baseado nos conceitos dos paradigmas existentes • O principal conceito para compreensão de Oz é o espaço computacional onde são executados os programas • Oz é um modelo de programação concorrente
  37. 37. Conclusão • O modelo computacional que suporta a execução de diversas tarefas compartilhando um armazenamento (espaço computacional) é inerentemente concorrente • Oz possui um ambiente de desenvolvimento composto de um compilador e um depurador • No entanto, o modelo Oz não propõe uma metodologia completa de desenvolvimento • Não é apresentada uma proposta para modelagem de sistemas complexos através de instrumentos gráficos
  38. 38. Referências • Documentação da linguagem – http://www.mozart-oz.org/documentation/tutorial/ – http://www.mozart-oz.org/documentation/notation/ node2.html#chapter.lexical
  39. 39. Fim

×