DESMISTIFICANDO
A PROGRAMAÇÃO
FUNCIONAL
Gabriel Custódio
Software Engineer @ ReclameAQUI
@gbrlcustodio
WHOAMI
O que é?
Funciona?
Como se parece?
Do que se
alimenta?
01
03
02
04
In computer science, functional programming is a programming
paradigm where programs are constructed by applying and
composing functions. It is a declarative programming paradigm
in which function definitions are trees of expressions that each
return a value, rather than a sequence of imperative statements
which change the state of the program or world.
Wikipedia
O QUE É A PROGRAMAÇÃO
FUNCIONAL?
Functional programming is a style of programming
which models computations as the evaluation of
expressions.
Haskell Wiki
O QUE É A PROGRAMAÇÃO
FUNCIONAL?
“A language that doesn't affect the way you think
about programming is not worth knowing.”
Alan J. Perlis
ESTUDO DE CASO
ARQUITETURA DE SOFTWARE
FUNCIONA,
PORÉM...
VAMOS
REFAZER!
INSIRA SEU FRAMEWORK FAVORITO AQUI
Complexidade .01
Compartilhamento de
estado mutável
.03
Mágica.02
Paralelismo.04
Funções devem associáveis
a variáveis e permitir sua
manipulação.
✔ A saída depende da
entrada;
✔ Nenhum efeito colateral.
Construídas sobre funções
de primeira classe;
Recebem uma função como
argumento ou retornam uma
função.
FUNÇÕES PURAS FUNÇÕES DE ALTA ORDEMFUNÇÕES DE PRIMEIRA CLASSE
DEFINIÇÃO DE CONCEITOS
Se você pode substituir uma
chamada de função por seu
valor de retorno sem afetar
o comportamento da
aplicação.
Impossível modificar
estrutura da dados já
existentes. ✔ Funções anônimas (lambda)
✔ Currying
IMUTABILIDADE BASEADA NO
CÁLCULO LAMBDA
TRANSPARÊNCIA REFERENCIAL
DEFINIÇÃO DE CONCEITOS
COMPOSIÇÃO
Funções de primeira classe &
Funções de alta ordem &
Lambda
PREVISIBILIDADE
PREVISIBILIDADE
Funções puras &
Imutabilidade!
Problema!
Cópias
Cópias
Cópias
PERSISTENT
DATA STRUCTURE
SIDE
EFFECTS!
BONUS POINT:
PARALELISMO
LEI DE MOORE
Em 1965, Gordon Moore fez uma previsão que determinaria o
ritmo da revolução digital moderna. Moore concluiu que o poder
da computação aumentaria tremendamente e que seu custo
relativo cairia a um ritmo vertiginoso.
https://www.intel.com.br/content/www/br/pt/silicon-innovations/moores-law-technology.html
MULTICORE
Não determinístico =
processamento paralelo + estado mutável
PROCESSO NÃO
DETERMINÍSTICO
BENEFÍCIOS
Um trecho de código é dito thread safe se este
funciona corretamente no contexto onde existem
múltiplas threads.
THREAD SAFETY
Quando um processo nunca é executado.
STARVATION FREE
Impasse onde dois ou mais processos ficam impedidos
de continuar suas execuções, ou seja, ficam
bloqueados, esperando uns pelos outros.
DEADLOCK FREE
Código previsível + efeitos colaterais controlados =
código manutenível
CONSEQUÊNCIA
PROBLEMAS
INICIAIS
MUDANÇA DE
MENTALIDADE
LOOPS &
RECURSÃO
PATTERN
MATCHING
POR ONDE
COMEÇAR?
CLOJURE?
ERLANG?
ELIXIR?
HASKELL?
JAVASCRIPT?
JAVASCRIPT!
ESCOLHA O SEU SABOR!
CASES DE SUCESSO
Perguntas?
gbrlcustodio@outlook.com
OBRIGADO!
◂ Template da apresentação do Slidesgo
◂ Icones do Flaticon
◂ Inspirado na talk de Russ Olsen
◂ Conceitos extraídos de inúmeros artigos na interwebs, porém,
kudos para Core Functional Programming Concepts
Créditos

Desmistificando a programação funcional