08.02.2015 Views

Programação Funcional e Concorrente com Scheme

Programação Funcional e Concorrente com Scheme

Programação Funcional e Concorrente com Scheme

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

notas de aula - Jerônimo C. Pellegrini<br />

13 FO R M A L I S M O S E PA R A D I G M A S U S A N D O T R O C A<br />

D E M E N S AG E N S<br />

(este capítulo será <strong>com</strong>pletamente reestruturado)<br />

Este Capítulo apresenta brevemente alguns formalismos e paradigmas baseados nas<br />

primitivas descritas no Capítulo 12.<br />

13.1 <strong>com</strong>municating sequential processes e mensagens<br />

síncronas<br />

Processos sequenciais <strong>com</strong>unicantes ou CSP (Communicating Sequantial Processes) são um<br />

formalismo teórico para descrição de processos concorrentes usando troca síncrona de<br />

mensagens.<br />

O trabaho original de Tony Hoare assemelhava-se a uma linguagem de programação<br />

[47] (embora nunca tenha sido implementada naquela forma). Versões posteriores<br />

evoluiram para a formula de um Cálculo de Processos [48] – um formalismo que permite<br />

analisar e demonstrar propriedades de programas ou protocolos que envolvem processos<br />

concorrentes e que se <strong>com</strong>unicam de forma síncrona.<br />

13.1.1 Motivação: problemas <strong>com</strong> objetos<br />

Como mencionado por Peter Welch [49], há diversos problemas na abordagem <strong>com</strong>um<br />

para programação orientada a objetos. Por exemplo, suponha que as duas linhas de<br />

código Java a seguir são parte de um método de um objeto A. Não há <strong>com</strong>o saber o valor<br />

da variável saldo após a execução destas linhas.<br />

Versão Preliminar<br />

saldo = 0;<br />

umObjeto . fazAlgo ();<br />

[ 27 de outubro de 2010 at 15:47 ]<br />

279

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!