Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Introdução à programação funcional com Clojure - Victor Hechel Colares - Tchelinux 2019 Rio Grande

20 views

Published on

Nesta palestra iremos abordar os princípios do pensamento funcional, qual a diferença dele com o imperativo e o que faz uma linguagem de programação ser funcional. Também veremos como dar os primeiros passos aplicando esse pensamento através do Clojure, vendo seus principais comandos, estratégias e maneiras de trabalhar.

Victor Hechel Colares esta cursando o terceiro semestre do curso de Tecnologia em Análise e Desenvolvimento de Sistemas (TADS) no IFRS Câmpus Rio Grande e trabalha como desenvolvedor .NET. Em 2018 concluiu o Técnico em Informática para Internet integrado ao Ensino Médio, também no IFRS.

Para mais informações:
https://www.linkedin.com/in/victor-colares-89a412170/

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Introdução à programação funcional com Clojure - Victor Hechel Colares - Tchelinux 2019 Rio Grande

  1. 1. Programação Funcional Introdução ao paradigma e primeiros passos com Clojure
  2. 2. Quem sou eu? ➔ Formado no curso técnico de Informática para Internet no IFRS - Câmpus Rio Grande ➔ Estudante do terceiro semestre do curso de Tecnologia em Análise e Desenvolvimento de Sistemas (TADS) pelo IFRS ➔ Desenvolvedor .NET na Callidus Tecnologia Victor Hechel
  3. 3. O que é Programação Funcional?
  4. 4. Paradigma que se inspira na lógica de funções matemáticas, possuindo uma alta camada de abstração e focando mais no “O que fazer” do que no “Como fazer”. O que é Programação Funcional?
  5. 5. Imperativo X Funcional ➔ Blocos de instruções ➔ Variáveis variam ➔ Métodos são “imprevisíveis” ➔ Métodos só podem ser executados ➔ Foca nas instruções ➔ Código separado por atividades ➔ Variáveis não variam ➔ O retorno da função é fixo ➔ Funções podem trabalhar como variáveis ➔ Foca nas funções
  6. 6. Imperativo X Funcional
  7. 7. Fundamento Matemático As funções matemáticas são um dos pilares do Paradigma Funcional. f(x) = x + 2
  8. 8. Fundamento Matemático As funções matemáticas são um dos pilares do Paradigma Funcional. f(x) = x + 2 f(5) = 5 + 2 = ?
  9. 9. Fundamento Matemático “Todas” as funções no paradigma funcional possuem um retorno que não muda conforme o projeto está rodando. f(x) = x + 2 f(5) = 5 + 2 = 7
  10. 10. Paradigma Imperativo
  11. 11. Paradigma Imperativo
  12. 12. Paradigma Imperativo
  13. 13. Paradigma Funcional
  14. 14. Imutabilidade ➔ Controle maior sobre o estado das variáveis ➔ Facilita o trabalho com multithreading ➔ Auxilia na filosofia das funções retornarem sempre o mesmo valor de acordo com o parâmetro ➔ Garante que as funções sejam puras ➔ Força o desenvolvimento de funções recursivas ➔ Gasta muito espaço na memória
  15. 15. First-Class and High-Order Functions ➔ First-Class Functions: funções que são tratadas como variáveis. ➔ High-Order Functions: funções que recebem uma função como parâmetro, ou retorna uma. ➔ Um dos princípios das funções Lambda. ➔ Introdução de estratégias como: ◆ Closures ◆ Currying
  16. 16. Closure
  17. 17. Currying
  18. 18. Currying
  19. 19. Linguagens Funcionais ➔ LISP ➔ Haskell ➔ Clojure ➔ Elixir ➔ Javascript* ➔ Python* * Não são puramente funcionais
  20. 20. Clojure ➔ Lançada em 2007 por Rich Hickey ➔ Baseada em LISP ➔ Executada pela JVM ➔ Criada pensando em casos de concorrência ➔ Usada em empresas como: Apple, Netflix, Walmart, Atlassian, NuBank, NASA, ...
  21. 21. Instalação ➔ JDK 8 instalado ➔ Instalar o Leiningen (https://leiningen.org/) ➔ Executar o comando: ◆ lein repl ➔ Para criar um novo projeto: ◆ lein new app (nome do projeto)
  22. 22. Mind Blown Time
  23. 23. Hello World
  24. 24. Hello World
  25. 25. Operadores Aritméticos
  26. 26. Operadores Lógicos
  27. 27. If/Else
  28. 28. Loops
  29. 29. Loops
  30. 30. Lazy Functions
  31. 31. Java Interop
  32. 32. Obrigado pela atenção! Dúvidas? Contato: victor.hechel@gmail.com

×