Prolog programmeringsspråk | |
---|---|
Forfatter | Alain Colmerauer |
Opprinnelsesdato | 1972 |
Bruk | generell språkbruk |
Paradigmer | Logisk programmering |
Skriving | det er ingen datatyper |
Språkspesifikasjoner | ISO / IEC 13211-1 (1995) |
Vanlige utvidelser | .pl .pro .P |
Påvirket av | Planlegger |
Prolog (sammentrekning av den franske PRO grammation en LOG ique ) er et programmeringsspråk som tar i bruk det logiske programmeringsparadigmet .
Det ble unnfanget av Robert Kowalski (teoretisk aspekt), Marten Van Emdem (eksperimentell demonstrasjon) og implementert av Alain Colmerauer på syttitallet , og utgjorde et forsøk på å bygge et programmeringsspråk som ville tillate uttrykk for problemet i en logisk form i stedet for oversettelse av en løsningsalgoritme i form av instruksjoner som skal utføres av maskinen. Prologs nåværende implementering skyldes i stor grad David HD Warrens effektive koding , implementert via hans Warren Abstract Machine ( 1983 ).
Prolog brukes i mange kunstig intelligens -programmer , dens syntaks og semantikk er veldig enkel og tydelig (det primitive formålet var å gi et arbeidsverktøy til lingvister uten datakunnskap).
Prolog er basert på beregning av predikater (nøyaktig beregning av førsteordens predikater); imidlertid er syntaksen begrenset til formler kalt Horn-setninger som er disjunksjoner av førsteordens bokstaver universelt kvantifisert med høyst én positiv bokstav.
Utførelsen av et Prolog - program kan sammenlignes med beviset for et teorem ved hjelp av inferensregelen kalt oppløsning (introdusert av Robinson i 1965 ). Kjernekonseptene er forening, halerekursjon og tilbakesporing .
Mange språk, for eksempel Datalog eller AnsProlog , er basert på Prolog.
I Prolog uttrykkes logikken til programmet i form av relasjoner og beregningsaktivitetene utløses av en spørring knyttet til disse relasjonene.
Det generiske elementet i Prolog kalles et begrep . Begrepene kan være konstanter ( atomer eller tall ), variabler eller sammensatte begreper .
Spesielle tilfeller av sammensatte termer:
En regel har formen:
Hode : - Kropp .som lyder: "Hodet er sant hvis kroppen er sant." (Merk at regelen slutter med et punktum.)
Et enkelt begrep (til og med sammensatt), uten tegnet :-, kalles et faktum . Fakta utgjør kroppslige regler, som automatisk anses å være sanne. Et saklig eksempel er:
katt ( Thomas ).Utover den strengt tiltenkte bruken av teorien, tilbyr Prolog også spesielle predikater som tjener til input/output og andre hjelpeaktiviteter. Viser f.eks write/1. et begrep på skjermen.
Følgende eksempel skriver ut teksten " Hello world ".
? - skriv ( 'Hello World' ), nl .Kraften til Prolog ligger imidlertid ikke i input/output-administrasjonen, men i muligheten for ganske enkelt å representere komplekse konsepter, for eksempel kombinatoriske algoritmer . Her er et program som beregner alle mulige permutasjoner av et gitt ord som en liste over tegn:
permutasjon ([], []). permutasjon ( Xs , [ Z | Zs ]) : - velg ( Z , Xs , Ys ), permutasjon ( Ys , Zs ). velg ( X , [ X | Xs ], Xs ). velg ( Y , [ X | Xs ], [ X | Ys ]) : - velg ( Y , Xs , Ys ).I Prolog er det enkelt å skrive tolker og kompilatorer. For eksempel består en Prolog-metatolk (dvs. en Prolog-tolk skrevet i Prolog) av bare 3 linjer med kode:
vanilje ( sant ). vanilje (( A , B )): - vanilje ( A ), vanilje ( B ). vanilje ( X ): - X \ == sant , klausul ( X , B ), vanilje ( B ).