Linguagens Funcionais Vieram Para Ficar

desenvolvimento 8 de Set de 2016

Functional Programming poster from http://i.imgur.com/FLf5J6f.jpg?1

Você provavelmente já ouviu falar de alguma linguagem funcional. Talvez tenha sido aquele colega de trabalho nerd que vive tentando convencer o departamento a usar Scala ou, quem sabe, um antigo professor de faculdade que tocou no assunto anteriormente.

A verdade é que linguagens funcionais não são algo novo na computação. Suas raízes estão fortemente fincadas na teoria do Cálculo Lambda que data de 1930; o Lisp, talvez um dos exemplos mais conhecidos, data por sua vez, de 1958.

Entretanto, elas sempre tiveram mais espaço na academia do que no mercado. O que pode ser explicado, em parte, pelo fato dos computadores da década de 50 serem muito mais lentos do que os de hoje. Linguagens imperativas e com menos abstrações como o C acabaram se mostrando diversas vezes mais rápidas e, portanto, mais adequadas para o uso cotidiano.

"Por que raios toda essa "hype" em torno de algo que tem 60 anos?", você pode estar se perguntando. Neste caso, sugiro a leitura de um artigo de 2005 de autoria de Herb Sutter entitulado The Free Lunch is Over. Em resumo, ele diz que para continuar se aproveitando dos ganhos exponenciais do aumento do número de transistores nos processadores, será necessário escrever código concorrente. Já faz mais de 10 anos, mas seu conteúdo continua atual.

E é para escrever código concorrente que as linguagens funcionais levam alguma vantagem. Você possivelmente já deve ter ouvido a afirmação de que elas não possuem "efeitos colaterais". Sem a devida contextualização, no entanto, não é muito diferente de dizer que "maças fazem bem para a saúde".

Muito do "efeito colateral" em questão advém da mutabilidade de estados. Quando há duas ou mais threads de uma mesma aplicação acessando um mesmo endereço de memória e sendo capaz de alterar o estado de uma variável ou função, por exemplo, corre-se o risco de alterar seu conteúdo para um estado inválido, corrompendo a aplicação.

Obviamente, não se trata apenas disso e há muito mais para se aprender sobre linguagens funcionais, afinal, trata-se de um paradigma completamente diferente daquilo que a maioria de nós está acostumado a usar nos últimos 45 anos. No meu caso, comecei a estudar Haskell que, por ser uma linguagem funcional "pura", expõem muito dos conceitos essenciais a outras linguagens do mesmo tipo. Se quiser juntar-se a mim, sugiro a leitura do livro Learn You Haskell for Great Good disponível livremente sob Creative Commons.

Texto publicado originalmente na Revista Locaweb #61

Marcadores