SlideShare uma empresa Scribd logo
1 de 20
Baixar para ler offline
PROGRAMAÇÃO
FUNCIONAL
O que é? Como aplicar?
Quais os benefícios?
Co-fundadora da
Desplugue-se
GISELY
LUCAS
Engenheira de
Software na CI&T
Cientista da
Computação por
formação
O QUE É?
Paradigma de programação
Mas afinal o que é um paradigma
computacional?
PARADIGMA DE
PROGRAMAÇÃO
Modelo, padrão, que pode
conter regras e princípios
POO - Programação
Orientada a Objetos
Programação
orientada a eventos
Programação
Funcional ...
O QUE É?
Baseia-se em funções
Evitando alteração de estados e dados que
sejam mutáveis
FUNÇÕES MATEMÁTICAS
Testes:
f(x) = x * x
entrada saídaprocessamento
x x * x f(x)
x = 3 3 * 3 f(x) = 9
ONDE APLICAR?
Linguagens de paradigmas
funcionais
Haskel
LISP
Elixir
Clojure JS é
multiparadigma
PRINCÍPIOS E
PADRÕES
Como aplicar?
* 1º) Funções Puras:
Dada a mesma entrada a saída sempre será a mesma
f(x) = x * x
* 2º) Funções independentes de estados da aplicação:
Única dependência são os argumentos
Funções de primeira
classe
3º) Funções com efeitos colaterais controlados:
*
Alterações ou mutações são cuidadosamente controladas
3º) Funções com efeitos colaterais controlados:
*
Alterações ou mutações são cuidadosamente controladas
* 4º) Estruturas e Dados Imutáveis
Não alterar os estados e variáveis
Dê preferência a constantes
* 4º) Estruturas e Dados Imutáveis
Não alterar os estados e variáveis
Evitar manipulações de objetos
map
filter
reduce
Funções de ordem
superior
* 4º) Estruturas e Dados Imutáveis
Clonar Objetos
Objetos são referências
Não alterar os estados e variáveis
spread operator ...
Object.assign
cloneDeep (lodash)
* 5º) Composição de Funções :
Combinando duas ou mais funções
f(x) = x * x g(x) = 3 * x f(g(x))
PRINCIPAIS
BENEFÍCIOS
Como pode te ajudar?
* Benefícios
Técnica de otimização que armazena o
resultado de funções de alto custo, retornando
quando ocorrer a mesma entrada.
Fáceis de serem testadas
Possuem o mínimo de impactos e efeitos colaterais
Fácil manutenção
Paralelizável
Memoization
REFERÊNCIAS
Algumas dicas de como
mudar a mentalidade
FreeCodeCamp
What is functional
Programming?
Introdução a
Programação Funcional
Obrigada!
E-mail
gisely.lucas@gmail.com
LinkedIn
giselylucas

Mais conteúdo relacionado

Mais procurados

12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...
12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...
12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...Manuel Menezes de Sequeira
 
Programação Funcional - Luiz Stangarlin
Programação Funcional - Luiz StangarlinProgramação Funcional - Luiz Stangarlin
Programação Funcional - Luiz StangarlinDev PP
 
4. Introdução à linguagem de programação Java – Fundamentos de Programação
4. Introdução à linguagem de programação Java – Fundamentos de Programação4. Introdução à linguagem de programação Java – Fundamentos de Programação
4. Introdução à linguagem de programação Java – Fundamentos de ProgramaçãoManuel Menezes de Sequeira
 
TDC 2014 POA: Programacao funcional Por que Importa?
TDC 2014 POA: Programacao funcional Por que Importa?TDC 2014 POA: Programacao funcional Por que Importa?
TDC 2014 POA: Programacao funcional Por que Importa?Diego Pacheco
 
Introdução Programação Funcional
Introdução Programação FuncionalIntrodução Programação Funcional
Introdução Programação FuncionalNatan Mai
 
Clean code - Mantenha seu código limpo
Clean code - Mantenha seu código limpoClean code - Mantenha seu código limpo
Clean code - Mantenha seu código limpoTiago Bencardino
 
10 Boas Práticas de Programação
10 Boas Práticas de Programação10 Boas Práticas de Programação
10 Boas Práticas de ProgramaçãoCarlos Schults
 
Clean Code (Robert C. Martin)
Clean Code (Robert C. Martin)Clean Code (Robert C. Martin)
Clean Code (Robert C. Martin)Yasser Veleda
 
Apresentação Clean Code
Apresentação Clean CodeApresentação Clean Code
Apresentação Clean CodeAndré Leoni
 
Livro Código limpo: Classes
Livro Código limpo:  ClassesLivro Código limpo:  Classes
Livro Código limpo: ClassesInael Rodrigues
 
10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...
10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...
10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...Manuel Menezes de Sequeira
 
Conceitos base de programação - parte 1
Conceitos base de programação - parte 1Conceitos base de programação - parte 1
Conceitos base de programação - parte 1João Piedade
 
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...Manuel Menezes de Sequeira
 
8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação
8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação
8. Classes e instâncias; Cadeias de caracteres – Fundamentos de ProgramaçãoManuel Menezes de Sequeira
 
Paradigmas de linguagens de programacao - aula#10
Paradigmas de linguagens de programacao - aula#10Paradigmas de linguagens de programacao - aula#10
Paradigmas de linguagens de programacao - aula#10Ismar Silveira
 
4º Aula do Grupo de estudos sobre funções
4º Aula do Grupo de estudos sobre funções4º Aula do Grupo de estudos sobre funções
4º Aula do Grupo de estudos sobre funçõesFellyph Cintra
 

Mais procurados (20)

Clean Code
Clean CodeClean Code
Clean Code
 
12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...
12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...
12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...
 
Programação Funcional - Luiz Stangarlin
Programação Funcional - Luiz StangarlinProgramação Funcional - Luiz Stangarlin
Programação Funcional - Luiz Stangarlin
 
4. Introdução à linguagem de programação Java – Fundamentos de Programação
4. Introdução à linguagem de programação Java – Fundamentos de Programação4. Introdução à linguagem de programação Java – Fundamentos de Programação
4. Introdução à linguagem de programação Java – Fundamentos de Programação
 
TDC 2014 POA: Programacao funcional Por que Importa?
TDC 2014 POA: Programacao funcional Por que Importa?TDC 2014 POA: Programacao funcional Por que Importa?
TDC 2014 POA: Programacao funcional Por que Importa?
 
Introdução Programação Funcional
Introdução Programação FuncionalIntrodução Programação Funcional
Introdução Programação Funcional
 
Clean code - Mantenha seu código limpo
Clean code - Mantenha seu código limpoClean code - Mantenha seu código limpo
Clean code - Mantenha seu código limpo
 
10 Boas Práticas de Programação
10 Boas Práticas de Programação10 Boas Práticas de Programação
10 Boas Práticas de Programação
 
Clean Code (Robert C. Martin)
Clean Code (Robert C. Martin)Clean Code (Robert C. Martin)
Clean Code (Robert C. Martin)
 
Php Básico - Parte 1
Php Básico - Parte 1Php Básico - Parte 1
Php Básico - Parte 1
 
Apresentação Clean Code
Apresentação Clean CodeApresentação Clean Code
Apresentação Clean Code
 
Livro Código limpo: Classes
Livro Código limpo:  ClassesLivro Código limpo:  Classes
Livro Código limpo: Classes
 
10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...
10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...
10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...
 
Conceitos base de programação - parte 1
Conceitos base de programação - parte 1Conceitos base de programação - parte 1
Conceitos base de programação - parte 1
 
Programação Orientada a Objetos - 001
Programação Orientada a Objetos - 001Programação Orientada a Objetos - 001
Programação Orientada a Objetos - 001
 
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...
 
Clean code
Clean codeClean code
Clean code
 
8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação
8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação
8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação
 
Paradigmas de linguagens de programacao - aula#10
Paradigmas de linguagens de programacao - aula#10Paradigmas de linguagens de programacao - aula#10
Paradigmas de linguagens de programacao - aula#10
 
4º Aula do Grupo de estudos sobre funções
4º Aula do Grupo de estudos sobre funções4º Aula do Grupo de estudos sobre funções
4º Aula do Grupo de estudos sobre funções
 

Semelhante a Programação funcional - o que é? Como aplicar? Quais os benefícios?

TDC2018SP | Trilha Modern Web - Programacao funcional com Javascript - Seu co...
TDC2018SP | Trilha Modern Web - Programacao funcional com Javascript - Seu co...TDC2018SP | Trilha Modern Web - Programacao funcional com Javascript - Seu co...
TDC2018SP | Trilha Modern Web - Programacao funcional com Javascript - Seu co...tdc-globalcode
 
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...Tchelinux
 
MSP Tech Days 2018 - Programação Funcional com F#
MSP Tech Days 2018 - Programação Funcional com F#MSP Tech Days 2018 - Programação Funcional com F#
MSP Tech Days 2018 - Programação Funcional com F#Gustavo Bellini Bigardi
 
Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5Lucas Augusto Carvalho
 
Apresentação final
Apresentação finalApresentação final
Apresentação finalvalmon
 
Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Valmon Gaudencio
 
CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃO
CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃOCURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃO
CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃOMicrosoft
 
Programacao funcional dojo
Programacao funcional dojoProgramacao funcional dojo
Programacao funcional dojoFrancieli Viane
 
A importância da programação funcional no dia a-dia
A importância da programação funcional no dia a-diaA importância da programação funcional no dia a-dia
A importância da programação funcional no dia a-diaGabriel Schade Cardoso
 
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutosTDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutosRafael Chaves
 
Testando Aplicações com PHPT
Testando Aplicações com PHPTTestando Aplicações com PHPT
Testando Aplicações com PHPTSidney Souza
 
Programação Oritentada a Aspecto
Programação Oritentada a AspectoProgramação Oritentada a Aspecto
Programação Oritentada a AspectoBenicio Ávila
 
Removendo o cheiro ruim do seu código - PHPSC Conf 2011
Removendo o cheiro ruim do seu código - PHPSC Conf 2011Removendo o cheiro ruim do seu código - PHPSC Conf 2011
Removendo o cheiro ruim do seu código - PHPSC Conf 2011Luís Cobucci
 

Semelhante a Programação funcional - o que é? Como aplicar? Quais os benefícios? (20)

Logica Programação. ...
Logica Programação. ...Logica Programação. ...
Logica Programação. ...
 
01-Paradigmas.pdf
01-Paradigmas.pdf01-Paradigmas.pdf
01-Paradigmas.pdf
 
TDC2018SP | Trilha Modern Web - Programacao funcional com Javascript - Seu co...
TDC2018SP | Trilha Modern Web - Programacao funcional com Javascript - Seu co...TDC2018SP | Trilha Modern Web - Programacao funcional com Javascript - Seu co...
TDC2018SP | Trilha Modern Web - Programacao funcional com Javascript - Seu co...
 
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
 
MSP Tech Days 2018 - Programação Funcional com F#
MSP Tech Days 2018 - Programação Funcional com F#MSP Tech Days 2018 - Programação Funcional com F#
MSP Tech Days 2018 - Programação Funcional com F#
 
Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5
 
Apresentação final
Apresentação finalApresentação final
Apresentação final
 
Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.
 
CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃO
CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃOCURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃO
CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃO
 
Programacao funcional dojo
Programacao funcional dojoProgramacao funcional dojo
Programacao funcional dojo
 
A importância da programação funcional no dia a-dia
A importância da programação funcional no dia a-diaA importância da programação funcional no dia a-dia
A importância da programação funcional no dia a-dia
 
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutosTDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos
 
Apresentação faef
Apresentação faefApresentação faef
Apresentação faef
 
Testando Aplicações com PHPT
Testando Aplicações com PHPTTestando Aplicações com PHPT
Testando Aplicações com PHPT
 
01 aula1 habib
01 aula1 habib01 aula1 habib
01 aula1 habib
 
Programação Oritentada a Aspecto
Programação Oritentada a AspectoProgramação Oritentada a Aspecto
Programação Oritentada a Aspecto
 
1º GLOBALWEB DEVSUMMIT_ 2021
1º GLOBALWEB DEVSUMMIT_ 20211º GLOBALWEB DEVSUMMIT_ 2021
1º GLOBALWEB DEVSUMMIT_ 2021
 
Minicurso de TDD
Minicurso de TDDMinicurso de TDD
Minicurso de TDD
 
Removendo o cheiro ruim do seu código - PHPSC Conf 2011
Removendo o cheiro ruim do seu código - PHPSC Conf 2011Removendo o cheiro ruim do seu código - PHPSC Conf 2011
Removendo o cheiro ruim do seu código - PHPSC Conf 2011
 
P funcional
P funcionalP funcional
P funcional
 

Mais de Gisely Lucas

Diversidade - Anima.pdf
Diversidade - Anima.pdfDiversidade - Anima.pdf
Diversidade - Anima.pdfGisely Lucas
 
O poder da semântica em aplicações Web - Um olhar para o HTML
O poder da semântica em aplicações Web - Um olhar para o HTML O poder da semântica em aplicações Web - Um olhar para o HTML
O poder da semântica em aplicações Web - Um olhar para o HTML Gisely Lucas
 
[Dev day] Gerenciamento de foco para aplicações digitais acessíveis: do essen...
[Dev day] Gerenciamento de foco para aplicações digitais acessíveis: do essen...[Dev day] Gerenciamento de foco para aplicações digitais acessíveis: do essen...
[Dev day] Gerenciamento de foco para aplicações digitais acessíveis: do essen...Gisely Lucas
 
Vamos falar de desenvolvimento com acessibilidade?
Vamos falar de desenvolvimento com acessibilidade?Vamos falar de desenvolvimento com acessibilidade?
Vamos falar de desenvolvimento com acessibilidade?Gisely Lucas
 
Muito além de apenas bandeiras
Muito além de apenas bandeirasMuito além de apenas bandeiras
Muito além de apenas bandeirasGisely Lucas
 
Inclusão Web: Tornando a web para todos
Inclusão Web: Tornando a web para todosInclusão Web: Tornando a web para todos
Inclusão Web: Tornando a web para todosGisely Lucas
 
Desenvolvimento de aplicativos Móveis com IONIC
Desenvolvimento de aplicativos Móveis com IONICDesenvolvimento de aplicativos Móveis com IONIC
Desenvolvimento de aplicativos Móveis com IONICGisely Lucas
 
Talk diversidade 2018
Talk   diversidade 2018Talk   diversidade 2018
Talk diversidade 2018Gisely Lucas
 
Fala sério, mulheres na TI?
Fala sério, mulheres na TI?Fala sério, mulheres na TI?
Fala sério, mulheres na TI?Gisely Lucas
 

Mais de Gisely Lucas (13)

Diversidade - Anima.pdf
Diversidade - Anima.pdfDiversidade - Anima.pdf
Diversidade - Anima.pdf
 
O poder da semântica em aplicações Web - Um olhar para o HTML
O poder da semântica em aplicações Web - Um olhar para o HTML O poder da semântica em aplicações Web - Um olhar para o HTML
O poder da semântica em aplicações Web - Um olhar para o HTML
 
[Dev day] Gerenciamento de foco para aplicações digitais acessíveis: do essen...
[Dev day] Gerenciamento de foco para aplicações digitais acessíveis: do essen...[Dev day] Gerenciamento de foco para aplicações digitais acessíveis: do essen...
[Dev day] Gerenciamento de foco para aplicações digitais acessíveis: do essen...
 
Vamos falar de desenvolvimento com acessibilidade?
Vamos falar de desenvolvimento com acessibilidade?Vamos falar de desenvolvimento com acessibilidade?
Vamos falar de desenvolvimento com acessibilidade?
 
Muito além de apenas bandeiras
Muito além de apenas bandeirasMuito além de apenas bandeiras
Muito além de apenas bandeiras
 
Inclusão Web: Tornando a web para todos
Inclusão Web: Tornando a web para todosInclusão Web: Tornando a web para todos
Inclusão Web: Tornando a web para todos
 
[Sass] Aula 04
[Sass] Aula 04[Sass] Aula 04
[Sass] Aula 04
 
[Sass] aula 03
[Sass] aula 03[Sass] aula 03
[Sass] aula 03
 
[Sass] aula 02
[Sass] aula 02[Sass] aula 02
[Sass] aula 02
 
[Sass] Aula 01
[Sass] Aula 01[Sass] Aula 01
[Sass] Aula 01
 
Desenvolvimento de aplicativos Móveis com IONIC
Desenvolvimento de aplicativos Móveis com IONICDesenvolvimento de aplicativos Móveis com IONIC
Desenvolvimento de aplicativos Móveis com IONIC
 
Talk diversidade 2018
Talk   diversidade 2018Talk   diversidade 2018
Talk diversidade 2018
 
Fala sério, mulheres na TI?
Fala sério, mulheres na TI?Fala sério, mulheres na TI?
Fala sério, mulheres na TI?
 

Programação funcional - o que é? Como aplicar? Quais os benefícios?