Erick Dennel & Patrícia Felinto
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
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
• Conclusão
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?
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
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
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
Linguagem
 Multiparadigma
OZ
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
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
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
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
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
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
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
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
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
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
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
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.
Tipos Primários em Oz
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
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
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
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"
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)
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)]
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]
Strings virtuais
• Representa uma string através de uma
  concatenação virtual

           123#"-"#23#" is "#100
   representação da string: "123-23 is 100"
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
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
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
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]
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
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
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
Referências
• Documentação da linguagem
  – http://www.mozart-oz.org/documentation/tutorial/
  – http://www.mozart-oz.org/documentation/notation/
     node2.html#chapter.lexical
Fim

Oz

  • 1.
    Erick Dennel &Patrícia Felinto
  • 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.
    Apresentação – Variáveis – Tipos primários – Igualdade estrutural – Números – Literais – Registros
  • 4.
    Apresentação –Tuplas – Listas – Strings Virtuais – Operador de teste de igualdade – Matrizes – If Statement • Conclusão
  • 6.
    Introdução • As linguagensde 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?
  • 7.
    Introdução • Todos osparadigmas 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
  • 8.
    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
  • 9.
    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
  • 10.
  • 11.
    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
  • 12.
    Como surgiu • Apesquisa 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
  • 13.
    Como surgiu • Suaprimeira 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
  • 14.
    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
  • 15.
    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
  • 16.
    Características • Valores eEstruturas 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
  • 17.
    A linguagem • Nãohá 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
  • 18.
    O modelo deprogramaçã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
  • 19.
    Espaço computacional • Hospedaum 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
  • 20.
    Constraint store • Lugaronde 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
  • 21.
    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
  • 22.
    Variável • Declaração devariá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.
  • 23.
  • 24.
    Igualdade Estrutural • Ostipos 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
  • 25.
    Números • Declaração detrê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
  • 26.
    Literais • Não possuemestrutura 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
  • 27.
    Registros • São estruturasde 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"
  • 28.
    Tuplas • Muito parecidoscom 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)
  • 29.
    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)]
  • 30.
    Listas • Há váriasformas 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]
  • 31.
    Strings virtuais • Representauma string através de uma concatenação virtual 123#"-"#23#" is "#100 representação da string: "123-23 is 100"
  • 32.
    Operador de testede 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
  • 33.
    Is Statement • ifB 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
  • 34.
    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
  • 35.
    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]
  • 36.
    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
  • 37.
    Conclusão • Oz nãofoi 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
  • 38.
    Conclusão • O modelocomputacional 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
  • 39.
    Referências • Documentação dalinguagem – http://www.mozart-oz.org/documentation/tutorial/ – http://www.mozart-oz.org/documentation/notation/ node2.html#chapter.lexical
  • 40.