Пролог профессионально полезен?


15

Я выучил Пролог много лет назад в университете. В моей профессиональной жизни мне никогда не приходилось пользоваться Прологом. Я пропустил что-то особенное?

Насколько я помню, Пролог требует совершенно другого мышления по сравнению с известными языками программирования.

Действительно ли Prolog когда-либо использовался для реализации чего-то профессионально полезного?


3
Пролог (и поплог) очень хороши для кодирования ИИ. Если вы не профессионально / серьезно занимаетесь вопросами, связанными с ИИ, вы можете вообще его не использовать. Как то, как неинженер может никогда не использовать MATLAB всерьез.
Glasnt

1
Хороший вопрос. Пролог - это первый язык программирования, который преподается в области компьютерной лингвистики в Uni Potsdam, но после этого мы не используем его на практике, даже если у нас это хорошо получается. Жаль. Каждый раз, когда я вижу такой вопрос, как «Как использовать аккумулятор» или «Как получить все возможные ответы» в StackOverflow, я задаюсь вопросом, где на самом деле находятся профессиональные пользователи - большинство вещей похоже на домашнюю работу. Или, может быть, знание Prolog превращает вас в робота, у которого никогда не возникает вопросов.
Феликс Домбек

Однажды я слышал о системе обнаружения неисправностей, написанной на Прологе и внедренной где-то в Австрии (Клагенфурт?). Согласно тому, что мне сказали, продукт был довольно хорошим и продавался покупателям. Если вы считаете это «профессионально полезным», то ответ «да».
Джорджио

Ответы:


12

На мой взгляд, изучение основ Пролога очень полезно, независимо от того, будете ли вы когда-либо использовать его в реальном мире. Также очень важно понять основные идеи, лежащие в основе объединения, и то, как (тривиальная и неэффективная) реализация может быть обработана.

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

Тем не менее, я согласен с тем, что Прологу нужно совсем другое мышление по сравнению с обычными императивными языками, а также совершенно другое мышление по сравнению с функциональными языками. Помимо определенного момента, это, похоже, требует большого опыта (так же, как и с чем угодно), и есть даже много «учебников» знаний, которые заставляют мой мозг капать из моих ушей.

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

Недавно я читал книгу об искусственном интеллекте и экспертных системах, опубликованную в 1989 году - удачная находка в подержанном книжном магазине. В значительной степени это специализированное руководство по Лиспу и Прологу. Правда, большая часть того, что он охватывает, не была столь впечатляющей в течение долгого времени (поиск, эвристика и т. Д.), Но это все еще очень интересно, и IMO стоит потратить немного времени.

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


AI / Пролог новичок здесь. Какие интернет-ресурсы вы бы порекомендовали?
Яти Сагаде

@yati - попробуйте amzi.com/AdventureInProlog/advtop.php - однажды я пробежал учебник по сайту Amzi, ​​который, насколько я помню, показался мне нормальным, но это было очень давно. Все, что я смотрел в последнее время (вероятно, последние 5 лет) для Пролога, это книга об ИИ, о которой я упоминал в этом ответе. Вам следует искать / задавать вопрос здесь, а не публиковать комментарии, особенно комментарии, добавленные к ответам, написанным кем-то, кто в любом случае является долгосрочным новичком. Пролог - это то, на что я смотрю редко и очень мало - иначе я бы перестал быть новичком десять или более лет назад.
Steve314

10

Это был не я, но предполагая, что вопрос может быть "кто-нибудь реализовал что-то серьезное с прологом?" это может рассчитывать:

http://asmarterplanet.com/blog/2011/02/the-watson-research-team-answers-your-questions.html

Watson оснащен 10 стойками серверов IBM Power 750 под управлением Linux, использует 15 терабайт оперативной памяти, 2880 процессорных ядер и способен работать на скорости 80 терафлопс. Watson был написан в основном на Java, но значительная часть кода написана на C ++ и Prolog, все компоненты развернуты и интегрированы с использованием UIMA.


7

Я знаю, что программисты ИИ используют его ... потому что я проходил курс Пролог в своем классе ИИ, но кроме этого я не видел, чтобы кто-то еще говорил об этом. вот похожий вопрос с лотосами ответами! /programming/130097/real-world-prolog-usage


6

Пролог отлично подходит для быстрого прототипирования. Например, в http://www.cri.ensmp.fr/classement/doc/A-381.pdf SSA-преобразование для GCC сначала реализовано в Prolog, а затем в C.

Я использую Prolog внутри компиляторов для быстрой и грязной реализации систем типов, определенных оптимизаций и семантических проверок, и я переписываю этот код Prolog в нечто обязательное, только если его производительность неприемлема.


2

Вы ответили довольно быстро, но я использовал Prolog в середине 90-х годов для разработки калькуляторов страховых тарифов, которые определяли бы для нас определенные сегменты клиентов (риск чтения), которые будут соответствовать премиальным ставкам. Это то, что вы не обязательно увидите изо дня в день, но, безусловно, повлияло на ваши надбавки за P & C на протяжении многих лет.


2

Согласно (Этот FAQ) 1 Партия Уотсона, машины IBM, которая играла в Jeopardy, была написана на прологе. (см. вопрос № 6)


1

Я использовал Prolog профессионально в (значительном) числе случаев (диагностическая экспертная система; преобразование HTML; заданное членство). Я испытываю глубокую привязанность к языку, поэтому, да, здесь есть предвзятость, но легко быть объективным в отношении того, когда Prolog подходит (более / просто так) - вам действительно нужно обрабатывать рекурсивные структуры ; лучший пример, который я могу привести, - это таблица реляционной базы данных, но существует множество других примеров (вероятно, проще перечислить контрпримеры, такие как случайный пользовательский ввод или (большинство) математических функций (однако, многие математические функции имеют рекурсивную структуру и, следовательно, идеально подходят (например, дискретное быстрое преобразование Фурье)).

Но, конечно, очень немногие «сквозные системы» могут быть определены исключительно с точки зрения обработки рекурсивных структур (исключение: доказательство теоремы, но это довольно академическое упражнение *), так что повезло, что процесс пролога может быть привит к «более стандартному обязательному процессу» с использованием всевозможных различных методов (вряд ли имеет значение, что, но интерфейс веб-службы, вероятно, в целом подходит); так что вы можете иметь дело с пользовательским интерфейсом, обработкой случайных событий и т. д., а затем передавать их при необходимости (для выполнения сложных запросов к базе данных или любого количества вещей, которые вы, возможно, захотите сделать со своими рекурсивными структурами). Я считаю, что это работает прекрасно - лучше, чем, например, LINQ.

Захватите свои рекурсивные структуры за чувствительные биты и напишите какой-нибудь прекрасный, чистый, элегантный, обслуживаемый Пролог! :)

PS когда я не использую Пролог, я возвращаюсь к C #

  • Хотя, я скучаю по тому дню, когда, по крайней мере, некоторые аспекты коммерческих программ оказались правильными в качестве стандартной практики.

1

Попробуйте написать решатель судоку на своем любимом языке, а затем проверьте, как это делается в Прологе. В общем, любая проблема CLP хорошо подходит для декларативного языка, такого как Prolog.

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

Наконец, Prolog оказывает глубокое влияние на Erlang, имея в виду отказоустойчивость и параллелизм.


0

Программное обеспечение, которое читает и сортирует большую часть почты в США и некоторых других странах, написано на Прологе с использованием высоко оптимизированного компилятора. Синтаксис почтовых адресов записан в грамматиках определенных разделов, что облегчает обслуживание и упрощает адаптацию читателя к соглашениям различных стран и промышленных пользователей. Почтовые службы часто имеют сложные наборы правил о вещах, таких как адреса пересылки, почтовые ящики и адреса улиц и т. Д., И эти правила также сформулированы в Прологе для простоты обслуживания.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.