Uporedno logičko programiranje
Uporedno logičko programiranje je varijanta logičkog programiranja u kojem su programi seta čuvali Horn klauzule u obliku:
- H :- G1, …, Gn | B1, …, Bn.
Konjukcija G1, … , Gn se zove straža klauzule, i | je operator obaveza.
Deklarativno, čuvane Horn klauzule se čitaju kao obične logičke implikacije:
- H ako G1 i … i Gn i B1 i … i Bn.
Međutim, proceduralno, kada postoji nekoliko klauzula čija H glava odgovara zadatom cilju, onda se sve klauzule izvršavaju paralelno, proverava se da li se njihovi čuvari G1, … , Gn drže. Ako stražar drži više od jedne klauzule, onda je počinio izbor napravljen od jedne klauzule, i izvršavanje se nastavlja sa subgoalss B1, …, Bn izabrane klauzule. Ove subgoals se takođe mogu izvršiti paralelno. Tako istovremeno logičko programiranje sprovodi neku vrstu "Ne zanima me nondeterminism", umesto "ne znam nondeterminism".
Istorija
[uredi | uredi izvor]Prvi istovremeni logički programski jezik bio je Relational Language Klarka i Grigorija, koji je izdanak IC-Prolog. Kasnije verzije istovremenog logičkog programiranja uključuje Shapiro's Istovremeni Prolog i Ueda's Guarded Horn Clause jezik GHC.
Razvoj konkurentnog logičkog programiranja je dat podsticaj kada je GHC korišćen za implementaciju KL1, jezik za programiranje sistema japanske pete generacije projekta (FGCS). FGCS projekat je bio $ 400M inicijativa japanskog Ministarstva za međunarodnu trgovinu i industriju, počeo je 1982. godine, da koristi masovno paralelnu kompjutersku obradu / za veštačke inteligencije aplikacije. Izbor istovremenog logičkog programiranja kao "karika koja nedostaje" između hardvera i aplikacija je pod uticajem posete FGCS projekta u 1982. od strane Ehuda Šapira, koji je izmislio istovremeni Prolog.
Vidi još
[uredi | uredi izvor]Reference
[uredi | uredi izvor]- Klark K. L., Gregori S. (1981). Relacioni jezik za paralelno programiranje. U Zborniku konferencije na funkcionalnim programskim jezicima i arhitekture računara (pp. 171-178.) Iz 1981. godine. ACM.