/archivio

cat lisp-parentesi-cosmologia.md

N°004 Linguaggi e pensiero 19 min

LISP: la parentesi come cosmologia

McCarthy e la struttura del pensiero ricorsivo

Il paper di McCarthy del 1960 non presenta solo un linguaggio. Presenta un modo di immaginare i programmi come manipolazione di espressioni simboliche. La parentesi, spesso trattata come tratto estetico, è in realtà la superficie visibile di una scelta cosmologica.

Anno
1960
Era
1958-1960
Linguaggio
LISP
Reperto
~CACM 1960

Prima del linguaggio, una teoria

Lisp nasce in un contesto diverso da molti linguaggi successivi. Non è progettato prima di tutto per rendere comoda una classe di applicazioni commerciali, ma per lavorare con simboli, formule e ragionamenti. Il paper di John McCarthy, pubblicato su Communications of the ACM nell'aprile 1960, parla di funzioni ricorsive su espressioni simboliche: il linguaggio operativo discende da questa ambizione formale.

Questo è essenziale per capirne la bellezza. Lisp non aggiunge ricorsione e simboli a un linguaggio già esistente; parte da lì. L'idea di una lista come struttura fondamentale non è un dettaglio di implementazione, ma una scelta ontologica: il mondo del programma viene rappresentato come composizione di atomi e coppie, e quindi può essere attraversato, trasformato, valutato.

La parentesi non è decorazione

Chi incontra Lisp da fuori vede parentesi. Chi lo studia abbastanza a lungo comincia a vedere alberi. La parentesi rende esplicita la struttura dell'espressione, e questa esplicitezza è il prezzo pagato per una proprietà potentissima: il codice ha una forma dati regolare. Non è solo testo da compilare; è una struttura che il linguaggio stesso può manipolare.

Da qui discendono macro, metaprogrammazione, linguaggi interni e un'idea di estensibilità radicale. Molti linguaggi permettono di astrarre sui valori. Lisp spinge ad astrarre sulla forma del programma. Questa differenza ha influenzato decenni di ricerca, dai sistemi simbolici agli ambienti interattivi, fino a molte idee contemporanee sulla programmazione come costruzione di linguaggi specifici.

Ricorsione come metodo di conoscenza

La ricorsione in Lisp non è soltanto una tecnica per evitare cicli. È un modo di descrivere oggetti che hanno la stessa forma delle loro parti. Una lista è vuota oppure ha una testa e una coda che è ancora lista. Questa definizione è insieme struttura dati, algoritmo e spiegazione.

Per questo tanti esempi Lisp sembrano piccoli rituali: `car`, `cdr`, `cons`, `atom`, `eq`, `cond`. Il vocabolario è minimo, ma l'effetto combinatorio è enorme. L'eleganza non viene dalla facilità immediata, viene dal fatto che poche operazioni restano coerenti mentre il programma sale di livello.

Eval è la vertigine

L'idea più vertiginosa è che si possa descrivere un valutatore del linguaggio nel linguaggio stesso, o comunque in una forma molto vicina alla sua notazione. Questo non significa che l'implementazione reale sia magica o gratuita. Significa che Lisp rende pensabile una riflessione del programma su se stesso con una chiarezza rara.

La storia dell'informatica è piena di strumenti che separano rigidamente utente, programma e metalinguaggio. Lisp tende a bucare quella separazione. Il programmatore non usa solo costrutti: può costruire costrutti. Non scrive soltanto frasi in una grammatica data; può estendere la grammatica della propria pratica.

Perché non è mai sparito

Lisp non ha conquistato il mondo nel modo in cui lo hanno fatto C, JavaScript o Python. Ma molte delle sue idee sono diventate sotterranee: garbage collection, REPL, strutture dati dinamiche, funzioni come valori, metaprogrammazione, ambienti interattivi. La sua influenza è spesso più profonda della sua quota d'uso.

La parentesi come cosmologia significa questo: un segno grafico apparentemente ostile racchiude una visione del programma come oggetto trasformabile. Lisp resta vivo ogni volta che un linguaggio permette di spostare il confine tra usare una forma e inventarne una nuova.

Punti chiave

  • Il paper originale di McCarthy apparve su Communications of the ACM nell'aprile 1960.
  • Lisp mette al centro S-expression, funzioni ricorsive e manipolazione simbolica.
  • La regolarità sintattica rende possibile una metaprogrammazione molto potente.
  • Molte idee oggi comuni sono passate, direttamente o indirettamente, da Lisp.

Fonti