Dive into Clojure – Lezione 1


Premessa

Questa serie di articoli denominata “Dive into Clojure” ha lo scopo di introdurre il lettore a Clojure e ai concetti base della programmazione funzionale. La decisione di scrivere su Clojure è che lo reputo un buon linguaggio di programmazione ma che in Italia ha poco seguito. La mia aspirazione è creare una serie di lezioni che vadano a comporre un piccolo libro su Clojure che possa essere venduto in una qualche collana pocket (e.g. Apogeo Pocket et simili). Queste lezione non hanno la pretesa di essere esaustive nè sono state scritte da un programmatore esperto Clojure. Vogliono essere solo un mezzo di divulgazione per un linguaggio affascinante.

Cos’è Clojure

La cosa migliore per definire Clojure è attenersi alla definizione che il suo creatore Rich Hickey dà sul sito ufficiale di Clojure:

Clojure is a dynamic programming language that targets the Java Virtual Machine (and the CLR ). It is designed to be a general-purpose language, combining the approachability and interactive development of a scripting language with an efficient and robust infrastructure for multithreaded programming. Clojure is a compiled language – it compiles directly to JVM bytecode, yet remains completely dynamic. Every feature supported by Clojure is supported at runtime. Clojure provides easy access to the Java frameworks, with optional type hints and type inference, to ensure that calls to Java can avoid reflection.
Clojure is a dialect of Lisp, and shares with Lisp the code-as-data philosophy and a powerful macro system. Clojure is predominantly a functional programming language, and features a rich set of immutable, persistent data structures. When mutable state is needed, Clojure offers a software transactional memory system and reactive Agent system that ensure clean, correct, multithreaded designs.

In soldoni Clojure è un dialetto del Lisp, da cui parzialmente eredita sintassi e comandi, ma rimane ancorato al mondo della produttività moderna essendo costruito sulla base di Java. Per chi come me riconosce in Java un linguaggio robusto ma troppo inflazionato ed è stanco di scrivere 400 linee di codice e 1600 parentesi per fare quello che in Python si fa in 20 righe, allora forse Clojure può interessarvi. Clojure incoraraggia la programmazione funzionale, ove cioè le funzioni sono cittadine di prima classe seppur prevede meccanismi che lo rendono adatto a praticamente tutte le situazioni, dal calcolo vettoriale alla scrittura di GUI. Altra caratteristica che rende appetibile Clojure è la possibilità di invocare codice Java e di essere invocato da Java stesso, rendendolo difatto adatto a scrivere piccoli connettori software o più in generale “glue code”.

Perchè dovrei imparare Clojure?

E’ normale chiedersi se lo sforzo di imparare un nuovo linguaggio sia ripagato in qualche modo, in altri termini se il gioco valga la candela, e se stai leggendo queste righe probabilmente una tua idea te la sei fatta o sei semplicemente curioso di imparare. Per rispondere alla domanda d’inizio paragrafo poniti le seguenti domande:

  • Vuoi imparare qualcosa di diverso dai soliti linguaggi di programmazione?
  • Vuoi imparare a programmare seguendo il paradigma funzionale?
  • Vuoi un linguaggio con cui sviluppare applicazioni concorrenti?
  • Vuoi un linguaggio che si interfacci e che possa essere interfacciato con un linguaggio maturo e robusto come Java?
  • Vuoi divertirti?

Se la maggior parte delle tue risposte è “SI” allora sei venuto nel posto giusto. Durante queste lezioni cercherò a mia volta d’imparare cose nuove per potervi proporre esempi pratici e facili e sopratutto divertenti, e questi articoli sono e saranno una buona scusa per approfondire la mia conoscenza verso Clojure e spero inneschino un meccanismo per cui finalmente anche la carta stampata cominci a muoversi investendo su questo linguaggio che per ora è considerato di nicchia. Basti pensare che attualmente l’unico libro in lingua inglese disponibile per Clojure è Programming Clojure edito nel Maggio del 2009. Attualmente altri 2-3 libri sono in stampa e in fase di completamento ma nessuno qui in italia si è ancora interessato. Spero di ricevere qualche commento positivo di persone che come me sono interessate a questo linguaggio.
Nella prossima lezione cominceremo a parlare un pò di programmazione funzionale, installeremo Clojure ed eseguiremo qualche semplice istruzione con il REPL di Clojure.
Ciao e alla prossima,

Alfredo Di Napoli

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...