PROLOG en topologie
De programmeertaal PROLOG toegepast
bij relationele databases met topologisch
gestructureerde ruimtelijke objecten
Proloog
Achtergrond van PROLOG
Categorieën van programmeertalen
PROLOG en de formele logica
door ir. H. T. Uitermark te Deventer.
SUMMARY
PROLOG, relational databases and geographical information systems
Some applications of the programming language PROLOG are demonstrated in the context of a topological
structured relational database with spatial objects.
PROLOG is een programmeertaal. De naam PROLOG is
afgeleid van Programmeren In Logica. Net als andere
programmeertalen is PROLOG ontworpen om problemen
te beschrijven in een vorm die een oplossing door de
computer mogelijk maakt. PROLOG onderscheidt zich
van andere programmeertalen, omdat het gebaseerd is
op ideeën uit de formele logica. Dat geeft PROLOG zo
zijn eigen karakter.
De bedoeling van dit artikel is om de karakteristieken en
eigenschappen van PROLOG op een informele manier
voor het voetlicht te brengen. De aanleiding daartoe is het
recente artikel van René van der Schans in dit tijdschrift,
waarin het relationele databasemodel is behandeld [1], In
de praktijk blijkt dit relationele model goed aan te sluiten
bij de mogelijkheden van PROLOG.
PROLOG is naast LISP de programmeertaal die vaak in
verband wordt gebracht met zogenoemde „kennissyste
men" (veelal synoniem met „expertsystems" of „know
ledge based systems"). PROLOG heeft namelijk als
eigenschap, dat het uit bekende feiten op basis van expli
ciete regels, waarin relaties tussen feiten zijn gedefi
nieerd, nieuwe feiten kan afleiden. Met andere program
meertalen kan dit ook, maar in PROLOG is een zoge
naamd „inferentie-mechanisme" als het ware standaard
ingebouwd. Vandaar de toepassing van PROLOG in in
formatiesystemen waar op de een of andere manier moet
worden geredeneerd.
De toepassing van PROLOG is overigens niet alleen be
perkt tot dit soort informatiesystemen. PROLOG wordt
ook toegepast op het gebied van de symboolmanipulatie,
zoals bij computeralgebra, compilerbouw, taalkunde en,
zoals hierna zal worden aangegeven, bij relationele
bestandsstructuren.
De syntaxis van PROLOG is in het begin van de 70-er
jaren in Frankrijk ontworpen, vervolgens door de Britten
verder geoperationaliseerd en door de Japanners overge
nomen voor hun „vijfde generatie" computerproject.
PROLOG is beschikbaar voor alle typen computersyste
men. Ik maak in dit artikel gebruik van LPA Prolog, onder
MS-DOS, met de Edingburgh-syntaxis.
Een programmeertaal weerspiegelt in belangrijke mate
de wijze waarop de ontwerper van die taal tegen de bui
tenwereld aankijkt. Deze zienswijze komt onmiddellijk
naar voren als een programmeertaal op zijn betekenis
aspect wordt doorgelicht.
Conventionele talen als Fortran, Pascal of C bevatten
constructies waarvan de betekenis vooral is gericht op
een wijze van handelen of werken, kortom op een procé
dé. In dit verband spreekt men van procedurele program
meertalen. Daarentegen ziet PROLOG de buitenwereld
als bestaande uit entiteiten en geeft te kennen (decla
reert) dat hiertussen relaties bestaan (het betekenis
aspect). In dit verband spreekt men van een declaratieve
taal.
Bij een declaratieve taal als PROLOG concentreert een
programmeur zich op een nauwkeurig beschrijven (speci
ficeren) van deze entiteiten en hun relaties. Dit sluit niet
alleen dicht aan bij de specificaties van een informatie
systeem, maar is tegelijkertijd gemakkelijker te begrijpen:
de (procedurele) details van de uitvoering van een pro
gramma kan de PROLOG-programmeur overlaten aan de
PROLOG-programmavertaler. In PROLOG ontbreken
dan ook de gebruikelijke besturingsopdrachten zoals do,
while, for of goto, van de procedurele talen. Deze bestu
ring krijgt men in PROLOG als het ware cadeau. Het vin
den van een antwoord blijft in principe verborgen voor de
gebruiker en kan worden overgelaten aan het „inferentie-
mechanisme".
Kort samengevat: een declaratieve taal als PROLOG richt
zich op het WAT („wat voor een antwoord wordt ver
langd?") en een procedurele taal richt zich op het HOE
(„hoe een antwoord te vinden?") [2, 3],
PROLOG is gebaseerd op ideeën uit de predikatenlogica,
een onderdeel van de formele logica. Evenals de formele
logica houdt de predikatenlogica zich bezig met de juist
heid van een conclusie uit één of meerdere premissen
(vooropgeplaatste stellingen). Zo zal een conclusie juist
zijn, indien de premissen juist zijn. Het trekken van een
conclusie is te formaliseren en in een formuletaal uit te
drukken. Bijvoorbeeld de formule:
C :- PI, P2, P3, Pn
valt te lezen als: „indien de premissen P1 èn P2 èn P3 tot
en met Pn alle waar zijn, dan is de conclusie C waar".
De notatie :- staat voor „indien" en de komma geldt als
logische EN-operator.
In de predikatenlogica wordt de formuletaal voor conclu-
356
NGT GEODESIA 89 - 7/8