EL QUE VA FER DIFERENT A LISP

de 1. Condicionals. Una condicional és una construcció if-then-else. Ara les donem per fet. Van ser inventades per McCarthy mentre desenvolupava Lisp. (Fortran en aquest moment només tenia una condicional goto, basada estretament en la instrucció de transferència en el maquinari subjacent.) McCarthy, qui estava al comitè d’Algol, va introduir condicionals en Algol, d’on es van estendre a la majoria dels altres llenguatges . de 2. Un tipus de funció. En Lisp, les funcions són objectes de primera classe-són un tipus de dades com sencers, cadenes, etc., i tenen una representació literal, es poden emmagatzemar en les variables, es poden passar com a arguments, i així successivament.
3. Recursivitat. La recursivitat ha existit com un concepte matemàtic des d’abans de Lisp, és clar; però Lisp va ser el primer llenguatge de programació en suportar-ho. (Es podria dir que aquesta implícit en fer les funcions objectes de primera classe.) De 4. Un nou concepte de variables. En Lisp, totes les variables són, en efecte, apuntadors. Els valors tenen tipus, no variables, i assignar o enllaçar variables significa copiar apuntadors, no al que apunten. De 5. Recollida d’escombraries. De 6. Programes compostos per expressions. Els programes de Lisp són arbres d’expressions, cadascuna de les quals retorna un valor. (En alguns Lisps les expressions poden tornar diversos valors.) Això contrasta amb Fortran i la majoria dels llenguatges successius, que distingeixen entre expressions i declaracions.
Era natural tenir aquesta distinció en Fortran, perquè (com era d’esperar en un llenguatge en el que el format d’entrada eren targetes perforades), el llenguatge va ser orientat a línies. No es podien niar les declaracions. Així, mentre que necessitaves expressions perquè les matemàtiques funcionessin, no tenia sentit fer que qualsevol altra cosa retornés un valor, perquè no podia haver res esperant-ho.
Aquesta limitació va desaparèixer amb l’arribada dels llenguatges estructurats en blocs, però per llavors ja era massa tard. La distinció entre expressions i declaracions es va afermar. Es va transmetre de Fortran a Algol i d’allí als seus descendents.
Quan un llenguatge està fet enterament d’expressions, pots fer-les com vulguis. Pots dir ja sigui (utilitzant la sintaxi d’Arc): Estadístiques (if foo (= x 1) (= x 2)) a o
(= x (if foo 1 2)) de 7 . Un tipus de símbol. Els símbols difereixen de les cadenes en què es pot provar la igualtat comparant un apuntador. De 8. Una notació per al codi utilitzant arbres de símbols. De 9. Tot el llenguatge sempre està disponible. No hi ha distinció real entre temps de lectura, temps de compilació i temps d’execució. Pots compilar o executar codi durant la lectura, llegir o executar codi durant la compilació, i llegir o compilar codi en temps d’execució.
Executar codi en temps de lectura li permet als usuaris reprogramar la sintaxi de Lisp; executar codi en temps de compilació és la base de les macros; compilar en temps d’execució és la base de l’ús de Lisp com a llenguatge d’extensió en programes com Emacs; i la lectura en temps d’execució permet als programes comunicar-se utilitzant expressions-S, una idea reinventada recentment com XML.

Deixa un comentari

L'adreça electrònica no es publicarà. Els camps necessaris estan marcats amb *