SlideShare uma empresa Scribd logo
1 de 32
Baixar para ler offline
Programação
Funcional
Introdução ao paradigma e primeiros passos com
Clojure
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
O que é
Programação
Funcional?
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?
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
Imperativo X Funcional
Fundamento Matemático
As funções matemáticas são um
dos pilares do Paradigma
Funcional.
f(x) = x + 2
Fundamento Matemático
As funções matemáticas são um
dos pilares do Paradigma
Funcional.
f(x) = x + 2
f(5) = 5 + 2 = ?
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
Paradigma
Imperativo
Paradigma
Imperativo
Paradigma
Imperativo
Paradigma
Funcional
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
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
Closure
Currying
Currying
Linguagens Funcionais
➔ LISP
➔ Haskell
➔ Clojure
➔ Elixir
➔ Javascript*
➔ Python*
* Não são puramente funcionais
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, ...
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)
Mind Blown Time
Hello World
Hello World
Operadores
Aritméticos
Operadores
Lógicos
If/Else
Loops
Loops
Lazy Functions
Java Interop
Obrigado pela atenção!
Dúvidas?
Contato: victor.hechel@gmail.com

Mais conteúdo relacionado

Mais procurados

Prepare-se para o próximo estágio da evolução PHP
Prepare-se para o próximo estágio da evolução PHPPrepare-se para o próximo estágio da evolução PHP
Prepare-se para o próximo estágio da evolução PHP
Raphael Almeida
 

Mais procurados (19)

Functional programming
Functional programmingFunctional programming
Functional programming
 
Desenvolvimento web e PHP
Desenvolvimento web e PHPDesenvolvimento web e PHP
Desenvolvimento web e PHP
 
Tendências do Mercado de Internet
Tendências do Mercado de InternetTendências do Mercado de Internet
Tendências do Mercado de Internet
 
Nova Infraestrutura JSON: System.JSON na prática
Nova Infraestrutura JSON: System.JSON na prática Nova Infraestrutura JSON: System.JSON na prática
Nova Infraestrutura JSON: System.JSON na prática
 
Groovy stack
Groovy stackGroovy stack
Groovy stack
 
Aula12- PHP
Aula12- PHPAula12- PHP
Aula12- PHP
 
Prepare-se para o próximo estágio da evolução PHP
Prepare-se para o próximo estágio da evolução PHPPrepare-se para o próximo estágio da evolução PHP
Prepare-se para o próximo estágio da evolução PHP
 
Conceitos base de programação - parte 1
Conceitos base de programação - parte 1Conceitos base de programação - parte 1
Conceitos base de programação - parte 1
 
Zend Framework
Zend FrameworkZend Framework
Zend Framework
 
PHP e Ajax com XAJAX
PHP e Ajax com XAJAXPHP e Ajax com XAJAX
PHP e Ajax com XAJAX
 
Programação funcional - o que é? Como aplicar? Quais os benefícios?
Programação funcional - o que é? Como aplicar? Quais os benefícios?Programação funcional - o que é? Como aplicar? Quais os benefícios?
Programação funcional - o que é? Como aplicar? Quais os benefícios?
 
Aula11 - PHP
Aula11 - PHPAula11 - PHP
Aula11 - PHP
 
Ferramentas Livres Para Desenvolvimento com PHP
Ferramentas Livres Para Desenvolvimento com PHPFerramentas Livres Para Desenvolvimento com PHP
Ferramentas Livres Para Desenvolvimento com PHP
 
5 dicas para melhorar a legibilidade de código dos testes automáticos
5 dicas para melhorar a legibilidade de código dos testes automáticos 5 dicas para melhorar a legibilidade de código dos testes automáticos
5 dicas para melhorar a legibilidade de código dos testes automáticos
 
Zephir
ZephirZephir
Zephir
 
Aula10 -PHP
Aula10 -PHPAula10 -PHP
Aula10 -PHP
 
Ruby
RubyRuby
Ruby
 
Curso javascript básico
Curso javascript básicoCurso javascript básico
Curso javascript básico
 
Java 8 e lambdas (palestra Techday 2.0)
Java 8 e lambdas (palestra Techday 2.0)Java 8 e lambdas (palestra Techday 2.0)
Java 8 e lambdas (palestra Techday 2.0)
 

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

Serversidephp pptx2-120418140114-phpapp01
Serversidephp pptx2-120418140114-phpapp01Serversidephp pptx2-120418140114-phpapp01
Serversidephp pptx2-120418140114-phpapp01
joaocarlobarros
 
Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2
PrinceGuru MS
 
Slide Aula - Curso CakePHP
Slide Aula - Curso CakePHPSlide Aula - Curso CakePHP
Slide Aula - Curso CakePHP
Rangel Javier
 

Semelhante a Introdução à programação funcional com Clojure - Victor Hechel Colares - Tchelinux 2019 Rio Grande (20)

Serversidephp pptx2-120418140114-phpapp01
Serversidephp pptx2-120418140114-phpapp01Serversidephp pptx2-120418140114-phpapp01
Serversidephp pptx2-120418140114-phpapp01
 
Mini Curso de PHP
Mini Curso de PHPMini Curso de PHP
Mini Curso de PHP
 
01 aula1 habib
01 aula1 habib01 aula1 habib
01 aula1 habib
 
Painel HHVM, Zephir, PHPNG
Painel HHVM, Zephir, PHPNGPainel HHVM, Zephir, PHPNG
Painel HHVM, Zephir, PHPNG
 
01-Paradigmas.pdf
01-Paradigmas.pdf01-Paradigmas.pdf
01-Paradigmas.pdf
 
Apresentação final
Apresentação finalApresentação final
Apresentação final
 
Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2
 
TDC2018SP | Trilha Modern Web - Programacao funcional com Javascript - Seu co...
TDC2018SP | Trilha Modern Web - Programacao funcional com Javascript - Seu co...TDC2018SP | Trilha Modern Web - Programacao funcional com Javascript - Seu co...
TDC2018SP | Trilha Modern Web - Programacao funcional com Javascript - Seu co...
 
Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.
 
Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5
 
1º GLOBALWEB DEVSUMMIT_ 2021
1º GLOBALWEB DEVSUMMIT_ 20211º GLOBALWEB DEVSUMMIT_ 2021
1º GLOBALWEB DEVSUMMIT_ 2021
 
Ruby & Rails
Ruby & RailsRuby & Rails
Ruby & Rails
 
Pense no futuro: PHP com Zend Framework
Pense no futuro: PHP com Zend FrameworkPense no futuro: PHP com Zend Framework
Pense no futuro: PHP com Zend Framework
 
Apresentação faef
Apresentação faefApresentação faef
Apresentação faef
 
Palestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAPalestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVA
 
Apresentação faef
Apresentação faefApresentação faef
Apresentação faef
 
Removendo o cheiro ruim do seu código - PHPSC Conf 2011
Removendo o cheiro ruim do seu código - PHPSC Conf 2011Removendo o cheiro ruim do seu código - PHPSC Conf 2011
Removendo o cheiro ruim do seu código - PHPSC Conf 2011
 
Slide Aula - Curso CakePHP
Slide Aula - Curso CakePHPSlide Aula - Curso CakePHP
Slide Aula - Curso CakePHP
 
Programando php com excelência
Programando php com excelênciaProgramando php com excelência
Programando php com excelência
 
Solid
SolidSolid
Solid
 

Mais de Tchelinux

Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio GrandeBikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
Tchelinux
 
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
Tchelinux
 

Mais de Tchelinux (20)

Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
 
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio GrandeInsegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
 
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
 
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
 
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio GrandeMe formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
 
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
 
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
 
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
 
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio GrandeConstruindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
 
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio GrandeBikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
 
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
 
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
 
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
 
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
 
Com que ônibus eu vou? Uma gentil introdução ao Python.
Com que ônibus eu vou? Uma gentil introdução ao Python.Com que ônibus eu vou? Uma gentil introdução ao Python.
Com que ônibus eu vou? Uma gentil introdução ao Python.
 
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
 
Não deixe para testar depois o que você pode testar antes.
Não deixe para testar depois o que você pode testar antes. Não deixe para testar depois o que você pode testar antes.
Não deixe para testar depois o que você pode testar antes.
 
Desenvolvendo jogos com pygame
Desenvolvendo jogos com pygameDesenvolvendo jogos com pygame
Desenvolvendo jogos com pygame
 
Essa câmera faz fotos muito boas, né?
Essa câmera faz fotos muito boas, né?Essa câmera faz fotos muito boas, né?
Essa câmera faz fotos muito boas, né?
 
Desenvolvendo Jogos com pygame.
Desenvolvendo Jogos com pygame.Desenvolvendo Jogos com pygame.
Desenvolvendo Jogos com pygame.
 

Último

Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Dirceu Resende
 

Último (7)

From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdfFrom_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
 
Entrevistas, artigos, livros & citações de Paulo Pagliusi
Entrevistas, artigos, livros & citações de Paulo PagliusiEntrevistas, artigos, livros & citações de Paulo Pagliusi
Entrevistas, artigos, livros & citações de Paulo Pagliusi
 
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
 
Palestras sobre Cibersegurança em Eventos - Paulo Pagliusi
Palestras sobre Cibersegurança em Eventos - Paulo PagliusiPalestras sobre Cibersegurança em Eventos - Paulo Pagliusi
Palestras sobre Cibersegurança em Eventos - Paulo Pagliusi
 
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
 
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIAEAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
 
Apostila e caderno de exercicios de WORD
Apostila e caderno de exercicios de  WORDApostila e caderno de exercicios de  WORD
Apostila e caderno de exercicios de WORD
 

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