Principal->Articles->Introducció a Lisp.

Introducció a Lisp

Lisp és un llenguatge de programació aparegut per primera vegada l'any 1959 ... Lisp respon a l'acrònim de LISt Processor. És un llenguatge enormement flexible, interactiu i compil·lat. Compil·lat? I l'intèrpret? Bé, actualment moltes implementacions de Lisp són únicament compil·lades. Tot codi que s'introdueix interactivament és immediatament compil·lat i executat. CMUCL i SBCL, per exemple, actuen d'aquesta forma. Açò té algunes consegüències interessants, com per exemple, la possibilitat de crear aplicacions web què s'executen compil·lades a ensamblador, amb l'increment de velocitat què açò suposa.

Però veiem algunes peculiaritats de Lisp. Al contrari que la gran majoria dels llenguatges més usats a l'actualitat, Lisp no forma part de la família d'Algol 60. Això comporta què la primera vegada què veieu un programa en Lisp us trobeu una mica estranyats. Comentem quelcom:

Què són tots eixos parèntesis?

La notació habitual d'una funció de vàries variables és f(x,y,z,w,...). A finals dels anys 50, el profesor POSAR EL NOM va començar a usar la notació (f,x,y,z,w...) per a funcions recursives. Aquesta és la notació que usa Lisp. Tota sentència d'un programa en Lisp és de la forma (funcio argument1 argument2 ...), tancada entre parèntesis, on funcio és la funció a cridar i argument1, argument2, etc... són els seus arguments. Abans de cridar a la funció s'evaluen TOTS els arguments. Aquesta és una regla general en Lisp. Més endavant parlarem de les excepcions a aquesta regla.

Per exemple, l'operació 1 + 2 en Lisp s'escriu:

(+ 1 2)

Observeu com hem escrit la funció ('+') en primer terme, el primer argument (1) a continuació i el següent per a finalitzar, tot tancat entre parèntesis. Açò que pot semblar estrany per al càlcul numèric, és plenament habitual amb les funcions normals:

(print "hola Lisp!")

Aquesta notació ens ofereix uniformitat. Ja veurem com açò és un avantatge a l'hora de fer programació funcional.

Les llistes

Lisp està pensat per processar llistes. Però, què és una llista? Una primera definició és que una llista és allò que comença amb '(' i acaba amb ')'. Per exemple, (1 2 3) és una llista, així com (+ 1 2). Açò pot semblar sorprenent, però és totalment general: tot component d'un programa en Lisp és una llista. Altres exemples de llistes són ((1 2) (3 4) (5 6)) (llista creada per les llistes (1 2), (3 4) i (5 6)) i totes les possibles combinacions de llistes què pugueu imaginar.

Els símbols

Existeix un segon element què forma part del llenguatge Lisp: els símbols. Podem dir que Lisp està format per llistes i símbols. Però què és un símbol? Un símbol és tot allò que es pot posar dins d'una llista, no és una llista, què no comença per '(' ni acaba per ')', i es separen uns d'uns altres per espais. Per exemple, dins la llista ( 5 6), 5 i 6 són dos símbols. O al tros de codi (+ 1 2) , + , 1 i 2 són tots símbols. Els símbols poden contindre valors. En aquest punt, és important no confondre símbols amb variables. Les variables poden contindre un valor, però aquest es pot canviar. Els símbols també poden contindre valors constants. Així doncs, podem fer tres distincions dins dels símbols: