Skip to content

Latest commit

 

History

History
127 lines (98 loc) · 4.31 KB

File metadata and controls

127 lines (98 loc) · 4.31 KB

Introdução - Clojure for the Brave and True

O Que É Clojure?

Clojure é uma linguagem de programação que promete resolver muitos problemas comuns da programação moderna:

  • Hierarquias de classes incompreensíveis
  • Bugs causados por mutação de estado (heisenbugs)
  • Condições de corrida (race conditions)
  • Problemas de concorrência

Os Quatro Labirintos do Aprendizado

Para dominar Clojure, você precisa navegar por quatro áreas fundamentais:

1. 🛠️ A Floresta das Ferramentas

  • Objetivo: Configurar um ambiente de desenvolvimento eficiente
  • Conteúdo: Setup do ambiente, REPL, editores
  • Por que importante: Feedback rápido acelera o aprendizado

2. ⛰️ A Montanha da Linguagem

  • Objetivo: Dominar sintaxe, semântica e estruturas de dados
  • Conteúdo: Sintaxe Lisp, macros, construções de concorrência
  • Por que importante: Base fundamental para programar em Clojure

3. 🕳️ A Caverna dos Artefatos

  • Objetivo: Construir, executar e distribuir programas
  • Conteúdo: Build tools, bibliotecas, JVM, interop com Java
  • Por que importante: Criar aplicações reais e reutilizar código

4. ☁️ O Castelo nas Nuvens da Mentalidade

  • Objetivo: Pensar como um Clojurista
  • Conteúdo: Programação funcional, filosofia Lisp, simplicidade
  • Por que importante: Resolver problemas de forma eficaz e elegante

Abordagem Pedagógica do Livro

✅ Dessert-First (Sobremesa Primeiro)

  • Ferramentas e conceitos para começar imediatamente
  • Programas reais desde o início
  • Aprendizado prático e imediato

✅ Zero Conhecimento Prévio

  • Não assume experiência com JVM
  • Não assume conhecimento de programação funcional
  • Não assume experiência com Lisp
  • Explica tudo em detalhes

✅ Exercícios Interessantes

  • Ao invés de exemplos "do mundo real"
  • Exercícios divertidos e memoráveis
  • Exemplos: atacar hobbits, rastrear vampiros brilhantes

Estrutura do Livro

📚 Parte I: Configuração do Ambiente (Cap. 1-2)

  • Cap. 1: Building, Running, e o REPL
  • Cap. 2: Como Usar Emacs

📚 Parte II: Fundamentos da Linguagem (Cap. 3-8)

  • Cap. 3: Crash Course - sintaxe básica e estruturas
  • Cap. 4: Funções centrais em profundidade
  • Cap. 5: Programação funcional
  • Cap. 6: Organização de projetos e namespaces
  • Cap. 7: Leitura, avaliação e macros
  • Cap. 8: Escrevendo macros

📚 Parte III: Tópicos Avançados (Cap. 9-13)

  • Cap. 9: Programação concorrente e paralela
  • Cap. 10: Gerenciamento de estado (Atoms, Refs, Vars)
  • Cap. 11: core.async
  • Cap. 12: Interoperabilidade com Java
  • Cap. 13: Abstrações (Multimethods, Protocols, Records)

Características Únicas do Clojure

🔑 É um Lisp

  • Sintaxe minimalista baseada em s-expressions
  • Código é dados (homoiconicidade)
  • Macros poderosos para metaprogramação

🔑 Programação Funcional

  • Imutabilidade por padrão
  • Funções como cidadãos de primeira classe
  • Evita efeitos colaterais

🔑 Hospedado na JVM

  • Acesso a todo ecossistema Java
  • Performance da JVM
  • Interoperabilidade com Java

🔑 Concorrência Simplificada

  • Estruturas de dados imutáveis
  • STM (Software Transactional Memory)
  • Ferramentas como core.async

Como Estudar

💡 Dicas de Estudo

  1. Use o REPL constantemente - especialmente Cap. 3-8
  2. Digite os exemplos - não apenas leia
  3. Experimente variações - mude os exemplos
  4. Pratique imediatamente - aplique o que aprendeu

📅 Cronograma Sugerido

  • Semanas 1-2: Ambiente + Crash Course (Cap. 1-3)
  • Semanas 3-4: Funções + Programação Funcional (Cap. 4-6)
  • Semanas 5-6: Macros (Cap. 7-8)
  • Semanas 7-9: Tópicos Avançados (Cap. 9-13)

Por Que Clojure?

🎯 Benefícios Principais

  • Código mais simples: Menos complexidade acidental
  • Menos bugs: Imutabilidade reduz erros
  • Concorrência segura: Ferramentas built-in para paralelismo
  • Produtividade: REPL-driven development
  • Expressividade: Macros permitem criar DSLs

🎯 Usado Por

  • Netflix (sistemas distribuídos, microserviços, UIs)
  • Empresas que precisam de alta concorrência
  • Sistemas que requerem confiabilidade
  • Projetos que se beneficiam de programação funcional

Próximo: Capítulo 1 - Building, Running, and the REPL