Se você se interessa em aprender a escrever programas melhores, Programação Funcional tem muito a lhe oferecer. Com ela, você pode produzir códigos mais robustos, menos suscetíveis a erros e expandir sua forma de pensar. E Clojure possui recursos que nos ajudam a manter o foco na Programação Funcional: sua sintaxe, que é simples e muito diferente das linguagens mais populares, o ganho em desempenho com as estruturas de dados imutáveis e oportunidade de paralelismo. Clojure, principalmente, roda na máquina virtual Java, então podemos utilizar bibliotecas escritas em Java. Sua ferramenta de automação de tarefas e gerenciamento de dependências, Leiningen, é bastante flexível e completa, e provê suporte ao repositório de bibliotecas do Maven.
Neste livro, Gregório Melo oferece uma introdução à Programação Funcional, utilizando a linguagem Clojure para demonstrar os princípios deste paradigma. Você aprenderá novas práticas e conceitos que vão ajudá-lo a escrever aplicações melhores, com exemplos de domínio, funções e requisições HTTP, seguindo uma abordagem de desenvolvimento guiado por teste. Se você tem a mente aberta para uma nova linguagem de programação e acredita que uma sintaxe e paradigma novos o levarão a novos horizontes, este livro é para você.
Ainda estou tentando entender que livro é esse - ou que tipo de livro ele quer ser. O título dá a entender que é uma introdução - a Clojure e a programação funcional. E a primeira parte faz isso, com exemplos muito bobinhos, mas jogando na página os elementos sintáticos da linguagem, sem nenhuma didática.
Depois, vemos um pouco de discussão teórica sobre linguagens funcionais e como isso se manifesta na linguagem em si. Ok, conseguimos seguir a linha de raciocínio, com alguns snippets de código aqui e ali. O autor parece conhecer do assunto e escrever razoavelmente bem.
De repente... Temos exemplos de aplicações escritas em Clojure, com um milhão de plugins, macros e funções diversas, com zero contextualização do que estava sendo feito. O autor vai mexendo nos arquivos aos poucos, narrando como ele está escrevendo o programa, mas sem qualquer referência ou discussão sobre os benefícios de usar uma linguagem funcional. Eu confesso que tentei acompanhar digitando eu mesmo, mas em algum momento errei a sintaxe e desisti de encontrar qual parênteses estava faltando. Como não consigo entender o que estou escrevendo e estou copiando cegamente exemplos de um livro, fica difícil corrigir de fato.
Não consigo achar justificativa para exemplos tão complexos em um livro que se diz "introdutório". Por que não começar com aplicações que conseguem usar apenas a biblioteca padrão? Por que, quando o autor apresenta vetores e mapas, não começar já ali a construir aos poucos aplicações, em vez de dar esse salto astronômico entre "exemplos de uma linha" e "aplicação web"?
Eu sempre achei Lisp muito interessante e estou sempre procurando maneira de fazer os softwares que desenvolvo melhor estruturados, e quero acompanhar a ascensão da programação funcional. Esse livro não me ajuda nesse caminho.