Em breve na sua biblioteca: Introdução à programação funcional com Clojure

Quer aprender programação funcional?

Há um tempo tenho me dedicado a aprender Clojure e, pela natureza da linguagem, programação funcional. Daí surgiu a ideia de compartilhar os aprendizados num livro: http://programacaofuncional.com.br. Ele será lançado pela Casa do Código.

A proposta do livro é introduzir programação funcional para quem já sabe programar, independente da linguagem que domina. O livro adota Clojure como linguagem padrão, mas há exemplos em outras linguagens para ajudar em comparações e exemplos (Ruby, Java, JavaScript). Ao fim do livro, você será capaz de criar um serviço em Clojure capaz de processar requisições HTTP, gerenciar registros num banco de dados, processar JSON e, claro, implementar suas soluções de forma funcional.

Conteúdo do livro

O que está coberto:

  • Funções como cidadãs de primeira classe (first class citizens)
  • Funções de grandeza maior (higer order functions)
  • Recursão (em detrimento de loops
  • Aplicação parcial de funções (partial)
  • Composição de funções
  • Pureza
  • Imutabilidade
  • Preguiça (laziness)

O livro é dividido em 3 partes:

  • Introdução a Clojure, com exemplos que evoluem em termos de complexidade
  • Conceitos de programação funcional em Clojure
  • Aplicação de Clojure em projetos (com processamento de requisições HTTP, de JSON, bancos de dados, TDD e lançamento para produção)

Por que Clojure?

Há uns anos, enquanto trabalhava na China, fui exposto à programação funcional via Scala. Por ser uma linguagem híbrida (tanto OO, quanto FP), acabava sendo muito influenciado por orientação a objetos. Mesmo em situações onde soluções funcionais seriam mais simples ou mais apropriadas, minha experiência com OO pesava tanto que eu nem cogitava como programação funcional se aplicava ao problema em questão. Não acho que a culpa seja da linguagem, mas sinto que não tive uma boa introdução à PF porque existia uma escolha confortável que me segurava um pouco.

Clojure não me ofereceu a opção de estar na zona de conforto. Tudo bem que o livro Functional Programming for the Object-Oriented Programmer, em Clojure, propõe uma migração suave de paradigmas e pode ser uma boa transição. Mas a mente de programação OO atrapalhou mais que ajudou.

Refletindo um pouco, percebo que me senti mais seguro em dizer que agora eu consigo programar com uma mentalidade funcional foi quando eu fiquei mais tranquilo em aplicar recursão para a resolução de problemas.

Quando chega?

Em breve. As partes 1 e 2 estão escritas. A 3 está em andamento. Daí faremos uma edição técnica e gramatical, e partiremos pra festa de lançamento.

O meu amigo Paulo Caroli tem me ajudado como mentor nessa jornada como escritor. Obrigado, Paulo!

Eu espero que você goste da leitura tanto quanto eu gostei da escrita!

Valeu!