SlideShare uma empresa Scribd logo
Programação funcional
E um pouco de JavaScript
Deivis C. Wingert
/DeivisWingert
/Deivis
“Programação funcional, assim como a orientação a
objetos, é uma forma de se pensar em como resolver
problemas”
Um pouco de história
Hoje
Nuvem
Servidores distribuídos
Programação concorrente
Vantagens
Melhor modularidade
Menos sujeito a efeitos colaterais
Reusabilidade
Programação concorrente
Sobre o paradigma
Funções == objeto
Imutabilidade
Recursividade
Lamda
Independência de estado
Sobre o paradigma
- Função é a menor parte de um programa
- Na programação funcional nos preocupamos
em dizer a maquina o que queremos fazer e
não como iremos fazer.
- A execução das expressões é controlada por
condições e recursividade e não iterações
diretas como ocorre nos paradigmas
imperativos.
Sobre o paradigma
- Variáveis e estados imutáveis.
- Funções não dependem do estado do sistema.
- Lambda: funções recebendo e retornando
funções ou resultados das mesmas
Funções de primeira classe
Funções de primeira classe
- Funções mais simples que podem ser
representadas apenas com números.
- São atribuídas a uma variável
- Não e não recebem parâmetros complexos
Funções de alta ordem
Funções de alta ordem
- Funções mais complexas onde pode haver
uma ou mais funções internas.
- Podem ter escopo compartilhado.
- Recebem funções e retornam funções
Clousures
Closures
- Funções que possuem funções filhas que tem
acesso as variáveis do escopo da função pai
- Você pode salvar algum dado dentro de uma
função que é apenas acessível à função de
retorno , isto é, a função retornada mantém
seu ambiente de execução.
- Call-backs podem ser considerados clousures.
Currying
Currying
- Em linhas gerais currying é uma função com
argumentos simples que simplifica outra
função mais complexa.
- Não afeta a função simplificada
Funções puras
Funções puras
- Funções onde dado um ou mais parâmetros de
entrada a será a mesma para toas as vezes que
estes parâmetros forem recebidos.
- Não dependem de variáveis externas, recebem
dados e retornam dados.
- Não causa nem um tipo de efeito colateral
Funções mais comuns
Map
Reduce
Filter
Funções mais comuns
• O JavaScript desde sua versão 5 de 2011,
ECMA-262 passou a implementar, map,
reduce e filter como protótipos de array
Map
- Itera um Array executando uma função de call-
back sobre cada item do Array, retornando uma
lista nova, normalmente modificada.
- A função map() recebe dois parâmetros , onde
primeiro parâmetro é uma função de call-back.
- O segundo parâmetro é utilizado para especificar
o valor para o escopo da função.
- O mais importante são os parâmetros passados
para a função de call-back, o elemento do Array
em si, o índice do Array, e todo o Array (contexto)
Map
• Referência: https://developer.mozilla.org/en-
US/docs/Web/JavaScript/Reference/Global_Objects/Array/map
Filter
- Os parâmetros da função filter são exatamente
os mesmos da função map().
- E como o nome sugere ela filtra alguma coisa
em um array.
- O filtro é criado a partir da logica da função de
call-back passada como parâmetro.
Filter
• Referência: https://developer.mozilla.org/en-
US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter
Reduce
- Itera um Array da mesma maneira que o map,
mas retorna a soma dos resultados da função de
call-back recebida.
- Assim como map, reduce recebe dois
argumentos.
- O primeiro é novamente a função de callback, que
será chamada para cada elemento no Array.
- O segundo parâmetro é o initialValue que será
utilizado para somar ao próximo valor. Caso não
seja informado o primeiro valor do array é o
initialValue.
Reduce
• Referência: https://developer.mozilla.org/en-
US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce
Exemplos
/Deivis/Functional-Programming
Perguntas ?
Obrigado

Mais conteúdo relacionado

PPTX
Programacao funcional
PDF
Padrões de projeto em linguagens funcionais
PDF
Programação funcional em JavaScript: como e por quê?
PDF
Ruby & Rails
PPTX
PPTX
PPT
aula__tecnica_de_programação_algoritmo.ppt
ODP
Aula05-JavaScript
Programacao funcional
Padrões de projeto em linguagens funcionais
Programação funcional em JavaScript: como e por quê?
Ruby & Rails
aula__tecnica_de_programação_algoritmo.ppt
Aula05-JavaScript

Semelhante a Breve introdução a programação funcional com JavaScript (20)

PDF
Introdução ao GraphQL
PDF
TDC2018SP | Trilha Ruby - Programacao funcional com Ruby, potencialize e simp...
PPTX
Introdução à programação funcional
PDF
Programação Funcional - Luiz Stangarlin
PPTX
Aula 8 - Modularização e Funções.pptx
PDF
Palestra Desenvolvimento Ágil para Web com ROR UVA
PDF
Algoritmos e Programação: Subalgoritmos, funções e passagem de parâmetros
PDF
Algoritmos e Programação: Subalgoritmos, funções e passagem de parâmetros
DOCX
Algoritmo e Complexidade - texto Aula1.docx
PPTX
Programação Orientada por Objectos - Aula 1
PPTX
Mapeamento de Objeto para Tabela Relacional
PPTX
SubProgramas
PPTX
PDF
Desenvolvimento em .Net - Acesso a Dados
ODP
Java 8 - Expressões Lambda e Stream API - DevCamp 2014
PDF
Funções em C
PDF
11-codigo-limpo-parte-4.pdf
PPT
Introdução à programação
Introdução ao GraphQL
TDC2018SP | Trilha Ruby - Programacao funcional com Ruby, potencialize e simp...
Introdução à programação funcional
Programação Funcional - Luiz Stangarlin
Aula 8 - Modularização e Funções.pptx
Palestra Desenvolvimento Ágil para Web com ROR UVA
Algoritmos e Programação: Subalgoritmos, funções e passagem de parâmetros
Algoritmos e Programação: Subalgoritmos, funções e passagem de parâmetros
Algoritmo e Complexidade - texto Aula1.docx
Programação Orientada por Objectos - Aula 1
Mapeamento de Objeto para Tabela Relacional
SubProgramas
Desenvolvimento em .Net - Acesso a Dados
Java 8 - Expressões Lambda e Stream API - DevCamp 2014
Funções em C
11-codigo-limpo-parte-4.pdf
Introdução à programação
Anúncio

Último (6)

PDF
apresentacao introducao computacao ead.pdf
PPTX
Curso de Windows 11 resumido na prática.pptx
PDF
Dos requisitos ao código: como criar código rastreável em PHP
DOC
COMO AUTOMATIZR JOGOS SUPER NINTENDO ATRAVES DA PROGRAMAÇÃO
DOC
CODIGO PARA AUTOMATIZAR A JOGABILIDADE SUPER MARIO
PDF
Evolução em código: algoritmos genéticos com PHP
apresentacao introducao computacao ead.pdf
Curso de Windows 11 resumido na prática.pptx
Dos requisitos ao código: como criar código rastreável em PHP
COMO AUTOMATIZR JOGOS SUPER NINTENDO ATRAVES DA PROGRAMAÇÃO
CODIGO PARA AUTOMATIZAR A JOGABILIDADE SUPER MARIO
Evolução em código: algoritmos genéticos com PHP
Anúncio

Breve introdução a programação funcional com JavaScript

Notas do Editor

  • #4: Um paradigma de programação que trata a computação como uma avaliação de funções matemáticas e que evita estados ou dados mutáveis
  • #5: A base do que hoje é a programação funcional foi criada paralelamente por Alan Turing e Alonzo Church, na década de 1930. A primeira linguagem de programação funcional criada para computadores foi LISP, desenvolvida por John McCarthy no Instituto de Tecnologia de Massachusetts (MIT) no fim dos anos 1950. Mas por um bom tempo este paradigma ficou fadado a ser apenas mais um tema acadêmico, por que ? De maneira rápida, sucinta e meio criacionista alguns fatos que sobrepujaram as linguagens funcionais. Computadores lentos e com pouca capacidade A linguagem Assembly deu origem a C, C para C++ e OO, e C++ e OO levando para Java – todas as imperativas e rápidas para os padrões de hardware da época O que levou o LISP e outras linguagens funcionais a serem deixadas de lado por sua lentidão.
  • #6: Evolução brutal do hardware, os computadores agora tem multiprocessadores sofisticados, multi-core com terabytes de memória. A internet e a computação na nuvem
  • #7: Melhor modularidade Menos sujeito a efeitos colaterais Mais facilidade em resolver problemas de programação concorrente, devido a imutabilidade
  • #8: Função é a menor parte de um programa Na programação funcional nos preocupamos em dizer a maquina o que queremos fazer e não como iremos fazer. A execução das expressões é controlada por condições e recursividade e não iterações diretas como ocorre nos paradigmas imperativos. Variáveis e estados imutáveis. Funções não dependem do estado do sistema. Lambda: funções recebendo e retornando funções ou resultados das mesmas
  • #11: Funções mais simples que podem ser representadas apenas com números. São atribuídas a uma variável Não e não recebem parâmetros complexos.
  • #13: Funções mais complexas onde pode haver uma ou mais funções internas. Podem ter escopo compartilhado. Recebem funções e retornam funções
  • #15: Funções que possuem funções filhas que tem acesso as variáveis do escopo da função pai Você pode salvar algum dado dentro de uma função que é apenas acessível à função de retorno , isto é, a função retornada mantém seu ambiente de execução. Call-backs podem ser considerados clousures.
  • #17: Em linhas gerais currying é uma função com argumentos simples que simplifica outra função mais complexa. Não afeta a função simplificada
  • #19: Funções onde dado um ou mais parâmetros de entrada a será a mesma para toas as vezes que estes parâmetros forem recebidos. Não dependem de variáveis externas, recebem dados e retornam dados. Não causa nem um tipo de efeito colateral 
  • #21: O js desde sua versão 5 de 2011, ECMA-262 passou a implementar, map, reduce e filter como protótipos de array Map. Itera um Array executando uma função de call-back sobre cada item do Array, retornando uma lista nova, normalmente modificada. A função map() recebe dois parâmetros , onde primeiro parâmetro é uma função de call-back. O segundo parâmetro é utilizado para especificar o valor para o escopo da função. O mais importante são os parâmetros passados para a função de call-back, o elemento do Array em si, o índice do Array, e todo o Array (contexto) . Filter Os parâmetros da função filter são exatamente os mesmos da função map(). E como o nome sugere ela filtra alguma coisa em um array. O filtro é criado a partir da logica da função de call-back passada como parâmetro. Reduce. Itera um Array da mesma maneira que o map, mas retorna a soma dos resultados da função de call-back recebida. Assim como map, reduce recebe dois argumentos. O primeiro é novamente a função de callback, que será chamada para cada elemento no Array. O segundo parâmetro é o initialValue que será utilizado para somar ao próximo valor. Caso não seja informado o primeiro valor do array é o initialValue.