Я еще не слышал ни о каком использовании логического языка программирования (такого как Prolog) в индустрии программного обеспечения, и при этом я не знаю об использовании его в программировании хобби или проектах с открытым исходным кодом. Тем не менее, он (Пролог) используется в качестве академического языка в некоторой степени (почему он используется в научных кругах?).
Это заставляет меня задуматься, почему вы должны использовать логическое программирование, а почему нет? Почему он не получает никакого использования в промышленности?
Мы использовали его для создания парсеров. С ним было легче работать, чем с lex / yacc.
Это неопровержимо. Что означает «обнаруживаемый»? Кому нужно получить памятку об обнаружении?
http://www.meridiansystems.com/landing/ppc/prolog/getvideo.asp
Спросите Meridian Software об их предложении пролога, если вам нужны факты.
Тем не менее, есть некоторые препятствия для входа, которые я испытал.
Во-первых, пролог может быть медленным. Когда есть много правил-кандидатов и нет простых операций вырезания для ограничения пространства поиска, может потребоваться некоторое время, чтобы что-то сделать.
Во-вторых, пролог не является процедурным или функциональным, поэтому многие программисты возражают против его использования. (Интересно, что некоторые программисты тоже возражают против использования SQL. В этом отношении некоторые программисты неохотно используют SQL и делают странные вещи, например избегают операций объединения или утверждают, что
COUNT(*)
это магически неэффективно.)В-третьих, пролог требует довольно четкого осмысления различных случаев. Процедурное программирование может быть небрежным и при этом работать надежно. Неисполняемые операторы допустимы.
Следующее приемлемо в большинстве кругов.
Такое мрачное мышление доставляет вам неприятности в прологе.
источник
Одна из проблем заключается в том, что Prolog на самом деле не программирует в логике предикатов первого порядка, что вычислительно сложно (я не помню, в какой степени, но это не в NP, и если вы добавите к нему арифметику, это формально неразрешимо). Следовательно, это упрощение.
В логике утверждение может быть доказано истинным, доказано ложным или не доказано в любом случае. Пролог только доказал и не доказал, «не доказано», как правило, означает ложь. Кроме того, порядок предложений Prolog может влиять на выполнение, что не относится к логическим предложениям. В курсе, в котором я его использовал, я начал думать о Прологе как о языке сопоставления с образцом, а не о языке логики.
Поэтому программирование на Прологе зависит не столько от логической корректности, сколько от самого языка Пролог. В некотором смысле это полезный язык, но он далеко не так популярен, и в нем нет инструментов и преимуществ сообщества такого языка, как C ++.
источник