Software

Test: sviluppo, è arrivata l’ora di Clojure

Redazione | 4 Agosto 2014

Software

Le macchine virtuali sono piattaforme più affidabili dei sistemi operativi, secondo Hickey, perché definiscono un sistema di tipi e un […]

Le macchine virtuali sono piattaforme più affidabili dei sistemi operativi, secondo Hickey, perché definiscono un sistema di tipi e un insieme di librerie che astraggono il sistema operativo. Per questo sono più interessanti degli OS stessi per chi investe in un ambiente di sviluppo. Come conferma di questo punto di vista abbiamo la macchina virtuale Java e il modo in cui ha finito per sostituirsi a Unix e Windows presso i grandi clienti.

tshirt clojureLa scelta del Lisp come linguaggio si basa su ottimi motivi, che vanno da quanto già  accennato (la rapidità  di sviluppo in un ambiente così dinamico da non richiedere mai la compilazione quando si modificano i sorgenti) fino all’efficienza dell’architettura nonostante la sua età : realizzare un ambiente Lisp richiede poche risorse e il core del linguaggio è semplicissimo. Clojure non mira alla compatibilità  con un ambiente Lisp in particolare, anzi cestina allegramente questi requisiti in favore della compatibilità  con la Java Virtual Machine. Una scelta condivisibile, dato che Common Lisp e Scheme sono già  disponibili (per esempio, si può provare Kawa, uno Scheme open source). Piuttosto che imbarcarsi in un percorso certamente costellato di problemi di compatibilità , Clojure sceglie l’integrazione con la Jvm. Questo è ancora più corretto considerando che, tradizionalmente, i Lisp fanno piattaforma a sé e portare un ambiente con tutta la sua piattaforma conduce a una duplicazione delle librerie inevitabile. Nel momento in cui si sceglie di usare il Lisp come linguaggio e la Jvm come ambiente operativo, la scelta è logica.

La programmazione funzionale è in voga di questi tempi. Abbiamo visto affermarsi Scala, grazie anche all’endorsement di Twitter, fino a diventare la soluzione più votata per la categoria “i linguaggi che vorrei imparare” nel sondaggio dei Rebel Labs (zeroturnaround.com/rebellabs/java-tools-and-technologies-landscape-for-2014/). Questo, grazie anche al fatto che conoscere Scala è uno skill monetizzabile, e, almeno negli Stati Uniti, può fruttare un colloquio di lavoro.

Uno dei figli di ML, F#, è saldamente fuori dai laboratori e fa parte a tutti gli effetti dell’offerta di linguaggi Microsoft. Abbiamo parlato di lambda e type inference in C++11 e vediamo elementi del paradigma funzionale anche nell’ultimo nato di casa Apple, il linguaggio Swift, da poco presentato alla WWDC 2014.

Quello che rende interessante il modello di programmazione funzionale, oltre all’ovvio focus sulle funzioni, piuttosto che sulle strutture dati, è l’acceso alla memoria.

Alcuni linguaggi, come Clojure, si fondano sull’immutabilità  delle variabili, che possono essere assegnate una sola volta. Anche una lista può essere estesa solo creando un’altra lista. Ci sono modi di realizzare questo modello senza penalizzare le performance in modo avvertibile, riducendo al minimo le copie. Il beneficio di questo approccio è che è possibile ottenere che l’elaborazione di una funzione non abbia effetti secondari sull’ambiente circostante e agisca solo sul suo valore di ritorno. Questo approccio rende il codice sicuro e prevedibile. In alcuni linguaggi, come ML, possiamo assumere che il codice compilato non possa generare errori di run time.

➜ Continua a leggere: Clojure, un ambiente da conoscere

< Indietro Successivo >