Aline Timteo Carlos Rodrigues Flvia Falco Tiago Rolim

  • Slides: 15
Download presentation
Aline Timóteo Carlos Rodrigues Flávia Falcão Tiago Rolim LF 1 Concorrente Paradigmas de Linguagens

Aline Timóteo Carlos Rodrigues Flávia Falcão Tiago Rolim LF 1 Concorrente Paradigmas de Linguagens de Programação 01 de agosto de 2006

Sumário • LF 1 Concorrente – Características – Sintaxe • Interpretador de LF 1

Sumário • LF 1 Concorrente – Características – Sintaxe • Interpretador de LF 1 Concorrente • Exemplos • Conclusões

LF 1 Concorrente • Proposta : Inserir o conceito de concorrência em a linguagem

LF 1 Concorrente • Proposta : Inserir o conceito de concorrência em a linguagem funcional LF 1 • Baseando no modo como Erlang trata concorrência : – Não há compartilhamento de variáveis a comunicação se dar por troca de mensagens – Comunicação assíncrona

LF 1 Concorrente: BNF – Programa : : = Processo – Processo : :

LF 1 Concorrente: BNF – Programa : : = Processo – Processo : : = Expressao – Expressao : : = Valor | Exp. Unaria | Exp. Binaria | Exp. Declaracao | Id | Aplicacao | If. Then. Else | Envia. Mensagem | Recebe. Mensagem | Self – Declaracao. Funcional : : = Dec. Variavel | Dec. Funcao | Dec. Processo | Declaracao. Funcional ", " Declaracao. Funcional

LF 1 Concorrente: BNF – Lista. Clausulas : : = “{” List. Id “}”

LF 1 Concorrente: BNF – Lista. Clausulas : : = “{” List. Id “}” “->” List. Exp | Lista. Clausulas “; ” Lista. Clausulas – – – Dec. Processo : : = “proc” Id “(” Id List. Exp “)” Envia. Mensagem : : = “send” Id “{” List. Exp “}” Recebe. Mensagem : : = “receive” Lista. Clausulas “end” Self : : = “self ” “(” “)” Lista. Clausulas : : = “{“ List. Id “}” “->” List. Exp | Lista. Clausulas “; ” Lista. Clausulas

Solução • O programa principal contém um processo. – Processo main public class Processo

Solução • O programa principal contém um processo. – Processo main public class Processo extends Thread { – Outros processos podem ser criados concorrentemente ao main

Receive • O processo em execução que contem um receive fica a espera de

Receive • O processo em execução que contem um receive fica a espera de mensagens em sua mailbox , e a execução de suas expressoes é feita após casamento padrão das mensagens. receive {t} -> send main {t+1}; {t k} -> true end

Send • A expressão send quando avaliada envia uma lista de expressões para um

Send • A expressão send quando avaliada envia uma lista de expressões para um processo indicado que esteja sendo executado. send p {f(2), f(2)}

Self() • Cada processo tem seu identificador , o que permite a utilização do

Self() • Cada processo tem seu identificador , o que permite a utilização do self() public Processo(Id pid, Expressao exp, Contexto. Execucao. Funcional ambiente) • Permite que processos recebam avaliacoes de outrs receive {w p } -> send p{ self() , w+1} end

Interpretador de LF 1 Concorrente

Interpretador de LF 1 Concorrente

 • Cada processo tem seu identificador , o que permite a utilização do

• Cada processo tem seu identificador , o que permite a utilização do self()

Exemplos let fun avalia y = if y == 8 then send p 1

Exemplos let fun avalia y = if y == 8 then send p 1 {y} else send p 1 {y}, fun increment x = receive {x} -> send p 2 {x+1}; {y k} -> 10 end in let proc p 1 (increment 0), proc p 2 (avalia 0) in send p 1 {1}

Conclusões • Dificuldades Encontradas – Compreensão do framework da disciplina – Declarações aninhadas em

Conclusões • Dificuldades Encontradas – Compreensão do framework da disciplina – Declarações aninhadas em LF 1 implicariam em compartilhamento de memória quando os processos fossem criados • A solução foi replicar o ambiente execução para cada processo, para repetir – Implementação do self()

Referências • Site da disciplina: http: //www. cin. ufpe. br/~in 1007/ • Programming Language

Referências • Site da disciplina: http: //www. cin. ufpe. br/~in 1007/ • Programming Language Design Concepts, David Watt and W. Findlay, John Wiley & Sons • Site oficial de Erlang: http: //www. erlang. org

Aline Timóteo Carlos Rodrigues Flávia Falcão Tiago Rolim LF 1 Concorrente Paradigmas de Linguagens

Aline Timóteo Carlos Rodrigues Flávia Falcão Tiago Rolim LF 1 Concorrente Paradigmas de Linguagens de Programação 01 de agosto de 2006