Linguaggi
Lisp
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
© Codexpo.org - Content released under Creative Commons 4.0 BY/SA/NC
Versione: 12/01/2022 - 19:23:41
Parole: 229