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

Параллельное логическое программирование - это вариант логического программирования, в котором программы представляют собой наборы защищенных предложений Хорна в форме:

B 1 ,…, B n .

Конъюнкция G 1 ,…, G n называется защитой предложения, а ǀ - оператором фиксации.

Декларативно оговорки Рога с осторожностью читаются как обычные логические следствия:

H, если G 1 и… и G n или B 1 и… и B n .

Однако процедурно, когда есть несколько предложений, чьи главы H соответствуют заданной цели, тогда все предложения выполняются параллельно, проверяя, выполняются ли их защитные меры G 1 ,…, G n . Если придерживаются защитных мер более чем одного предложения, то совершается выбор одного из пунктов, и выполнение продолжается с подцелями B 1 ,…, B n выбранного пункта. Эти подцели также могут выполняться параллельно. Таким образом, параллельное логическое программирование реализует форму «недетерминизма безразлично», а не «недетерминизма не знаю».

История [ править ]

The first concurrent logic programming language was the Relational Language of Clark and Gregory, which was an offshoot of IC-Prolog. Later versions of concurrent logic programming include Shapiro's Concurrent Prolog and Ueda's Guarded Horn Clause language.

The development of concurrent logic programming was given an impetus when GHC was used to implement KL1, the systems programming language of the Japanese Fifth Generation Project (FGCS). The FGCS Project was a $400M initiative by Japan's Ministry of International Trade and Industry, begun in 1982, to use massively parallel computing/processing for artificial intelligence applications. The choice of concurrent logic programming as the “missing link” between the hardware and the applications was influenced by a visit to the FGCS Project in 1982 by Ehud Shapiro, who invented Concurrent Prolog.

See also[edit]

  • Concurrent constraint logic programming
  • Logic Programming
  • Nondeterministic programming

References[edit]

  • Clark, K. L. and Gregory, S. (1981). A relational language for parallel programming. In Proceedings of the 1981 conference on Functional programming languages and computer architecture (pp. 171-178). ACM.