Common Lisp – Come iniziare

glossy430Come si può iniziare ad utilizzare il Common Lisp? Dove informarsi? Di quali programmi e manuali fornirsi? Ecco le principali domande a cui tenterò di dare risposta in questo articolo.

Common Lisp?

Il Common Lisp è un linguaggio di programmazione fantastico che consiglio di provare a chiunque (sia sviluppatori per hobby che professionisti). Tuttavia in questo articolo non mi dilungherò a descrivere le caratteristiche del Common Lisp, quanto a fornire qualche suggerimento per chi vuole avvicinarsi a questo linguaggio. Posso però dare un consiglio anche a chi sente il nome “Common Lisp” per la prima volta e non sa se provarlo o meno. A tutti gli indecisi o ai semplici curiosi consiglio di leggere l’introduzione a Practical Common Lisp di Peter Seibel, accessibile tramite questo indirizzo.

Informazioni sul linguaggio

Come prima cosa per iniziare ad utilizzare il Common Lisp c’è bisogno di un manuale il più possibile chiaro, soprattutto per chi, come nel nostro caso, si deve avvicinare per la prima volta. Il mio consiglio è Practical Common Lisp di Peter Seibel, accessibile gratuitamente via internet o a pagamento per la versione stampata.

Si tratta sicuramente di un libro eccellente, che offre un’ampia panoramica sul Common Lisp e descrive a fondo le sue caratteristiche sempre in modo chiaro e preciso. Probabilmente è anche il migliore libro per principianti, poichè espone l’intero linguaggio un poco alla volta senza dare mai nulla per scontato.

Per avere invece informazioni su ogni singola funzione, macro ecc. presente nella specifica del Common Lisp è disponibile l’Hyperspec. Anche se non è sempre molto chiara, l’Hyperspec è la fonte più attendibile per ottenere informazioni sul Common Lisp. (P.s. Google è sempre un’ottima alternativa).

Compilatore

Il Common Lisp è un linguaggio compilato e per essere utilizzato ha bisogno quindi di un compilatore. Io consiglio SBCL, un software libero che permette di compilare il Lisp in codice macchina. Funziona principalmente sui sistemi operativi Unix (Linux, BSD, Mac OS…) ma è in sviluppo un port per Windows (stabile ma senza il supporto per i thread). Offre, oltre ad un pieno supporto dello standard del linguaggio, alcune estensioni che permettono ad esempio l’esecuzione di più processi e l’utilizzo di un’interfaccia per accedere alle librerie scritte in C/C++. Offre anche la possibilità di creare programmi eseguibili direttamente, che non richiedono la presenza di SBCL sulla macchina dell’utente (poichè è incluso completamente nell’eseguibile stesso).

Esistono comunque altre alternative, sia libere (come CMUCL, CLISP, GCL) che a pagamento (AllegroCL, Lispworks).

IDE

Un’altra cosa importantissima è l’ambiente di sviluppo (IDE – Integrated Development Environment). Un IDE adatto dovrebbe fornire la possibilità di scrivere codice con la sintassi colorata e posizionata correttamente, di eseguirlo, di visualizzare i messaggi di debug e di ispezionare le strutture di dati. Dovrebbe, inoltre, funzionare su Linux, Windows e Mac OS ed essere un software libero.

Io ho provato un po’ di tutto, e in particolare: Emacs, Cups (Eclipse) e VIM.

  • Emacs: Emacs è un ambiente ottimo per chi vuole programmare in Common Lisp. Soddisfa tutti i requisiti che ho elencato sopra e in più è molto personalizzabile (tramite un linguaggio di programmazione molto simile al Common Lisp). Se vogliamo trovare qualche difetto possiamo però dire che, per essere utilizzato in modo proficuo, necessita di un po’ di studio e alcune caratteristiche, per essere sfruttate al meglio, necessitano di un po’ di configurazione, che a sua volta richiede tempo. Si tratta sicuramente dell’ambiente di programmazione Common Lisp “classico” e amato da chi programma in Common Lisp da vecchia data, in quanto fino a poco tempo fa esistevano ben poche altre alternative. Verdetto: Sicuramente un’ottima soluzione per chi utilizza già Emacs ed è disposto a utilizzare un po’ di tempo per trovare la configurazione ottimale. Per chi invece non ne è abituato o preferisce ambienti dall’interfaccia meno ostica consiglio di continuare la lettura.
  • Cusp: Cusp è un plugin per Eclipse, un ambiente per lo sviluppo in vari linguaggi di programmazione (soprattutto Java, C++ e Fortran). Con il plugin Cusp è possibile avere tutte le caratteristiche sopra descritte utilizzabili con un interfaccia semplice. Permette solo l’utilizzo di SBCL. L’integrazione in Eclipse permette la gestione dei progetti (seppur molto semplice), la visualizzazione dei thread, della console e altro ancora. Verdetto: ottimo per chi non ama dover imparare “strane” combinazioni di tasti e preferisce interfacce semplici. Nonostante non sia ancora molto maturo e soffra di rari problemi di stabilità è comunque utilizzabile efficacemente. PS. La versione scaricabile dal sito ufficiale non è la più aggiornata, è necessario quindi utilizzare il sistema di aggiornamento automatico di Eclipse.
  • VIM: Nonostante VIM sia un editor molto potente, dal rapidissimo utilizzo (per chi è abituato al suo funzionamento “insolito”) e permetta un grado di personalizzazione notevole, non ha gli strumenti che ha Emacs per funzionare come ambiente di sviluppo. Sarebbe ottimo come editor da integrare in un IDE (come in Pida), ma per il momento non è disponibile nessun plugin utilizzabile efficacemente. Va anche detto che il Common Lisp è meno prolisso di linguaggi come il C, quindi sono sufficienti meno strumenti di editing, ma più potenti. Verdetto: non utilizzabile perchè mancano i plugin necessari per renderlo un ambiente di sviluppo Common Lisp.

Ci sono anche degli ambienti di sviluppo professionali a pagamento, come AllegroCL e Lispworks, di cui si possono scaricare delle versioni gratuite in prova.

Altre informazioni

Per ottenere informazioni precise su qualsiasi aspetto del Common Lisp, internet è ovviamente il posto migliore dove cercare. Tra i siti più interessanti sicuramente merita di essere citato Cliki, una wiki dedicata interamente al Common Lisp. Ci sono anche alcuni blog molto interessanti come quello di Bill Clementson.

Anche il canale IRC #lisp (in inglese) su freenode (irc.freenode.net) può rivelarsi una risorsa utile. Sempre su freenode esiste il canale in italiano #lisp-it, di cui sono operatore, dedicato sia a chi si avvicina al Common Lisp per la prima volta sia per i più esperti.

Consiglio infine anche la mailing list lisp-it su muppetslab.org.

Clojure

Clojure è un linguaggio di programmazione della famiglia lisp ma molto più recente del Common Lisp. Alle molte caratteristiche interessanti del Common Lisp, Clojure ne aggiunge altre, altrettanto interessanti e innovative. Consiglio quindi chiunque sia interessato ai linguaggi lisp di considerare Clojure quale una valida alternativa.

(Ancora nessuna valutazione)
Caricamento ... Caricamento ...

Leave a Reply