In de meeste programmeertalen ( b.v. C, Python, Javascript, PhP ) programmeer je processen. Je hebt een stappenplan (algoritme) om van een beginsituatie naar een eindoplossing te komen, zoiets als een recept maken om te koken. Je hebt de ingrediƫnten (beginsituatie) en als je jouw recept volgt heb je aan het eind een heerlijk gerecht. Het soort programmeertalen waarin men recepten ontwerpt noemt met procedurele (of imperatieve) talen. Daar tegenover staan de declaratieve talen. Een taal is declaratief als de basiselementen geen opdrachten zijn, maar beschrijvingen die tot ingewikkelder beschrijvingen worden samengesteld. Voorbeelden zijn HTML en de logica en algebra in de wiskunde.
Heel kort gezegd is het verschil dat men in een declaratieve taal opschrijft wat
er aan de hand is en in een imperatieve taal hoe iets moet gebeuren.
Een volkomen helder onderscheid is niet te maken. Een recept (imperratief)
heeft de beschrijving
van de begintoestand (declaratief) nodig. En HTML (declaratief) bijvoorbeeld heeft
de procedures (imperatief) van browser nodig om HTML zichtbaar te maken. De nadruk ligt
dus vooral op het hoofddoel van de taal.
Prolog is een taal die is gebaseerd op de predicatenlogica in de wiskunde. Predicatenlogica is wiskundig-formele logica (=redeneerkunst) waarin expliciet predicaten voorkomen, waarmee eigenschappen van en relaties tussen verzamelingen objecten worden beschreven. Het woord predicaat betekent letterlijk 'dat wat ergens van gezegd wordt': een kwaliteit, eigenschap of gezegde dus. In Prolog worden, in plaats van de stappen die tot de oplossing van een probleem leiden, de voorwaarden waaraan de oplossing moet voldoen in logische termen beschreven. Vandaar dat Prolog een (grotendeels) declaratieve taal is.
Prolog wordt onder andere veel toegepast in problemen waar data anders dan getallen moet worden geanalyseerd, bijvoorbeeld Data mining en natuurlijke taalverwerking. Dit zijn beiden toepassingen die als kunstmatige intelligentie worden ingezet.