Почему (не) логическое программирование?

13

Я еще не слышал ни о каком использовании логического языка программирования (такого как Prolog) в индустрии программного обеспечения, и при этом я не знаю об использовании его в программировании хобби или проектах с открытым исходным кодом. Тем не менее, он (Пролог) используется в качестве академического языка в некоторой степени (почему он используется в научных кругах?).

Это заставляет меня задуматься, почему вы должны использовать логическое программирование, а почему нет? Почему он не получает никакого использования в промышленности?

Анто
источник

Ответы:

8

За пределами академического сообщества ... Я слышал, что он использовался больше в искусственном интеллекте, иногда в играх (я слышал, что он управлял искусственным интеллектом в серии Black & White) Я также слышал о вариациях, используемых для запуска механизмов правил для определенных предприятий и экономических симуляций.

Мои предположения об отсутствии широкого распространения:

  • Это странно - большинство людей не привыкли к программированию, и они могут делать то, что им нужно, на других языках.
  • Недостаток поддержки со стороны поставщика - если Microsoft внезапно начала выдвигать Prolog # (с полным весом библиотеки .NET и набором инструментов и формальной поддержкой за ним) как «Следующее большое дело», а затем IBM и Oracle придумали что-то, чтобы конкурировать, бьюсь об заклад, вам увидим это забрать!
  • Отсутствие интеграции - я не знаю, какие библиотеки доступны для Пролога - в последний раз я проверял, что не было много графических или сетевых библиотек, а это означает, что «приложение» Пролога должно быть обернуто в другое приложение, которое взаимодействует с остальными Мир.
FrustratedWithFormsDesigner
источник
«Приложение Prolog» должно быть помещено в другое приложение, которое взаимодействует с остальным миром ». Это было на самом деле особенность для нас. Мы могли бы легче выделить биты пролога, потому что интерфейс к нему был очень прост.
S.Lott
@ S.Lott: Хорошо, я вижу в этом и позитив, хотя, когда я учился в школе и хотел на самом деле подать заявку на Пролог, я обнаружил, что водопровод и разводка между деталями являются серьезной проблемой и препятствием.
FrustratedWithFormsDesigner
5

Мы использовали его для создания парсеров. С ним было легче работать, чем с lex / yacc.

Почему он не получает никакого использования в промышленности?

Это неопровержимо. Что означает «обнаруживаемый»? Кому нужно получить памятку об обнаружении?

http://www.meridiansystems.com/landing/ppc/prolog/getvideo.asp

Спросите Meridian Software об их предложении пролога, если вам нужны факты.

Тем не менее, есть некоторые препятствия для входа, которые я испытал.

Во-первых, пролог может быть медленным. Когда есть много правил-кандидатов и нет простых операций вырезания для ограничения пространства поиска, может потребоваться некоторое время, чтобы что-то сделать.

Во-вторых, пролог не является процедурным или функциональным, поэтому многие программисты возражают против его использования. (Интересно, что некоторые программисты тоже возражают против использования SQL. В этом отношении некоторые программисты неохотно используют SQL и делают странные вещи, например избегают операций объединения или утверждают, что COUNT(*)это магически неэффективно.)

В-третьих, пролог требует довольно четкого осмысления различных случаев. Процедурное программирование может быть небрежным и при этом работать надежно. Неисполняемые операторы допустимы.

Следующее приемлемо в большинстве кругов.

b = a + 1
if a > b: # always False

Такое мрачное мышление доставляет вам неприятности в прологе.

С. Лотт
источник
2

Одна из проблем заключается в том, что Prolog на самом деле не программирует в логике предикатов первого порядка, что вычислительно сложно (я не помню, в какой степени, но это не в NP, и если вы добавите к нему арифметику, это формально неразрешимо). Следовательно, это упрощение.

В логике утверждение может быть доказано истинным, доказано ложным или не доказано в любом случае. Пролог только доказал и не доказал, «не доказано», как правило, означает ложь. Кроме того, порядок предложений Prolog может влиять на выполнение, что не относится к логическим предложениям. В курсе, в котором я его использовал, я начал думать о Прологе как о языке сопоставления с образцом, а не о языке логики.

Поэтому программирование на Прологе зависит не столько от логической корректности, сколько от самого языка Пролог. В некотором смысле это полезный язык, но он далеко не так популярен, и в нем нет инструментов и преимуществ сообщества такого языка, как C ++.

Дэвид Торнли
источник