Hva er logisk programmering?
Logisk programmering er en type dataprogrammering der programmereren må gi datamaskinen instruksjoner om hvordan man tar beslutninger ved bruk av matematisk logikk, for eksempel bruk av en matematisk algoritme. Dataprogrammer består av kode som forteller datamaskinen hva de skal gjøre. Etter hvert vil datamaskinen imidlertid komme opp i en forekomst der den må ta en beslutning om hvordan de skal gå frem og uten noen informasjon om hvordan du gjør dette, kunne den ikke fullføre sin nåværende funksjon. Logisk programmering omhandler denne type beslutninger og gir instruksjoner til datamaskinen slik at den kan ta en "logisk" beslutning om hvordan man best kan svare på en viss situasjon. For at logikkprogrammering skal fungere, trenger programmereren som skriver koden for å sikre at uttalelsene hennes gir mening og er sanne, og dermed er logiske, og et dataprogram kjent som en teorem-prover er nødvendig for å ta beslutninger basert på utsagnene den møter i programmererens kode.
En teorem-prover refererer til et dataprogram som er designet for å løse matematiske utsagn kjent som teoremer. Teoremer er utsagn som viser seg å være sanne basert på tidligere uttalelser. I logisk programmering jobber teorem-prover sammen med utsagnene som er laget av dataprogrammereren for å komme til konklusjoner. For eksempel, hvis koden sier at A er lik B og B er lik C, vil teorem-prover gjøre den logiske konklusjonen at A må være lik C. Denne prosessen er annerledes enn at programmereren bare forteller datamaskinen i kode som A er lik C fordi dataprogrammet må trekke denne konklusjonen ved å bruke teorem-prover og programmererens originale utsagn i koden.
I teorien, for at logisk programmering skal fungere, trenger programmereren bare å sikre at uttalelsene hennes er riktige, og skaperen av teorem-prover skal sørge for at programmet kan lese utsagn og ta de mest effektive beslutningene basert på dem. Evnen til å ta en effektiv beslutning blir referert til som en datamaskin som fungerer "logisk". I virkeligheten overlapper de to arbeidsfeltene, og de som utfører logisk programmering må ofte endre og manipulere koden basert på hvordan teorem-prover fungerer for å oppnå de resultatene de ønsker. Bare det å sette inn nøyaktige utsagn om hvordan man tar en bestemt beslutning, er kanskje ikke nok til å få datamaskinen til å utføre riktig funksjon, og programmereren må teste koden hennes og gjøre justeringer deretter.
For at logisk programmering skal fungere, er det avhengig av bakgrunnen resonnement. I bakgrunnen resonnerer, kommer programmet til konklusjoner ved å se på et sett med data og jobbe fra generelle kjente utsagn for å komme til mer avanserte konklusjoner. Programmet vet kanskje at to opplysninger er sanne, og det vil utlede at siden de to opplysningene er sanne, betyr det at en tredje opplysning også er sant. Den fortsetter denne prosessen til den når en logisk konklusjon basert på informasjonen den er gitt. På grunn av måten det fungerer på, er logisk programmering bygget på et deklarativt representasjonsspråk, noe som betyr at programmet forteller datamaskinen hva den skal gjøre, men overlater det til teorem-prover å bestemme den mest logiske eller effektive måten å utføre den forespurte prosedyren.