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 truisms aan. Als F vader van C is, 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. Een aantal echte feiten wordt dan gegeven, zoals Johannes de vader van Jim is. Als dan een probleemvraag wordt gesteld over de vraag of John dat isEen voorouder van Jeff, we krijgen het antwoord "ja" zoals hieronder:
?- Voorouder (John, Jeff).
Ja
Als de voorouders van Joshua interessant zijn, toont het programma alle voorouders als volgt:
?- Voorouder (a, joshua)
A = jason
A = jerry
A = Jim
A = John
Merk op dat het programma in beide bovenstaande gevallen niet heeft verteld hoe hij de evaluatie moest 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 onderdelen uitwisselen zoals hieronder:
voorouder (p, q):- voorouder (r, q), vader (p, r)
Het zou geen verschil maken voor het programma, omdat beide onderdelen aan de rechterkant waar moeten 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 staat opments, het creëren van een kennisbasis. In het bovenstaande voorbeeld zou de kennisbasis in willekeurige volgorde de voorouder (John, Jim), voorouder (Jim, Jerry), voorouder (John, Jerry), voorouder (Jim, Jason), voorouder (John, Jason), enzovoort hebben. 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.