Software

Test: sviluppo, è arrivata l’ora di Clojure

Redazione | 4 Agosto 2014

Software

Le funzioni possono anche avere liste di parametri, ecco qualche esempio > (+ 1 2 3 4 56) 21 > […]

Le funzioni possono anche avere liste di parametri, ecco qualche esempio

> (+ 1 2 3 4 56)
21
> (/ 10 2 5)
1
> (/ 12 4 2)
3/2

Le funzioni si definiscono con defn

> (defn square [x] (* x x))
#'sandbox17930/square
> (square 10)
100

Questo, invece è l’esempio di una funzione anonima invocata dove è definita

> ((fn [x] (* x x)) 10)
100

In effetti, defn è un’abbreviazione di def. Ecco un esempio in cui def definisce il nome e fn definisce la funzione

> (def square (fn [x] (* x x)))
#'sandbox17930/square

Ecco un esempio di funzione applicata a una lista di argomenti, in questo caso la funzione inc, che incrementa una lista di numeri.

> (map inc [1 2 3 4])
(2 3 4 5)

Conclusioni

Clojure, alla fine dei test, si è guadagnato la nostra simpatia. È un ambiente pragmatico che offre il beneficio di un ciclo di produzione leggero, nel modo tipico degli ambienti interpretati, ma con le performance e l’affidabilità  della macchina virtuale Java. Ricordiamo che la Jvm è un ambiente ottimizzato per più di un decennio.

In Clojure il Lisp è il linguaggio di programmazione, cosa che ci piace, ma l’ambiente di esecuzione è quello abituale della macchina virtuale Java, cosa che ci piace ancora di più. Non ci sono nuovi framework da imparare, solo un linguaggio piccolo piccolo.

Le performance dell’ambiente di esecuzione sono eccellenti, come si può verificare sul sito Debian dedicato al confronto fra i vari linguaggi (bit.ly/clojureperf). Si vede che la differenza di prestazioni fra Java e Clojure è microscopica e siamo nella stessa categoria di C#, Go, Scala, Haskell e OCaml, poco dietro il C++.

In sostanza, se ci va di sperimentare un ambiente di esecuzione più dinamico e un linguaggio più leggero e flessibile di Java, possiamo farlo, continuando a lavorare con i soliti strumenti e possiamo anche non dire al nostro cliente che il Jar, che installiamo nel consueto ambiente enterprise (si veda bit.ly/cljdeploy), è stato creato con un linguaggio diverso da Java.
Michele Costabile

< Indietro Successivo >