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.

Navegue pelo índice

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

    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)
    ]

    Na 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 funcionais de programação

    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 são as linguagens de programação?

    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 funcionais na programação

    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.

    linguagens funcionais programação

    Vantagens das linguagens funcionais na programação

    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 funcionais de programação 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.

    Hospedagem Dedicada: muito mais recursos para garantir a melhor experiência!

    CLIQUE AQUI!