Lisp

Il Lisp - creato nel 1958 da John McCarthy insieme con Steve Russell e altri - è uno dei primi linguaggio ad alto livello, cioè in cui non occorre preoccuparsi di sapere esattamente come è fatto il computer per scrivere un programma.

Il nome Lisp significa "List Processing": come dire che questo linguaggi non fa altro che manipolare liste. Una lista non è semplicemente una serie di elementi, ma una struttura dati in cui il primo elemento (la "testa") è collegato ad un'altra lista (la "coda"), che a sua volta ha una testa e una coda, finché la coda non è vuota.

Una lista è per esempio questa:

(gennaio,(febbraio,(marzo,(aprile))))
Il punto interessante è che Lisp è un linguaggio funzionale (anzi il primo linguaggio che segue questo paradigma in maniera completa), in cui le funzioni sono oggetti che possono esser passati come argomento ad altre funzioni.

Ma una funzione è scritta come una lista; ne deriva che in Lisp un programma può creare e modificare funzioni durante l'esecuzione del programma stesso. In pratica, un programma può modificare se stesso, crescere, imparare. Di qui l'interesse per la nascente Intelligenza Artificiale.

Lisp è riconoscibile per il grande uso di parentesi, anzi di un solo tipo di parentesi, quelle tonde. Questo è un tipico frammento di codice Lisp ricorsivo che calcola il fattoriale di un numero:

(defun factorial (n)
    (if (zerop n) 1
        (* n (factorial (1- n)))
    )
)
In parole povere: se il numero è 0, la funzione restituisce 1; altrimenti restituisce quel numero moltiplicato per il fattoriale del numero - 1. Come vedete, si tratta di una normale lista in cui il primo elemento è "defun factorial (n)" e il resto è la definizione.

Lo stile del codice, come spesso succede in Lisp e in generale nei linguaggi funzionali, è ricorsivo: cioè invece di ripetere un'istruzione N volte si definisce un caso base e si richiama la stessa funzione finché non si arriva a quel caso base.

Questo stile viene spesso considerato elegante ma lento dai programmatori più tradizionali. Un annedotto racconta che un guru funzionale venne chiamato a riscrivere un pezzo di codice in stile imperativo che produceva dei risultati errati. L'autore originale, visto il codice, commentò: "Beh, ma adesso è molto più lento". Il guru funzionale rispose "Sì ma non restituisce risultati sbagliati. Se vuoi posso riscriverlo in modo che restituisca gli stessi risultati sbagliati dell'originale, ma molto più veloce."

Si potrebbe avere l'idea errata che Lisp sia un linguaggio morto. Non è così: il programma di posta cmail è stato scritto da Yukhiro Mastumoto in Lisp.

Naturalmente dopo la versione originale sono nate altre versioni più "comode" e potenti; inoltre da Lisp sono derivati altri linguaggi funzionali, e persino il Logo.

Prossimo pannello:  APL



Versione: 12/01/2022 - 19:23:41

Parole: 229

Pannelli

Linguaggi                   
Linguaggi di programmazione 
Nomi dei linguaggi          
Caratteri e linguaggi       
Famiglie                    
Traduzione                  
COBOL                       
Lisp                        
APL                         
Perl                        
Javascript                  
Python                      
PHP                         
Ruby                        
Linguaggi educativi         
Pascal                      
Ada                         
Logo                        
Prolog                      
IEML                        
Linguaggi nazionali         
Linotte                     
Linguaggi esoterici         
Intercal                    
Brainfuck                   
Emmental                    
HQ9+                        
🔎