Sobes.tech
Middle

O que é programação funcional?

sobes.tech IA

Resposta da IA

A programação funcional é um paradigma de programação baseado no uso de funções como blocos de construção principais. Conceitos-chave:

  • Funções puras: Funções que, com os mesmos dados de entrada, sempre retornam o mesmo resultado e não têm efeitos colaterais (não modificam o estado fora da função, não realizam entrada/saída).
  • Imutabilidade de dados: Os dados não podem ser modificados após a sua criação. Em vez de modificar, criam-se novos dados.
  • Funções de primeira classe: As funções podem ser passadas como argumentos, atribuídas a variáveis, devolvidas de outras funções.
  • Ausência de estado: O programa não possui um estado global ou compartilhado modificável do qual dependam a execução das funções.
  • Estilo declarativo: Descreve "o que" deve ser feito, não "como" (ao contrário do estilo imperativo, que se concentra na sequência de passos).

Vantagens:

  • Melhor testabilidade e depuração graças às funções puras.
  • Simplificação da programação paralela devido à ausência de estados mutáveis compartilhados.
  • Código mais previsível.
  • Modularidade aumentada.

Desvantagens:

  • Pode exigir uma abordagem diferente para resolver problemas, pouco convencional para desenvolvedores com experiência em linguagens imperativas.
  • Às vezes pode levar à criação de um grande número de objetos intermediários devido à imutabilidade dos dados.
  • Complexidade na implementação de alguns algoritmos sem usar estado mutável.

Exemplos de implementação em JavaScript:

Uso de funções de ordem superior (map, filter, reduce) :

// Em vez de modificar o array, map cria um novo
const numbers = [1, 2, 3];
const doubled = numbers.map(n => n * 2); // doubled = [2, 4, 6]

Função pura:

// Esta função sempre retorna o mesmo resultado para os mesmos dados de entrada
// e não modifica o estado externo
function add(a, b) {
  return a + b;
}