Prolog je skraćenica od LOGičko PROgramiranje. Prolog je deklarativni programski jezik. To znači da je paradigma programiranja takva da u jeziku opisujemo šta treba da se uradi, a ne kako.

Logičko programiranje je programska paradigma u kojoj programskim naredbama izražavamo činjenice i pravila kojima opisujemo/modelujemo problem, koji prati pravila formalne logike.

Pravila se zapisuju u obliku logičkih iskaza, gde postoji "glava"/head i "telo"/body.  Ako je H glava a B1,B2,B3 elementi tela iskaza možemo da izrazimo pravilo oblika "H je tačno ako su B1,B2 i B3 tačni".

Činjenice su kao pravila, ali samo glava, bez tela, dakle oblika "H je tačno".

 

Prolog nije jedini logički jezik, ima ih gomila: ALF, ASP, Datalog, Janus, Parlog, Prolog++, ali jeste najpopularniji. A nije ni nova tehnologija, koncept je razvijan 60ih i 70ih.

Prolog je jezik četvrte generacije (vidi 7 Podela programskih jezika). Deklarativni pristup je posebno zgodan za programe koji rade simboličku / ne-numeričku obradu. To ga čini posebno zgodnim za primenu u veštačkoj inteligenciji, gde su manipulacija simbolima i inferencija (zaključivanje, izvođenje) osnovni zadaci. Neka polja primene su:

  • inteligentna pretraga za podacima u bazama podataka
  • razumevanje prirodnih jezika
  • mašinsko učenje
  • robot planning
  • sistemi za automatizaciju
  • rešavanje problema

 

 

Kada pišemo program ne pišemo korako kako se problem rešava, već opisujemo šta je problem i puštamo Prolog-ovu mašinu za logičko rezonovanje da na osnovu baze znanja-činjenica koje su mu date, izvede rešenje. Pogledajte šemu kako se sve to odnosi međusobno:

 

Prolog ima tri osnovna elementa:

Činjenice - Facts

Činjenica je predikat koji je tačan. Na primer, "Aragorn, son of Arathorn" je činjenica.

Pravila - Rules

Pravila su činjenice koje sadrže i uslovne iskaze. Da bi se pravilo zadovoljilo potrebno je da uslovi budu ispunjeni. Ako definišemo pravilo kao

deda(X,Y) :- otac(X,Z), roditelj (Z,Y)

onda da bi X bio deda Y-u, Z treba da bude roditelj Y-u a X treba da bude otac Z-u.

Kad smo već kod Aragorna, Aragorn, son of Arathorn, heir of Isildur bi bio iskaz za koji možemo da napravimo pravilo slično ovome, ali o tom potom.

Pitanja - Questions

Da bismo pokrenuli Prolog program trebaju nam pitanja, a na ta pitanja odgovore ćemo dobiti na osnovu činjenica i pravila.