lunedì 16 novembre 2009

Albanella vola

Dal mio manuale di programmazione (LISP Trek, 2007) voglio citare alcune pagine scritte sulla "nidificazione" in linguaggio LISP. Anche in queste povere pagine ingenue, scritte nell’ormai lontano e mitico dicembre 2006 (ebbene sì, l'ho scritto tutto in un mese), sono contenuti molti miei tic e manie, forse anche una profezia, insomma cose così, molto superficiali, ma le stesse pagine potranno essere lette estraendo un modo di vivere formale, che è sempre più minoritario nel nostro cosiddetto vivere civile.
Mi sto ripetendo?, così è (se vi pare) ;)

A questo mondo ognuno viene alla luce a modo suo. L’erba mette fuori dalla terra per prima cosa il naso, lo allunga verso l’alto e se ne resta così, con quel naso verde e basta: niente orecchie, piedi, becco, solo quel naso verde.
Jordan Radičkov, Noi passerotti


Ogni espressione elaborata dall’interprete LISP dà sempre un risultato, che può essere un valore numerico, una stringa di caratteri oppure il valore nullo (nil), comunque sia l’espressione elaborata restitusce all’ambiente qualcosa. Questa caratteristica ci porta a definire una operazione fondamentale in LISP: la nidificazione, cioè l’operazione di inserimento di una espressione all’interno di un’altra espressione. Perché è una operazione fondamentale? In altri linguaggi di programmazione i dati e le azioni sono separati, ad esempio nel linguaggio Pascal un programma è costituito da due parti: una descrizione delle azioni che devono essere fatte ed una descrizione dei dati che sono modificati da queste azioni. Le azioni sono descritte da istruzioni ed i dati sono descritti da dichiarazioni e definizioni. Così un programma in linguaggio C è costituito da funzioni e da variabili. Una funzione contiene istruzioni che specificano le operazioni da effettuare, mentre le variabili memorizzano i valori usati durante l’esecuzione. Niente di tutto ciò è vero in LISP. In LISP non esiste un campo dati separato dal cielo delle azioni: dati e azioni convivono dentro le parentesi tonde che delimitano l’espressione come uova nel nido.
Abbiamo visto che ogni espressione elaborata dall’interprete LISP restituisce un valore, per scrivere un programma è quindi sufficiente annidare (nidificare) espressioni dentro altre espressioni, utilizzando i valori restituiti. In sintesi questo è lo schema di un gruppo di espressioni LISP:

( ) ( ) ( ) ( )

e questo è un programma LISP:

( ( ) ( ) ( ) )

Nessun commento:

Posta un commento