SlideShare uma empresa Scribd logo
Introdução
Myself
------
Luiz Stangarlin
Trabalho
--------
principal: 'Full-Stack' Developer
secundario: Networking, Infosec, Sysadmin (private & public cloud)
Estudo
------
Computação Grafica, VR/AR.
Programming Languages & Compilers (Here be dragons!)
Hobby
-----
Musica - electric guitar
Eletrônica
Games
Motivo
Dar um panorama da área de programação e introduzir o paradigma e como ele
se encaixa no cenário da computação.
É mais fácil aprender quando se ter um motivo.
Comparar como um mesmo conceito pode ser implementado sobre o paradigma
funcional e OO ao mesmo tempo.
Computação
Antiga busca matematica por uma forma de resolver teoremas automaticamente.
Foi provado que nem todos teoremas podem ser automaticamente provados.
Porem alguns podem, usando processamento de simbolos, o que funda a
Computação.
Computação
Alonzo Church Turing
------------- ------
Matematica Tecnologia/Ferramentas
O que fazer Como fazer
Top-down Bottom-up
Matematico Hacker
Teoria Prática
Imperativo/OO Funcional
Church-Turing thesis, prova que ambos as duas formas são equivalentes.
A computação é a junção das duas formas de pensar.
Programação funcional
Circa ~1970, todos os principais paradigmas (Imperativo, OO, FP)
Porque agora?
. O hardware era limitado no começo.
. O hardware teve um incrível desenvolvimento, possibilitou
grande sucesso do paradigma imperativo, e ocultou problemas.
. Crescimento vertical
O que ocorreu?
. Hardware agora é menos limitado
. Dark-Silicon, Von Neumann Bottleneck
. Crescimento horizontal
. Mais nucleos, processamento paralelo, GPU
Complexidade
. Velho inimigo (crise do software I)
Linguagens, Paradigmas e conceitos
Linguagens, Paradigmas e conceitos
Linguagens, Paradigmas e conceitos
Uma forma de mapear e entender a grande quantidade de ferramentas
e linguagens.
Uma forma de categorizar as linguagens, e comparar suas características.
Mais importante do que saber tudo o que existe, é aprender a navegar na
"bagunça".
(Meu objetivo silly era aprender todas, então um método era necessário)
O que é FP?
O paradigma descreve o que e não como é feito, sendo assim declarativo.
. First class functions (math: high-order function).
Função são dados, lambdas.
. Pure functions.
Funções cuja saída é apenas resultado de seus parâmetros.
. Immutable data.
Sem variáveis, retornar novos dados no retorno das funções.
(pesquisa: estruturas de dados imutáveis eficientes
para evitar cópias excessivas)
. Composição,
Input de uma função gera a saída da próxima,
função usa outras funções e retorna uma nova função.
. Closures.
Quando uma variáveis usadas na função são vinculadas ao escopo
O que é FP?
. First class functions
. Immutable data
. Pure functions
. Composição
O que é FP?
. Closures
Conceito: SOLID
S - Single responsibility principle
O - Open/closed principle
L - Liskov substitution principle
I - Interface segregation principle
D - Dependency inversion principle
Barbara Liskov (et al.)
Princípio da responsabilidade única
A classe/função/módulo deve ter apenas uma responsabilidade.
Uma função pura é algo com uma responsabilidade, transformar
sua entrada na saída. O que poderia ser mais simples?
Princípio Aberto/Fechado
Entidades de software devem ser abertas (ter a possibilidade)
para extensão e fechadas para modificação.
Em FP ao se usar funções de primeira ordem já se respeita este
princípio, tu não precisa modificar a função se tu pode criar
uma nova função que usa a outra e estende o comportamento dela.
Princípio de substituição de Liskov
Objeto em um programa devem ser substituíveis por instâncias
de seus subtipos sem que o comportamento correto do software
se altere.
Em FP, o mesmo princípio se aplica ao se passar lambdas.
Princípio de substituição de Liskov
Simulando polimorfismo em FP.
Interface segregation principle
Muitas interfaces específicas são melhores que uma única
interface de proposito geral.
Este é o principio de FP ao se levar ao limite a ideia,
cada função é uma interface específica por sí só.
Princípio de inversão de dependência
Se deve depender na abstração e não na implementação concreta.
Aqui é onde o paradigma brilha, Funções de primeira classe
são exatamente o princípio de inversão em ação, é tão natural
expressar isto em FP, que quase não se percebe.
Migrando para FP
Ao mover de OO para FP:
. Composição ao invés de herança.
(na verdade mesmo em OO, tu deve considerar este ponto)
. Pense sobre dados imutáveis.
Os dados fluem entre as functions, ao invés de usar "=" atribuição.
. Funções fazem um único trabalho, ao invés de ter classes.
. Use o princípio de substituição de Liskov.
Finalizando
Princípios e conceitos sobre desenvolvimento de software se
aplicam a vários paradigmas.
Se você programa em OO e conhece estes princípios da boa
construção de software, você já tem o que é preciso para
aprender e usar FP.
Sources
Referencias:
http://blog.ploeh.dk/2014/03/10/solid-the-next-step-is-functional/
https://fsharpforfunandprofit.com/fppatterns/
https://pt.slideshare.net/velvetflair/functional-programming-fundamentals
https://medium.com/javascript-scene/the-two-pillars-of-javascript-pt-2-funct
ional-programming-a63aa53a41a4
https://gist.github.com/Byte-666/f66c689e8a2fcd5cf1a0450d23f09b7e
https://www.info.ucl.ac.be/~pvr/VanRoyChapter.pdf
https://www.youtube.com/watch?v=ibRar7sWulM (Barbara Liskov: Programming the
Turing Machine)
Extra:
https://www.youtube.com/watch?v=IOiZatlZtGU (Philip Wadler: Propositions as
Types)
https://www.youtube.com/watch?v=VpzhH9CXOy0 (Paulo Torrens: Lógica de
Programação não existe)
https://github.com/papers-we-love/papers-we-love/blob/master/design/out-of-t
he-tar-pit.pdf

Mais conteúdo relacionado

PPT
Paradigmas de Linguagens de Programacao - Aula #6
PPT
Paradigmas de linguagens de programacao - aula#10
PPT
Paradigmas de Linguagens de Programacao- Aula #8
PPT
Paradigmas de Linguagens de programacao - Aula #2
PDF
Programacao Funcional em Java, Expressoes Lambda
PDF
Programação funcional - o que é? Como aplicar? Quais os benefícios?
PDF
Functional Programming - Scala
PPTX
Apresentação faef
Paradigmas de Linguagens de Programacao - Aula #6
Paradigmas de linguagens de programacao - aula#10
Paradigmas de Linguagens de Programacao- Aula #8
Paradigmas de Linguagens de programacao - Aula #2
Programacao Funcional em Java, Expressoes Lambda
Programação funcional - o que é? Como aplicar? Quais os benefícios?
Functional Programming - Scala
Apresentação faef

Semelhante a Programação Funcional - Luiz Stangarlin (20)

PDF
TDC2018SP | Trilha Ruby - Programacao funcional com Ruby, potencialize e simp...
PPT
Apresentação final
PPT
Paradigmas De Linguagem De Programação.
PPT
Apresentação faef
PDF
Código limpo: Funções Capítulo 3
PPT
Dojo solid
ODP
Linguagem Python
PDF
Boas práticas no desenvolvimento de software
PPTX
A importância da programação funcional no dia a-dia
PDF
Introdução Programação Funcional
PDF
Desmistificando a programação funcional
PDF
Livro - código limpo caps (3,4) (clean code)
PPTX
Introdução à programação funcional
PDF
Refatoração - aquela caprichada no código
PDF
Semanaupecaruaru2013 c++para iniciantes
PPT
Java aula 2
PDF
TDC 2015 São Paulo - Clean Code para Testers
PPT
Resumo OpenMP
PPT
Logica Programação. ...
PPT
CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃO
TDC2018SP | Trilha Ruby - Programacao funcional com Ruby, potencialize e simp...
Apresentação final
Paradigmas De Linguagem De Programação.
Apresentação faef
Código limpo: Funções Capítulo 3
Dojo solid
Linguagem Python
Boas práticas no desenvolvimento de software
A importância da programação funcional no dia a-dia
Introdução Programação Funcional
Desmistificando a programação funcional
Livro - código limpo caps (3,4) (clean code)
Introdução à programação funcional
Refatoração - aquela caprichada no código
Semanaupecaruaru2013 c++para iniciantes
Java aula 2
TDC 2015 São Paulo - Clean Code para Testers
Resumo OpenMP
Logica Programação. ...
CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃO
Anúncio

Mais de Dev PP (16)

PPTX
Flaviano Redressa - Ionic: Porquê e como utilizar esse framework para desenvo...
PPTX
As Possibilidades do Blockchain
PDF
Desenvolvimento Gereencial - A importancia da Visão Sistêmica Para o seu Negócio
PDF
Intodução ao React
PPSX
E-commerce no Brasil
PDF
Sistemas de Comunicação em Tempo Real
PDF
SCRUM - Produzindo Mais com Menos Tempo
PDF
Banco de Dados Realtime com Firebase
PDF
HTML Robusto e Elegante com Template Engines
PPTX
Infraestrutura com AWS
PDF
React Native - Produtividade e eficiência no desenvolvimento mobile
PDF
SEO para Devs
PPTX
Criptografia
PDF
Acessibilidade na web
PDF
Construindo uma Carreira Internacional em Desenvolvimento
PDF
Progressive Web Apps (PWA)
Flaviano Redressa - Ionic: Porquê e como utilizar esse framework para desenvo...
As Possibilidades do Blockchain
Desenvolvimento Gereencial - A importancia da Visão Sistêmica Para o seu Negócio
Intodução ao React
E-commerce no Brasil
Sistemas de Comunicação em Tempo Real
SCRUM - Produzindo Mais com Menos Tempo
Banco de Dados Realtime com Firebase
HTML Robusto e Elegante com Template Engines
Infraestrutura com AWS
React Native - Produtividade e eficiência no desenvolvimento mobile
SEO para Devs
Criptografia
Acessibilidade na web
Construindo uma Carreira Internacional em Desenvolvimento
Progressive Web Apps (PWA)
Anúncio

Último (8)

PPTX
Mecânico de Manutenção de Equipamentos.pptx
PPTX
Arquitetura de computadores - Memórias Secundárias
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PPTX
Viasol Energia Solar -Soluções para geração e economia de energia
PDF
Manejo integrado de pragas na cultura do algodão
PDF
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
Mecânico de Manutenção de Equipamentos.pptx
Arquitetura de computadores - Memórias Secundárias
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Viasol Energia Solar -Soluções para geração e economia de energia
Manejo integrado de pragas na cultura do algodão
Termos utilizados na designação de relação entre pessoa e uma obra.pdf

Programação Funcional - Luiz Stangarlin