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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

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

mação <strong>com</strong> pilha em Forth [5] (e mais recentemente Factor [6]) ou ainda de programação<br />

<strong>com</strong> tabelas em Lua [7] (embora Lua incorpore também elementos de outros paradigmas).<br />

1.1.1 Paradigmas<br />

Embora esta visão seja amplamente difundida e normalmente reforçada por livros e<br />

cursos, Shriram Krishnamurti a questiona [8]: “’Paradigmas’ de programação são um<br />

legado moribundo e tedioso de uma era já passada. Projetistas de linguagens modernas<br />

não os respeitam, então porque nossos cursos aderem de modo escravocrata a eles” 3<br />

Ainda assim, é interessante notar que algumas das linguagens mais elegantes e simples<br />

espelham de maneira bastante direta algum paradigma.<br />

Este texto aborda o paradigma funcional de programação usando a linguagem<br />

<strong>Scheme</strong> [9, 10, 11, 12, 13], e ilustra a construção das características importantes de linguagens<br />

de programação, inclusive algumas das características marcantes de linguagens<br />

orientadas a objetos e lógicas.<br />

1.2 o ambiente de programação scheme<br />

Muitas linguagens oferecem um dispositivo chamado “REPL” (Read-Eval-Print Loop).<br />

O REPL é um programa que lê expressões ou trechos de programa, “avalia” (ou “executa”)<br />

e mostra o resultado. Python, Ruby, Common Lisp, Haskell e a vasta maioria<br />

das implementações de <strong>Scheme</strong> oferecem um REPL. Na prática, a experiência de usar o<br />

REPL é semelhante à de interagir <strong>com</strong> um <strong>com</strong>putador usando linha de <strong>com</strong>ando em um<br />

terminal 4 .<br />

Versão Preliminar<br />

3 No oritinal, “Programming language ’paradigms’ are a moribund and tedious legacy of a bygone age. Modern language<br />

designers pay them no respect, so why do our courses slavishly adhere to them”<br />

4 O leitor perceberá que o ciclo de desenvolvimento em Lisp e outras linguagens ditas “dinâmicas” é diferente<br />

do tradicional “editar-<strong>com</strong>pilar-executar”, típico de C e Java.<br />

2<br />

[ 27 de outubro de 2010 at 15:47 ]

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

Saved successfully!

Ooh no, something went wrong!