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 ...
Sobre o paradigma
- Variáveis e estados imutáveis.
- Funções não dependem do estado do sistema.
- Lambda: funções recebend...
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 v...
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 compartilh...
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...
Currying
Currying
- Em linhas gerais currying é uma função com
argumentos simples que simplifica outra
função mais complexa.
- Não ...
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 ...
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 pr...
Map
- Itera um Array executando uma função de call-
back sobre cada item do Array, retornando uma
lista nova, normalmente ...
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...
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.
- A...
Reduce
• Referência: https://developer.mozilla.org/en-
US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce
Exemplos
/Deivis/Functional-Programming
Perguntas ?
Obrigado
Próximos SlideShares
Carregando em…5
×

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

389 visualizações

Publicada em

Introdução aos conceitos básicos de programação funcional que podem ser utilizados no JavaScript(ECMA 262 5.1).

Publicada em: Software
0 comentários
2 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
389
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
2
Comentários
0
Gostaram
2
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

  • 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
  • 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.


  • 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
  • Melhor modularidade
    Menos sujeito a efeitos colaterais
    Mais facilidade em resolver problemas de programação concorrente, devido a imutabilidade
  • 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

  • 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 mais complexas onde pode haver uma ou mais funções internas.
    Podem ter escopo compartilhado.
    Recebem funções e retornam funções
  • 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.
  • 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 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 
  • 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.
  • Breve introdução a programação funcional com JavaScript

    1. 1. Programação funcional E um pouco de JavaScript
    2. 2. Deivis C. Wingert /DeivisWingert /Deivis
    3. 3. “Programação funcional, assim como a orientação a objetos, é uma forma de se pensar em como resolver problemas”
    4. 4. Um pouco de história
    5. 5. Hoje Nuvem Servidores distribuídos Programação concorrente
    6. 6. Vantagens Melhor modularidade Menos sujeito a efeitos colaterais Reusabilidade Programação concorrente
    7. 7. Sobre o paradigma Funções == objeto Imutabilidade Recursividade Lamda Independência de estado
    8. 8. 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.
    9. 9. 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
    10. 10. Funções de primeira classe
    11. 11. 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
    12. 12. Funções de alta ordem
    13. 13. 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
    14. 14. Clousures
    15. 15. 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.
    16. 16. Currying
    17. 17. 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
    18. 18. Funções puras
    19. 19. 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
    20. 20. Funções mais comuns Map Reduce Filter
    21. 21. 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
    22. 22. 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)
    23. 23. Map • Referência: https://developer.mozilla.org/en- US/docs/Web/JavaScript/Reference/Global_Objects/Array/map
    24. 24. 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.
    25. 25. Filter • Referência: https://developer.mozilla.org/en- US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter
    26. 26. 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.
    27. 27. Reduce • Referência: https://developer.mozilla.org/en- US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce
    28. 28. Exemplos /Deivis/Functional-Programming
    29. 29. Perguntas ? Obrigado

    ×