Упореднo логичко програмирање

Из Википедије, слободне енциклопедије
Иди на навигацију Иди на претрагу

Упоредно логичко програмирање је варијанта логичког програмирања у којем су програми сета чували Хорн клаузуле у облику:

H :- G1, …, Gn | B1, …, Bn.

Коњукција G1, … , Gn се зове стража клаузуле, и | је оператор обавеза.

Декларативно, чуване Хорн клаузуле се читају као обичне логичке импликације:

H ако G1 и … и Gn и B1 и … и Bn.

Међутим, процедурално, када постоји неколико клаузула чија H глава одговара задатом циљу, онда се све клаузуле извршавају паралелно, проверава се да ли се њихови чувари G1, … , Gn држе. Ако стражар држи више од једне клаузуле, онда је починио избор направљен од једне клаузуле, и извршавање се наставља са subgoalsс  B1, …, Bn изабране клаузуле. Ове subgoals се такође могу извршити паралелно. Тако истовремено логичко програмирање спроводи неку врсту "Не занима ме nondeterminism", уместо "не знам nondeterminism".

Историја[уреди]

Први истовремени логички програмски језик био је Relational Language Кларка и Григорија, који је изданак IC-Prolog. Касније верзије истовременог логичког програмирања укључује Shapiro's Истовремени Prolog и Ueda's Guarded Horn Clause језик GHC.

Развој конкурентног логичког програмирања је дат подстицај када је GHC коришћен за имплементацију KL1, језик за програмирање система јапанске пете генерације пројекта (ФГЦС). ФГЦС пројекат је био $ 400М иницијатива јапанског Министарства за међународну трговину и индустрију, почео је 1982. године, да користи масовно паралелну компјутерску обраду / за вештачке интелигенције апликације. Избор истовременог логичког програмирања као "карика која недостаје" између хардвера и апликација је под утицајем посете ФГЦС пројекта у 1982. од стране Ехуда Шапира, који је измислио истовремени Пролог.

Види још[уреди]

Референце[уреди]

  • Кларк К. Л., Грегори С. (1981). Релациони језик за паралелно програмирање. У Зборнику конференције на функционалним програмским језицима и архитектуре рачунара (pp. 171-178.) Из 1981. године. АЦМ.