Skip to main content

Wat is prologtaal?

Prolog is een computerprogrammeertaal die is gebaseerd op logica.De meeste computertalen zijn gebaseerd op de stappen die nodig zijn om een probleem op te lossen.De prologtaal daarentegen is een declaratieve taal die de logische relaties tussen entiteiten aangeeft.De manier om het probleem op te lossen, wordt aan de computer overgelaten.De naam Proloog komt van de Franse programmatie en logique, dat wil zeggen programmeerlogica.

Het volgende is een eenvoudig proloogprogramma:

voorouder (f, c):- vader (f, c)
voorouder (p, q):- Vader (P, R), voorouder (R, Q)
Vader (John, Jim).
Vader (Jim, Jerry).
Vader (Jerry, Jason).
Vader (Jerry, Jeff).
Vader (Jason, Joshua).

Het bovenstaande programma geeft truismen aan.Als f vader is van C, dan is F een voorouder van C. Als P de vader is van iemand die een voorouder van Q is, dan is P een voorouder van Q.John is de vader van Jim.Als dan een probleemvraag wordt gesteld of John een voorouder van Jeff is, krijgen we het antwoord ja zoals hieronder:

?- voorouder (John, Jeff).
Ja

Als de voorouders van Joshua interessant zijn, danHet programma toont alle voorouders als volgt:

?- voorouder (a, joshua)
a ' jason
a ' jerry
a ' jim
a ' John

Merk op dat in beide bovenstaande gevallen het programma niet heeft verteldHoe de evaluatie te doen.Het gaf bijvoorbeeld niet aan of hij bij de oudere persoon moest beginnen en zich een weg banen naar de jongere persoon of vice versa.Ook de delen uit elkaar wisselen zoals hieronder:

voorouder (p, q):- voorouder (r, q), vader (p, r)

Het zou geen verschil maken voor het programma, omdat beide delen aan de rechterkant nodig hebbenom waar te zijn om de linkerkant waar te zijn.

De prologtaal richt zich dus op de relaties, en niet op het oplossen van het probleem.Tijdens de uitvoering van het programma bouwt Prolog een aantal echte uitspraken op, waardoor een kennisbasis wordt gecreëerd.In het bovenstaande voorbeeld zou de kennisbasis in willekeurige volgorde voorouder (John, Jim), voorouder (Jim, Jerry), voorouder (John, Jerry), voorouder (Jim, Jason), voorouder (John, Jason) hebbenenzovoort.Deze kennisbasis kan blijven opbouwen terwijl het programma wordt uitgevoerd en kan efficiënt worden gezocht om oplossingen te krijgen.De uitvoering kan parallelle verwerking, gelijktijdige uitvoering door meerdere computers gebruiken.

De prologtaal wordt op een aantal gebieden gebruikt.Het begon in systemen gericht op natuurlijke talen zoals Engels;Natuurlijke taal is een van de gebieden van kunstmatige intelligentie.De prologtaal wordt ook gebruikt in symbolische wiskunde, inclusief algebra.Het wordt gebruikt bij het bewijzen van stellingen, in deskundige systemen en in controlesystemen, naast vele andere toepassingen.