Clojure non è un linguaggio in più: è un modo diverso di pensare al software. Costruito sull'idea che i dati siano immutabili e che un programma sia una sequenza di trasformazioni, vi libera da un'intera categoria di errori - stato che cambia alle vostre spalle, oggetti condivisi, gerarchie fragili - e vi restituisce codice più semplice da leggere, provare e mantenere.
Questo manuale vi accompagna dalla prima espressione digitata nel REPL fino alla scrittura di programmi concorrenti, di macro che generano codice e di applicazioni che girano nel browser con ClojureScript. Non dà per scontato che conosciate già un Lisp né la programmazione funzionale: parte dai fondamenti e li costruisce un mattone alla volta, con esempi brevi e verificabili.
Che cosa imparerete:Il cuore del linguaggio: I tipi di dato e le collezioni immutabili.
Le trasformazioni fondamentali: map, filter, reduce, la pigrizia e i transducer.
La ricorsione idiomatica: Uso di recur, loop e trampoline.
La gestione dello stato: Gestione con atom, ref, agent e var dinamiche.
La concorrenza: Sviluppo con core.async, canali e processi leggeri.
L'astrazione: Namespace, record, protocolli, multimethod e macro.
Validazione e qualità: Validazione dei dati con clojure.spec, interoperabilità con Java e test automatici.
ClojureScript: Lo stesso linguaggio nel browser, con un'introduzione a Reagent.
Ogni capitolo segue un percorso collaudato: una spiegazione che nasce da un problema concreto, esempi commentati, riquadri di approfondimento e una sezione dedicata all'uso dell'intelligenza artificiale (IA) come compagna di studio - non per delegarle il pensiero, ma per imparare a interrogarla bene e a riconoscere quando sbaglia. Al termine di ogni capitolo trovate esercizi svolti e proposti, con soluzioni complete in appendice e corrispondenza verificata uno a uno.
Il codice è pensato per Clojure 1.12 sulla Java Virtual Machine ed è stato controllato con strumenti di analisi statica, perché ogni esempio funzioni davvero quando lo digitate. Le appendici offrono una guida rapida alle funzioni più usate, un glossario dei termini, un repertorio degli errori più comuni con i relativi rimedi e un capitolo pensato per chi arriva da altri linguaggi.
Il volume è organizzato in 30 capitoli raccolti in sei parti - dai fondamenti alla programmazione funzionale, dalla gestione dello stato e della concorrenza all'astrazione e al polimorfismo, fino ai dati, alla qualità e a ClojureScript - e si chiude con sette appendici di consultazione rapida. È un percorso lineare, ma ogni capitolo si regge anche da solo: potete leggerlo di seguito o tornarci come riferimento quando un concetto vi serve sul lavoro.
A chi si rivolge:A chi programma e vuole aggiungere al proprio bagaglio un linguaggio funzionale potente e pragmatico.
A chi viene da Java, Python o JavaScript e cerca un approccio più solido alla gestione dello stato e della concorrenza.
A chi desidera capire davvero perché l'immutabilità sta cambiando il modo di costruire software, e applicarla da subito.
Non servono prerequisiti di programmazione funzionale: serve solo la curiosità di mettere in discussione qualche abitudine. Aprite il REPL e digitate la prima espressione: è nel dialogo con la macchina che Clojure rivela la propria natura.