As linguagens de programação funcionais têm atraído cada vez mais a atenção de grandes empresas. A avaliação da popularidade delas em sites respeitados — como GitHub e Stack Overflow — mostra que Elixir, Clojure e F# estão gradualmente expandindo sua presença no mercado.

Porém, você sabe o que são elas? E quais seus benefícios? Neste artigo você vai ter uma introdução ao conceito de linguagens funcionais, como elas funcionam, quais as principais existentes no mercado e quando devem ser utilizadas.

O que são linguagens de programação funcionais?

O estilo da programação funcional é baseado em funções, no sentido matemático do termo. Ele busca produzir sempre o mesmo resultado para as mesmas entradas, evitando gerar e lidar com efeitos colaterais. 

Vamos conferir um exemplo simples. Usaremos Ruby porque ela suporta os dois estilos.

Suponha que você queira fornecer um aumento salarial para todos os funcionários. Em OOP, vamos precisar de uma classe para gerar os objetos:

class Empregado
  def initialize(nome, salário)
    @nome = nome
    @salário = salário
  end

  def change_salário(amt)
    @salário = @salário + amt
  end

  def description
    “#{@nome} makes #{@salário}”
  end
end

Em seguida, vamos gerar os objetos:

empregados = [
  Empregado.new(“Beto”, 100000.0),
  Empregado.new(“Joana”, 125000.0)
]

Em terceira etapa, dar os aumentos:

empregados.each do |emp|
  emp.change_salário(10000.0)
end

E usar o método each (“cada”), que guarda cada funcionário em uma variável chamada emp.

employees.each do |emp|
  puts emp.description
end

Na abordagem funcional, é bem diferente. Primeiro, a estrutura de dados:

empregados = [
  [ “Beto”,  100000.0 ],
  [ “Joana”, 125000.0 ]
]

Em seguida, redigimos o método:

felizes_empregados = mudar_salarios(empregados, 10000.0)

E, como não temos objetos, a função requer não só a quantidade, mas também os dados:

felizes_empregados.each do |emp|
  puts “#{emp[0]} makes #{emp[1]}”
end

 

Como funcionam as linguagens de programação funcionais?

O código na programação funcional (FP, na sigla em inglês) se define pela ausência de efeitos colaterais nas funções puras. Ele não se vale de dados de fora da função atual, nem modifica os que estão fora da função atual. Todas as outras características derivam dessa propriedade, e uma função não tem efeitos reversos quando traz sempre os mesmos resultados, não importa quantas vezes é acionada.

Dito de outra forma: os valores de saída dependem apenas dos argumentos de entrada, em qualquer ambiente ou cenário em que o sistema esteja inserido.

Quem está começando no mundo da FP precisa ligar uma chave “acadêmica” na cabeça. Isso significa estudar a definição de uma série de termos: funções puras, composição de funções, evitar estados mutáveis, etc. A cultura também passa a ser de criar funções com uma única responsabilidade cada uma, contribuindo para a qualidade do código.

Quais as principais linguagens de programação funcionais?

São várias as linguagens de FP usadas no mercado. Veja, logo abaixo, as principais.

Haskell

Amplamente usada nas universidades e na indústria, oferece uma separação clara entre funções puras e impuras. Seus programas são fáceis de paralelizar e rodam de forma eficiente em hardware de múltiplos núcleos (multicore). É usada pelo Facebook para combater o spam. A linguagem é amplamente elogiada pela rede de Zuckerbeg, que comenta o bom desempenho e velocidade dela em implementar mudanças.

Elixir

Desenvolvida para ser executada na Virtual Machine do Erlang, essa é uma linguagem para construir aplicações escaláveis e de fácil manutenção. Conta com uma comunidade que está contribuindo muito com bibliotecas e também executa tudo que já foi criado para Erlang.

Clojure

Tem o objetivo de ser uma linguagem de propósito geral adequada aos mesmos ambientes em que se usaria Java; com efeito, pode usar bibliotecas Java. Contém muitas formas de fazer valer o código correto.

JavaScript e outras

Uma das três principais tecnologias da World Wide Web (ao lado do HTML e do CSS) é multi-paradigmática, com suporte também para a programação funcional. Permite páginas interativas na web e é usada em quase todos os web sites. Todos os principais browsers têm um motor dedicado à JavaScript.

Existem “transpilers” que permitem transformar em JavaScript (para rodar no browser) códigos escritos em várias outras linguagens funcionais, como ClojureScript, ElixirScript e Elm, entre outras.

Quando utilizar as linguagens de programação funcionais?

As linguagens funcionais ainda são uma minoria no mercado quando comparadas com as OOP, mas seu uso na academia e na indústria é crescente. A Erlang, por exemplo, foi desenvolvido pela empresa sueca Ericsson no fim dos anos 80 para implementar sistemas de telecomunicações.

Parte da infraestrutura do WhatsApp é nessa linguagem, uma das razões pelas quais um aplicativo com mais de 1 bilhão de usuários é mantido por uma empresa com cerca de 50 funcionários.

Além do uso extensivo em desenvolvimento de sites, linguagens funcionais estão sendo usadas em programas de análise financeira, programação de robôs industriais e até sistemas aeroespaciais.

Quais as vantagens das linguagens de programação funcionais?

Veja abaixo algumas das principais vantagens dessa metodologia:

  • as abstrações da programação funcional escondem grande número de detalhes de operações de rotina, como iterações. Isso torna o código mais curto (como vimos acima), o que resulta em menor número de erros;
  • na FP existe um número menor de tipos primitivos. Em vez de criar uma descrição única de um objeto com operações na forma de métodos, basta usar um dos poucos primitivos básicos otimizados;
  • por causa da flexibilidade da estrutura, o desenvolvedor pode trazer a linguagem mais próxima do problema, em vez de vice-versa. Além disso, bibliotecas de FP já oferecem ferramentas interessantes para resolver tarefas complexas que não existem nas linguagens OOP;
  • trabalhar com linguagens funcionais significa escrever código mais preciso e mais rapidamente, facilitando testes e o debugging. 

As linguagens de programação funcionais ajudam os desenvolvedores a escreverem códigos que são curtos, rápidos e de fácil manutenção. Uma boa dica para começar é tentar alguns exercícios simples e depois partir para a leitura de livros sobre Haskell, Elixir ou Clojure, conforme for a solução mais adequada para o seu cotidiano de trabalho.

No início, a FP era usada apenas para resolver problemas específicos. Entretanto, hoje ela é aplicada até mesmo em projetos grandes de empresas de TI. Quanto mais você aprender, mais oportunidades vão se abrir na sua carreira.

Fique por dentro das melhores dicas em linguagens de programação, proteção de dados e UX design para desenvolvedores. Assine nossa newsletter.

Exibir ComentáriosOcultar Comentários

Faça um comentário