Я выучил Пролог много лет назад в университете. В моей профессиональной жизни мне никогда не приходилось пользоваться Прологом. Я пропустил что-то особенное?
Насколько я помню, Пролог требует совершенно другого мышления по сравнению с известными языками программирования.
Действительно ли Prolog когда-либо использовался для реализации чего-то профессионально полезного?
programming-languages
prolog
Gursel Koca
источник
источник
Ответы:
На мой взгляд, изучение основ Пролога очень полезно, независимо от того, будете ли вы когда-либо использовать его в реальном мире. Также очень важно понять основные идеи, лежащие в основе объединения, и то, как (тривиальная и неэффективная) реализация может быть обработана.
Если у вас есть проблема, которую лучше всего решить с помощью декларативной логики, вы должны в идеале признать это и знать (если у вас есть выбор) использовать правильные инструменты для этой работы.
Тем не менее, я согласен с тем, что Прологу нужно совсем другое мышление по сравнению с обычными императивными языками, а также совершенно другое мышление по сравнению с функциональными языками. Помимо определенного момента, это, похоже, требует большого опыта (так же, как и с чем угодно), и есть даже много «учебников» знаний, которые заставляют мой мозг капать из моих ушей.
У меня сложилось впечатление ... мы, вероятно, оба упускаем что-то особенное в некоторой степени, но было бы нецелесообразно тратить время на изучение даже достаточно полных знаний на уровне учебника для Пролога, не говоря уже о попытках развить реальный опыт , если вы не рассматриваете возможную карьеру в области логического программирования.
Недавно я читал книгу об искусственном интеллекте и экспертных системах, опубликованную в 1989 году - удачная находка в подержанном книжном магазине. В значительной степени это специализированное руководство по Лиспу и Прологу. Правда, большая часть того, что он охватывает, не была столь впечатляющей в течение долгого времени (поиск, эвристика и т. Д.), Но это все еще очень интересно, и IMO стоит потратить немного времени.
Более поздние книги, в которых конкретно описывается Пролог, были бы лучше для изучения языка, но тогда риск состоит в том, что ваш мозг будет капать из ваших ушей где-то в промежуточном или продвинутом материале.
источник
Это был не я, но предполагая, что вопрос может быть "кто-нибудь реализовал что-то серьезное с прологом?" это может рассчитывать:
http://asmarterplanet.com/blog/2011/02/the-watson-research-team-answers-your-questions.html
источник
Я знаю, что программисты ИИ используют его ... потому что я проходил курс Пролог в своем классе ИИ, но кроме этого я не видел, чтобы кто-то еще говорил об этом. вот похожий вопрос с лотосами ответами! /programming/130097/real-world-prolog-usage
источник
Пролог отлично подходит для быстрого прототипирования. Например, в http://www.cri.ensmp.fr/classement/doc/A-381.pdf SSA-преобразование для GCC сначала реализовано в Prolog, а затем в C.
Я использую Prolog внутри компиляторов для быстрой и грязной реализации систем типов, определенных оптимизаций и семантических проверок, и я переписываю этот код Prolog в нечто обязательное, только если его производительность неприемлема.
источник
Вы ответили довольно быстро, но я использовал Prolog в середине 90-х годов для разработки калькуляторов страховых тарифов, которые определяли бы для нас определенные сегменты клиентов (риск чтения), которые будут соответствовать премиальным ставкам. Это то, что вы не обязательно увидите изо дня в день, но, безусловно, повлияло на ваши надбавки за P & C на протяжении многих лет.
источник
Согласно (Этот FAQ) 1 Партия Уотсона, машины IBM, которая играла в Jeopardy, была написана на прологе. (см. вопрос № 6)
источник
Я использовал Prolog профессионально в (значительном) числе случаев (диагностическая экспертная система; преобразование HTML; заданное членство). Я испытываю глубокую привязанность к языку, поэтому, да, здесь есть предвзятость, но легко быть объективным в отношении того, когда Prolog подходит (более / просто так) - вам действительно нужно обрабатывать рекурсивные структуры ; лучший пример, который я могу привести, - это таблица реляционной базы данных, но существует множество других примеров (вероятно, проще перечислить контрпримеры, такие как случайный пользовательский ввод или (большинство) математических функций (однако, многие математические функции имеют рекурсивную структуру и, следовательно, идеально подходят (например, дискретное быстрое преобразование Фурье)).
Но, конечно, очень немногие «сквозные системы» могут быть определены исключительно с точки зрения обработки рекурсивных структур (исключение: доказательство теоремы, но это довольно академическое упражнение *), так что повезло, что процесс пролога может быть привит к «более стандартному обязательному процессу» с использованием всевозможных различных методов (вряд ли имеет значение, что, но интерфейс веб-службы, вероятно, в целом подходит); так что вы можете иметь дело с пользовательским интерфейсом, обработкой случайных событий и т. д., а затем передавать их при необходимости (для выполнения сложных запросов к базе данных или любого количества вещей, которые вы, возможно, захотите сделать со своими рекурсивными структурами). Я считаю, что это работает прекрасно - лучше, чем, например, LINQ.
Захватите свои рекурсивные структуры за чувствительные биты и напишите какой-нибудь прекрасный, чистый, элегантный, обслуживаемый Пролог! :)
PS когда я не использую Пролог, я возвращаюсь к C #
источник
Попробуйте написать решатель судоку на своем любимом языке, а затем проверьте, как это делается в Прологе. В общем, любая проблема CLP хорошо подходит для декларативного языка, такого как Prolog.
Он также широко используется при формальной проверке аппаратного и программного обеспечения (академически и, вероятно, профессионально, но я не имею никаких ссылок на компании).
Наконец, Prolog оказывает глубокое влияние на Erlang, имея в виду отказоустойчивость и параллелизм.
источник
Программное обеспечение, которое читает и сортирует большую часть почты в США и некоторых других странах, написано на Прологе с использованием высоко оптимизированного компилятора. Синтаксис почтовых адресов записан в грамматиках определенных разделов, что облегчает обслуживание и упрощает адаптацию читателя к соглашениям различных стран и промышленных пользователей. Почтовые службы часто имеют сложные наборы правил о вещах, таких как адреса пересылки, почтовые ящики и адреса улиц и т. Д., И эти правила также сформулированы в Прологе для простоты обслуживания.
источник