Vorige                       Inhoud                      Volgende
_________________________________________________________________

LISP                    860409          (c) 1986 by ORD-GROUP  40


                              LISP

Inleiding
LISP was een van de eerste programmeertalen die ontworpen werden.
De  taal  is door McCarthy in 1964 ontworpen als tegenhanger  van
het toen nieuwe FORTRAN.  LISP heeft twee typische eigenschappen,
namelijk  'functioneel programmeren' en het feit dat  programma's
dezelfde vorm hebben als hun data.

Functioneel  programmeren is een stijl van  programmeren  waarbij
uitsluitend  functies worden gebruikt.  Een programma bestaat dan
uit een aantal functiedefinities,  en het enige wat een programma
'doet' is iets uitrekenen.  Een programma dat de faculteit uitre-
kent ziet er bijvoorbeeld zo uit (in een fantasietaal):

     fac(n)=   IF n=0 THEN 1
               ELSE n*fac(n-1)

Dit  is een definitie van een functie.  Waar in  een  imperatieve
(lees:  gewone)  programmeertaal een lus wordt  gebruikt,  treedt
hier  recursie op.  Dat is een van de basisprincipes van functio-
neel programmeren. Over het algemeen is een functioneel programma
korter en leesbaarder dan het imperatieve equivalent.  In LISP is
dit effect iets minder sterk vanwege de syntax.

In LISP ziet het bovenstaande programma er bijvoorbeeld zo uit:
(EXPR FAC (LAMBDA (N) (COND
     ((EQUAL N 0) 1)
     (T (TIMES N (FAC (PLUS N -1))))
     )))
Opvallend is het aantal haakjes.  Dat is dan ook een van de meest
genoemde nadelen van LISP.

Het  is  ook  mogelijk in LISP op een  BASIC-achtige  manier  met
assignments  en  sprongen  te programmeren door  middel  van  een
speciale functie PROG. Tegenwoordig wordt dat minder gebruikt.


De interpreter
De interpreter is erop gebouwd om op een relatief kleine computer
(zoals de ORDINATOR er een is) te werken.  De meeste LISP  inter-
preters  werken op veel grotere computers,  die veel sneller zijn
en meer geheugen tot hun beschikking hebben.

Deze interpreter kan programma's tot zo'n tien pagina's LISP code
gemakkelijk  verwerken.  Dit  is  bereikt door vele  functies  in
machinetaal te coderen,  en door zorvuldig met het weinige geheu-
gen om te springen.

De LISP interpreter is globaal op te delen in de volgende delen:
     - Het hoofdprogramma. Dit bevat de cyclus invoer-uitrekenen-
       uitvoer,  een  routine om foutmeldingen af te  drukken  en
       initialisatieroutines voor het opstarten en het terugkomen
       na een foutmelding.
     - De  evaluator.  Dit  is een stelsel van routines  die  het
       feitelijke  rekenwerk verzorgen.  De evaluator gebruikt de

_________________________________________________________________

Vorige                       Inhoud                      Volgende