Параллельное логическое программирование - Concurrent logic programming
Параллельное логическое программирование - это вариант логического программирования, в котором программы представляют собой наборы охраняемых предложений Хорна в форме:
- 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 выбранного пункта. Эти подцели также могут выполняться параллельно. Таким образом, параллельное логическое программирование реализует форму «недетерминизма безразлично», а не «недетерминизма не знаю».
История
Первым языком параллельного логического программирования был Relational Language Кларка и Грегори, который был ответвлением IC-Prolog. Более поздние версии параллельного логического программирования включают Concurrent Prolog Shapiro и язык Guarded Horn Clause Уэды.
Развитие параллельного логического программирования получило импульс, когда GHC был использован для реализации KL1 , языка системного программирования Японского проекта пятого поколения (FGCS) . Проект FGCS - это инициатива Министерства международной торговли и промышленности Японии стоимостью 400 миллионов долларов , начатая в 1982 году, чтобы использовать массовые параллельные вычисления / обработку для приложений искусственного интеллекта. На выбор параллельного логического программирования в качестве «недостающего звена» между оборудованием и приложениями повлиял визит в проект FGCS в 1982 году Эхуда Шапиро , который изобрел параллельный пролог.
Смотрите также
- Программирование логики параллельных ограничений
- Логическое программирование
- Недетерминированное программирование
Ссылки
- Кларк, К.Л. и Грегори, С. (1981). Реляционный язык для параллельного программирования . В материалах конференции 1981 г. по языкам функционального программирования и компьютерной архитектуре (стр. 171-178). ACM.