freeCodeCamp/guide/portuguese/software-engineering/functional-programming/index.md

45 lines
2.5 KiB
Markdown

---
title: Functional Programming
localeTitle: Programação Funcional
---
## Programação Funcional
A programação funcional é o processo de construção de software, compondo **funções puras** , evitando **estado compartilhado** , **dados mutáveis** e **efeitos colaterais** . A programação funcional é **declarativa** (dizendo ao computador o que você quer fazer) em vez de **imperativa** (informando ao computador exatamente como fazer isso), e o estado do aplicativo flui através de funções puras. Compare-o com a programação orientada a objetos, em que o estado do aplicativo é geralmente compartilhado e co-localizado com métodos em objetos.
### Por que programação funcional?
* Geralmente é mais conciso
* Geralmente é mais previsível
* É mais fácil testar do que código orientado a objetos
### Adoção por programação de idiomas
Muitas linguagens de programação suportam programação funcional como Haskell, F #, Common Lisp, Clojure, Erlang, OCaml. O JavaScript também possui as propriedades de uma linguagem funcional não tipificada.
### Usos
A programação funcional tem sido popular na academia, mas com poucas aplicações industriais. No entanto, recentemente várias linguagens de programação funcionais proeminentes foram usadas em sistemas comerciais ou industriais. Por exemplo, a linguagem de programação Erlang, que foi desenvolvida pela empresa sueca Ericsson no final dos anos 80, é usada para criar uma variedade de aplicativos em empresas como a T-Mobile, a Nortel, o Facebook, a Eletricité de France e o WhatsApp.
### Funções de ordem superior
Funções de ordem superior são uma grande parte da programação funcional. Uma função de ordem superior é uma função que recebe uma função como parâmetro ou retorna uma função.
### Mapa
`map` é uma função de ordem superior que chama uma função para cada elemento de uma lista e retorna os resultados como uma _nova_ lista.
Aqui está um exemplo de `map` :
```javascript
const myList = [6, 3, 5, 29];
let squares = myList.map(num => num * num); // [36, 9, 25, 841]
```
### Mais Informações:
* [Wikipedia - Programação Funcional](https://en.wikipedia.org/wiki/Functional_programming#Use_in_industry)
* [KeyCDN - Programação Funcional - O que é e por que isso importa?](https://www.keycdn.com/blog/functional-programming/)
* [Médio - O que é programação funcional?](https://medium.com/javascript-scene/master-the-javascript-interview-what-is-functional-programming-7f218c68b3a0)