Clojure: Introdução à Programação Funcional

Você está a fim de aprender Clojure e programação funcional??

Estou criando uma série de cursos e o primeiro deles já está quase pronto!

Preencha seu e-mail no formulário abaixo para eu saber que você tem interesse e irei te avisar assim que estiver disponível.

Quer saber quando o curso estiver disponível? Inscreva-se abaixo!

Ficou na dúvida? Confira abaixo o conteúdo programático do primeiro curso que estou finalizando.

Objetivo do primeiro módulo do curso

Aprender os fundamentos de programação em Clojure e os conceitos básicos do paradigma funcional.

Ao final do curso você deve ser capaz de:

Aula 1: Introdução

Objetivos:

Conseguir implementar e executar programas básicos através do REPL/clj e ser capaz de construir suas próprias funções e imprimir textos utilizando a linguagem Clojure.

Introdução

Objetivos:

Vetores

Criando nossas próprias funções

Aula 2: Imutabilidade

Objetivos:

Entender a importância e os potenciais benefícios e impactos de se utilizar estruturas de dados imutáveis.

Imutabilidade

Aula 3: Funções puras

Objetivos:

Entender o que são, como identificar e conhecer as vantagens das funções puras e os motivos de priorizarmos o seu uso em detrimento de funções impuras.

Funções puras

Aula 4: Conhecendo o let

Objetivos:

Conhecer o let e entender a importância de extraírmos símbolos e ter noções também de escopo das definições.

Binding de símbolos com let

Aula 5: Condicionais

Objetivos:

Aprender a criar expressões condicinais em duas diversas formas em Clojure e entender o que é uma expressão condicional.

Condicionais

Aula 6: Utilizando uma IDE

Objetivos:

Conseguir instalar e configurar a IDE IntelliJ e o plugin Curvice e conhecer os prinpais atalhos e se tornar capaz de navegar pela IDE, incluindo criar novos projetos, escrever códigos e executá-los através do REPL integrado à IDE.

Instalando o IntelliJ e o plugin Cursive

Atalhos do IntelliJ e Cursive

Aula 7: Introdução aos testes automatizados

Objetivos:

Entender a importância de se criar testes, como criá-los utilizando Clojure e noções de TDD (Desenvolvimento Guiado por Testes).

Testes Automatizados e Asserts

Aula 8: Thuthy e Falsey

Objetivos:

Entender que em Clojure existe o tipo boleano (true/false) mas existem muitas ocasiões onde a interepretação do que é true e o que é false é um pouco mais abrangente e nessas situações, ao invés de utilizarmos os termos true e false usando o thuthy e falsey.

True, False, Thuthy, Falsey

Aula 9: Conhecendo mais sobre os vetores

Objetivos:

Ser capaz de realizar mais operações utilizando vetores e conhecer a ideia da abordagem wholemeal (refeição completa).

Mais sobre Vetores

Wholemeal

Aula 10: Linguagem dinâmica e consulta de tipos

Objetivos:

Conhecer as vantagens e desvantagens de Clojure ser uma linguagem dinâmica e ser capaz de consultar os tipos através do REPL.

Tipos dos dados

Aula 11: Namespaces, símbolos e funções privadas

Objetivos:

Começar a compreender a importância de estruturar o código, separando as funções em arquivos e namespaces diferentes.

O que é e como definir um namespace

Funções privadas

Aula 12: Higher order functions

Objetivos:

Funções de primeira ordem

Começar a ter contato com funções de primeira ordem: entender o que são e como criá-las e a sua importância no desenvolvimento de software utilizando o paradigma funcional.

Aula 13: Map, Filter, Reduce

Map Filter Reduce

Objetivos:

Ter os primeiros contatos com 3 funções fundamentais para o desenvolvimento de software no paradigma funcional: map, filter e reduce.

Aula 14: Mapas

Objetivos:

Conhecer e saber como e quando utilizar uma das principais estruturas de dados do Clojure: os mapas.

Aula 15: Mais sobre os Mapas

Objetivos:

Explorar mais a fundo esta que é uma das estruturas de dados mais utilizadas durante o desenvolvimento de softwares quando estamos utilizando a linguagem Clojure.

Aula 16: Threading last: uma outra forma de encadear funções

Objetivos:

Perceber que a composição de muitas funções pode tornar a leitura do código muito complicada e saber aplicar o conceito de Threading first para compor funções de uma forma mais simples.

Aula 17: Calculo do IMC

Objetivos:

Ser capaz de acompanhar o desenvolvimento de um software simples utilizando as técnicos como TDD e REPL Driven Development.

Exemplo IMC com Clojure

Aula 18: Funções públicas e privadas

Objetivos:

Aprender noções de boas práticas de visibilidade das funções e compreender quando uma funções deve ser definida como pública e quando pode ser privada.

Aula 19: Mais sobre mapas, map, filter e reduce: Loja de brinquedos

Objetivos:

Ser capaz de acompanhar o desenvolvimento de um outro software explorando mais o uso de estrutura de dados mapa e as funções map, filter e reduce.

Exemplo Calculo preço total da compra em uma loja de brinquedos

Aula 20: Conclusões

Objetivos:

Conhecer os possíveis caminhos para continuar os estudos da linguagem Clojure e do Paradigma Funcional.

Sobre o autor

Meu nome é Marcio Frayze David e sou autor deste curso.

Me formei em Ciência da Computação em 2005 e terminei meu mestrado em Engenharia Elétrica (com ênfase em Inteligência Artificial) em 2009.

Desenvolvo softwares há mais de uma década. Desde 2009 trabalho como analista de sistemas no Serviço Federal de Processamento de Dados (SERPRO), onde ajudo diversas equipes a implementar soluções para clientes como a Receita Federal do Brasil e o Departamento Nacional de Trânsito (DENATRAN). Embora durante a maior parte do meu trabalho passe desenvolvendo softwares no backend, também desenvolvo frontends e aplicativos móveis (para iOS e Android).