Programa O Paralela E Distribu Da Trabalhando Com Linguagens Funcionais
Linguagens Funcionais
Fernando Alex Helwanger1, Maria Priscila Rolim1
1
Instituto de Ciências Exatas e Tecnológicas – Universidade Feevale
Novo Hamburgo – RS – Brasil fhelwanger@gmail.com, mariapriscila@feevale.br
Resumo. Cada vez mais se faz necessário o desenvolvimento de programas paralelos ou concorrentes. O número de núcleos presentes nos computadores só aumenta, portanto, programas devem estar preparados para isto. Porém, este tipo de desenvolvimento nem sempre é uma tarefa trivial. Diversas técnicas foram criadas ao decorrer da história para resolver impedimentos nestes problemas. Mas, muitas vezes, o impedimento pode ser resolvido de outra forma se for adotada uma abordagem diferente. O que este artigo propõe é analisar este problema nos paradigmas imperativo e funcional, a fim de demonstrar que, muitas vezes, os impedimentos presentes em linguagens imperativas nem existem em linguagens funcionais, tornando-as um ambiente propício ao paralelismo.
1. Introdução
Linguagens imperativas são aquelas em que o programador especifica como o computador deve resolver o problema. Linguagens funcionais são declarativas, ou seja, o programador especifica qual o problema e não como ele deve ser resolvido [Sebesta,
2012]. As linguagens de programação mais utilizadas atualmente são imperativas
[Tiobe, 2013].
A evolução dos processadores atualmente não é mais tão significativa em relação à velocidade, já que o silício possui limitações e seus limites estão próximos.
Portanto, o que evolui é o número de núcleos presentes. Servidores que necessitam de um alto desempenho trabalham em clusters, o que também é uma forma de paralelismo.
Por isso, o software deve estar preparado para usufruir de todos estes recursos disponibilizados. Estes recursos podem ser usados para a concorrência ou para o paralelismo.
Paralelismo é quando se utiliza todos os núcleos presentes para obter um desempenho melhor. Concorrência é quando se