Prolog

Wikipedia
Loikkaa: valikkoon, hakuun
Prolog
Paradigma looginen
Julkaistu 1972
Kehittäjä Alan Colmerauer
Murteet ISO Prolog, Edinburgh Prolog
Käyttöjärjestelmä alustariippumaton
Uutisryhmä comp.lang.prolog

Prolog on tunnetuin logiikkapohjainen ohjelmointikieli.[1] Nimi Prolog on lyhenne ranskan kielen sanoista PROgrammation en LOGique, sananmukaisesti logiikkaohjelmointi. Kielen kehittivät vuonna 1972 Alan Colmerauer, Philippe Roussel ja Robert Kowalski vaihtoehdoksi LISPille.

Logiikkaohjelmointikielenä Prolog poikkeaa melkoisesti proseduraalisista "tavallisista" ohjelmointikielistä. Kielellä tehdyt ohjelmat muodostuvat käskyjen sijaan säännöistä ja kyselyistä. Kyselyllä pyritään selvittämään, pystytäänkö se johtamaan säännöistä käsin.

Yksinkertaiset faktat ja säännöt[muokkaa | muokkaa wikitekstiä]

Yksinkertaisimmillaan prolog-ohjelma koostuu yhdestä faktasta, esimerkiksi

sataa.

Ohjelman syöttämisen jälkeen voidaan prolog-tulkille esittää sama lause kyselynä, jolloin prolog vastaa "yes".

Monimutkaisemmat faktat kertovat olioiden ominaisuuksia ja suhteita, esimerkiksi

kaunis(maija).
kaunis(liisa).
rikas(matti).
isa(matti, maija).
suhteessa(liisa, pekka, avoliitto).

Tällöin kyselyssä voidaan käyttää muuttujaa. Muuttuja alkaa prologin syntaksissa isolla alkukirjaimella. Esimerkiksi kysely "kaunis(X)." antaa tulokseksi ensin "maija" ja sitten "liisa"; prologilla siis voidaan hakea kaikki kyselyyn sopivat vastaukset.

Säännön merkkinä on :- -merkkiyhdistelmä. Jos on kurjaa kun sataa ja tuulee, se kerrotaan prologille

kurjaa :- sataa, tuulee.

Säännöissä voidaan käyttää muuttujia kuvaamaan haluttuja faktojen yhteyksiä:

vaimoehdokas(X) :- kaunis(X), isa(Y, X), rikas(Y).

Näiden ohjelmarivien jälkeen voidaan joko kysyä onko liisa sopiva vaimoehdokas, tai etsiä kaikki sopivat. Kyselyt ovat "vaimoehdokas(liisa)." ja (muuttujan nimellä ei ole tässä merkitystä) "vaimoehdokas(Nimi)".

Rekursiiviset säännöt[muokkaa | muokkaa wikitekstiä]

Prologin edut näkyvät vasta rekursiivisissa ohjelmissa, jossa sääntö määritellään itsensä kautta. Esimerkiksi luonnolliset luvut voidaan määritellä kahdella säännöllä: 1) nolla on luonnollinen luku ja 2) jokaisella luonnollisella luvulla on seuraaja, joka on myös luonnollinen luku. Prologilla tämä sanottaisiin

luku(0).
luku(s(X)) :- luku(X).

Tällöin kysely "luku(X)." antaisi vastauksia "0", "s(0)", "s(s(0))", s(s(s(0)))" jne. rajattomasti.

Vastaavasti esimerkiksi esi-isä on joko isä tai isän esi-isä, siis

esi_isa(X, Y) :- isa(X, Y).
esi_isa(X, Y) :- isa(Z, Y), esi_isa(X, Z).

Tällöin prologin ongelmat toisaalta jo nousevat esiin. Periaatteessa viimeisin sääntö olisi voitu kirjoittaa toisinpäin, siis "esi_isa(X, Y) :- esi_isa(X, Z), isa(Z, Y).", mutta prologin suoritusjärjestyksen vuoksi tämä johtaisi ikuiseen silmukkaan kyselyssä.

Käyttö[muokkaa | muokkaa wikitekstiä]

Prologia käytetään muun muassa tekoälysovelluksien tekemiseen. Prolog sai paljon mainetta 1980-luvulla kun se valittiin Japanissa kaavailtujen "viidennen sukupolven tietokoneiden" ohjelmointikieleksi. 1980-luvun lopulla se yleistyi myös harrastekäytössä kun Borland toi markkinoille Prologin PC-tietokoneisiin. Tästä kehittyi vaiheittain nykyinen Visual Prolog-kehitin.

Katso myös[muokkaa | muokkaa wikitekstiä]

Lähteet[muokkaa | muokkaa wikitekstiä]

  1. Programming Languages University of Waikako, Department of Computer Science. 2010-4-23.

Aiheesta muualla[muokkaa | muokkaa wikitekstiä]

Kirjallisuutta[muokkaa | muokkaa wikitekstiä]

  • W.F. Clocksin C.S. Mellish: Programming in Prolog. Springer-Verlag, 1984. ISBN 3-540-15011-0.
  • Erkki Laitila: Teollisuuden sovellukset: Visual Prolog. Teknolit, 1996. ISBN 952-9823-51-7.


Tämä tietotekniikkaan liittyvä artikkeli on tynkä. Voit auttaa Wikipediaa laajentamalla artikkelia.