SlideShare uma empresa Scribd logo
A importância
da programação funcional no
dia-a-dia
GABRIEL SCHADE CARDOSO
Quem é esse tal de Gabriel?
 Bacharel em ciência da computação
 Mestre em computação aplicada
 Microsoft Innovative Educator (MIE)
 Microsoft Specialist (MS)
 C#
 Javascript
 ASP .NET MVC
3
GUI
Sobre mim
 Microsoft Certified Solutions Assiciate (MCSA)
 Web Applications
 Autor dos livros da editora casa do código sobre
os assuntos:
 Kinect
 Windows Phone
 Programação Funcional
4
GUI
Sobre mim
 Desenvolvedor Senior
 Professor
 Revisor
5
GUI
Sobre mim
O que é programação
funcional?
Programação Funcional
 Programação funcional é um paradigma de
programação.
 Enfatiza o uso de funções e evita mudanças de
estados ou dados mutáveis.
Programação Funcional
Quem conhece programação funcional?
Programação Funcional
 Quem conhece programação funcional?
Programação Funcional
 Geralmente poucas pessoas conhecem programação
funcional...
 Mas qual o motivo disso?
Programação Funcional
 O maior complicador sobre o paradigma
funcional é que ele é mais complicado.
 Mentira, não é, mas as pessoas geralmente se
assustam com ele.
Programação Funcional
 Só precisamos aprender:
1. Funtores;
2. Funtores Aplicativos;
3. Currying;
4. Aplicação Parcial;
5. Monads;
6. Monoids;
7. ...
 Mas já precisamos aprender:
1. Interfaces;
2. Polimorfismo;
3. Herança;
4. Encapsulamento;
5. Generics;
6. SOLID;
7. ...
Programação Funcional
São só outro grupo de palavras difíceis
que representam outra forma de pensar
Programação Funcional
 Por que eu decidi aprender programação funcional?
1. Curiosidade;
2. Melhoria contínua;
3. Entediado;
Programação Funcional
A maior dificuldade foi aprender a pensar
de forma diferente.
Programação Funcional
 Quando eu decidi aprender programação funcional eu
ainda não sabia, mas iria mudar completamente a
forma como eu desenvolvia software.
Programação Funcional
 Está cada vez mais comum diferentes linguagens de
programação incorporarem implementações que
seguem o paradigma funcional.
Programação Funcional
 Programação funcional é um paradigma de
programação bastante diferente do paradigma
orientado à objetos.
 Apesar de serem distintos, é muito comum
coexistirem na mesma aplicação.
Programação Funcional
 Alguns conceitos fundamentais:
1. Funções são membros de primeira ordem;
2. Reforce expressões e composições;
3. Crie códigos expressivos com tipos;
Funções como
membros de primeira
ordem
Programação Funcional
 O que significa ser um membro de primeira ordem?
 De forma resumida, agora as funções também são
coisas.
 Como assim?
Programação Funcional
 Elas não precisam pertencer à uma classe;
 Elas podem ser passadas por parâmetro;
 Elas podem ser retornadas;
 Elas podem ser utilizadas como tipos.
Programação Funcional
 Em F# as funções são valores como qualquer outro;
 Em C#, delegates são para funções, o que classes
são para objetos.
Programação Funcional
 Permitindo que uma função possa ser passada por
parâmetro abrimos um leque de possibilidades de
abstrações.
Programação Funcional
Programação Funcional
Programação Funcional
Programação Funcional
Programação Funcional
Programação Funcional
 Com este tipo de abstração, podemos inclusive
incrementar uma função/método, sem alterar o corpo
da função.
Programação Funcional
 Veja esta função simples para calcular a sequência
Fibonacci:
Programação Funcional
 Quero além de calcular o Fibonacci, exibir o resultado
no console, como fazer?
Programação Funcional
 Agora quero fazer a mesma operação, mas para uma
soma...
Programação Funcional
 Ok, vamos tornar mais abstrato!
Programação Funcional
 Agora podemos gerar novos métodos!
Programação Funcional
 E já podemos ver o resultado!
Programação Funcional
 E para o caso da soma?
Programação Funcional
 E para o caso da soma?
Código Expressivo!
Código expressivo
 Existem diversas definições para código
expressivo.
“O código precisa expressar a linguagem mais
humana possível”
Código expressivo
 Se um veículo tem uma descrição, o tipo/classe
que o representa, precisa ter uma propriedade
chamada descrição e não título ou nome.
Código expressivo
 Este é o nível mais básico de expressividade,
podemos ir muito além e alcançar o nível bem
mais avançado.
Modelando o domínio!
Código expressivo
 Vamos para um exemplo em outro domínio mais
simples: um jogo de baralho, como pife, por
exemplo.
Código expressivo
 Sabemos que uma partida de baralho possui os
seguintes elementos:
 Cartas
 Baralho
 Jogadores
Código expressivo
 Cartas são compostas por uma combinação de
valor + naipe...
 Quais são os valores possíveis?
 Quais são os naipes possíveis?
Código expressivo
Código expressivo
 E o resto?
Código expressivo
 Tudo certo!
 Será mesmo?
Código expressivo
Código expressivo
 Após a implementação deste domínio
precisamos implementar o comportamento de
comprar uma carta.
Código expressivo
 Esta modelagem, não impede isso...
Código expressivo
 Sugestões de solução?
 Passar a partida por parâmetro?
 Criar um classe para baralho e outra para a mão?
Tipagem com alias e F#!
Tipagem
 O paradigma funcional reforça bastante o uso
de tipos ao invés de classes.
 Vamos para a mesma modelagem!
Tipagem
Tipagem
Não são enums!
Tipagem
Produto escalar
de tipos!
Tipagem
Guardam valores do
Mesmo tipo, mas
Possuem nomes
diferentes
Tipagem
Tipagem
 Escreve-se menos código e conseguimos
modelar de forma melhor...
 Veja o mesmo exemplo do método de comprar
cartas:
Tipagem
 Esta modelagem, impede:
Programação Funcional
 Este poder de abstração permite criar inclusive novas
estruturas;
 Uma nova maneira de desenvolver abre as
possibilidades para resolução de problemas;
 A criação das bibliotecas de diversas linguagens
utilizam uma abordagem híbrida;
Programação Funcional
 Utilizo diariamente os conceitos deste paradigma
para ser mais produtivo, padronizar comportamentos e
aumentar o poder de extensão dos projetos em que
trabalho.
Programação Funcional
 Existem muito mais conceitos por trás deste
paradigma, mas por hoje é só!
Me encontre em
/gabrielschade
/gabrielschade
/gabrielschade
/gabrielschade
https://gabrielschade.github.io
Perguntas?

Mais conteúdo relacionado

PPTX
Introdução à programação funcional
PDF
Refatoração - aquela caprichada no código
PDF
M5-Desenvolvimento-Paginas-Web
PDF
Logica de programação. introdução[AULA-1]
PDF
A Arte do Código Limpo
PPTX
Lógica de programação 4
PDF
Livro - código limpo caps (3,4) (clean code)
PPT
CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃO
Introdução à programação funcional
Refatoração - aquela caprichada no código
M5-Desenvolvimento-Paginas-Web
Logica de programação. introdução[AULA-1]
A Arte do Código Limpo
Lógica de programação 4
Livro - código limpo caps (3,4) (clean code)
CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃO

Mais procurados (20)

PPTX
4 introdução ao paradigma funcional
PDF
Paradigmas de Programação - Imperativo, Orientado a Objetos e Funcional
PPTX
Introdução ao desenvolvimento com PHP
PPTX
Processo de Desenvolvimento de Software - Linguagens Imperativas x Declarativas
PDF
Intro à Graphql
PPTX
C++ Funções
PPTX
DDD linguagem ubiqua + codigo expressivo
PDF
Introdução ao paradigma imperativo
PDF
Microsoft C#
PPTX
PDF
mod3-programação-estruturada
PDF
Paradigma funcional até leigos podem entender
PPTX
PDF
Funções em C - Prof. Yandre
PDF
TDC2017 | POA Trilha Programcao Funcional - Paradigma funcional até leigos po...
PDF
Thiago silva barros_1102133_ads_640_padrao_adapter
PDF
Aula 04
KEY
Clean code
PPTX
Algoritmos - Paradigmas de Programação
PDF
Open4Education | MC59 - Aprendendo a programar de forma divertida e eficiente...
4 introdução ao paradigma funcional
Paradigmas de Programação - Imperativo, Orientado a Objetos e Funcional
Introdução ao desenvolvimento com PHP
Processo de Desenvolvimento de Software - Linguagens Imperativas x Declarativas
Intro à Graphql
C++ Funções
DDD linguagem ubiqua + codigo expressivo
Introdução ao paradigma imperativo
Microsoft C#
mod3-programação-estruturada
Paradigma funcional até leigos podem entender
Funções em C - Prof. Yandre
TDC2017 | POA Trilha Programcao Funcional - Paradigma funcional até leigos po...
Thiago silva barros_1102133_ads_640_padrao_adapter
Aula 04
Clean code
Algoritmos - Paradigmas de Programação
Open4Education | MC59 - Aprendendo a programar de forma divertida e eficiente...
Anúncio

Semelhante a A importância da programação funcional no dia a-dia (20)

PDF
Programação Funcional - Luiz Stangarlin
PDF
MSP Tech Days 2018 - Programação Funcional com F#
PPTX
Transição - Orientação a objeto para Funcional
PDF
TDC2018SP | Trilha Modern Web - Programacao funcional com Javascript - Seu co...
PPTX
F# para devs c#
PDF
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
PPTX
F sharp e o paradigma funcional
DOCX
P funcional
PDF
Programação funcional com swift cocoa heads 24-03
PDF
Functional Programming - Scala
PPTX
DevDay BH 2011 Programação Funcional
PDF
Programação funcional
PPT
Trilha .Net - Programacao funcional usando f#
PPT
Programação Funcional usando F#
PDF
01-Paradigmas.pdf
PDF
Introdução Programação Funcional
PDF
Programação funcional em JavaScript: como e por quê?
PDF
Desmistificando a programação funcional
PDF
TDC2018SP | Trilha Ruby - Programacao funcional com Ruby, potencialize e simp...
PDF
Programação Funcional
Programação Funcional - Luiz Stangarlin
MSP Tech Days 2018 - Programação Funcional com F#
Transição - Orientação a objeto para Funcional
TDC2018SP | Trilha Modern Web - Programacao funcional com Javascript - Seu co...
F# para devs c#
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
F sharp e o paradigma funcional
P funcional
Programação funcional com swift cocoa heads 24-03
Functional Programming - Scala
DevDay BH 2011 Programação Funcional
Programação funcional
Trilha .Net - Programacao funcional usando f#
Programação Funcional usando F#
01-Paradigmas.pdf
Introdução Programação Funcional
Programação funcional em JavaScript: como e por quê?
Desmistificando a programação funcional
TDC2018SP | Trilha Ruby - Programacao funcional com Ruby, potencialize e simp...
Programação Funcional
Anúncio

Mais de Gabriel Schade Cardoso (15)

PPTX
Usando Visão Computacional para Identificar Letras em Libras
PPT
Clean Architecture com .NET Core
PPTX
C# 8 e ML.NET
PPTX
Machine Learning: Classificação de Comentários com Azure ML & Python
PPTX
Desmistificando Machine Learning
PPTX
Programação Funcional usando C# e F#
PPT
Programação Funcional usando C#
PPT
Programação Funcional para Humanos
PPT
Arquitetura Limpa em .NET Core
PPT
Aplicações inteligentes com o Azure Cognitive Services
PPT
Abordagem Funcional para Gerenciamento de Erros em .NET
PPTX
Desmistificando machine learning
PPTX
Uma abordagem funcional para gerenciamento de erros
PPTX
TDC - Desenvolvendo com Kinect
PPTX
Desenvolvendo com Kinect
Usando Visão Computacional para Identificar Letras em Libras
Clean Architecture com .NET Core
C# 8 e ML.NET
Machine Learning: Classificação de Comentários com Azure ML & Python
Desmistificando Machine Learning
Programação Funcional usando C# e F#
Programação Funcional usando C#
Programação Funcional para Humanos
Arquitetura Limpa em .NET Core
Aplicações inteligentes com o Azure Cognitive Services
Abordagem Funcional para Gerenciamento de Erros em .NET
Desmistificando machine learning
Uma abordagem funcional para gerenciamento de erros
TDC - Desenvolvendo com Kinect
Desenvolvendo com Kinect

Último (12)

PPT
Conceitos básicos de Redes Neurais Artificiais
PPTX
Analise Estatica de Compiladores para criar uma nova LP
PDF
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
PPTX
Tipos de servidor em redes de computador.pptx
PDF
Jira Software projetos completos com scrum
PDF
Manejo integrado de pragas na cultura do algodão
PDF
Processos no SAP Extended Warehouse Management, EWM100 Col26
PPTX
Utilizando code blockes por andre backes
PPTX
Viasol Energia Solar -Soluções para geração e economia de energia
PDF
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
PPTX
Proposta de Implementação de uma Rede de Computador Cabeada.pptx
PPTX
Aula 9 - Funções em Python (Introdução à Ciência da Computação)
Conceitos básicos de Redes Neurais Artificiais
Analise Estatica de Compiladores para criar uma nova LP
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
Tipos de servidor em redes de computador.pptx
Jira Software projetos completos com scrum
Manejo integrado de pragas na cultura do algodão
Processos no SAP Extended Warehouse Management, EWM100 Col26
Utilizando code blockes por andre backes
Viasol Energia Solar -Soluções para geração e economia de energia
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
Proposta de Implementação de uma Rede de Computador Cabeada.pptx
Aula 9 - Funções em Python (Introdução à Ciência da Computação)

A importância da programação funcional no dia a-dia