2016-02-27 4 views
6

Что случилось с Prolog?Prolog vs Erlang (и другие функциональные языки)

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

Возьмите Erlang в качестве примера. Его синтаксис заимствован из Prolog, он был первоначально реализован с помощью Prolog, что действительно интересно. То есть, с точки зрения Эрланга, в Prolog есть что-то принципиально неправильное, или они адаптировали Prolog к их потребностям.

+1

Есть ли какая-либо система, на которой работает Erlang, больше, чем [что делает Пролог] (https://www.sics.se/projects/sicstus-prolog-leading-prolog-technology)? – false

ответ

13

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

Да, у Prolog есть гораздо более продолжительная традиция, чем Эрланг. И это также много более сложный язык с точки зрения реализации! Гораздо труднее учить, усугубляя, например, тот факт, что задачи, которые уже были бы неразрешимы для новичков на всех других языках, традиционно даются в качестве первых нескольких примеров для новичков Prolog.

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

Сравнительно просто сделать продуманную версию Prolog эффективной и правильной. Не так для реальной вещи.

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

И мы делаем хочу настоящая вещь! Итак, да, в Prolog есть что-то не так: это трудно реализовать правильно. Но с Prolog очень многое, что связано с множеством функций, упомянутых выше: После того, как он полностью реализован, Prolog представляет собой удивительный и непревзойденную среду разработки для всех видов задач: от теоретической проверки до веб-хостинга , решение проблемы комбинаторной оптимизации, создание тестового примера и многие другие приложения, которые сейчас возникают.

Например, процессы процесса Erlang только сейчас разрабатываются для Prolog. См. Например, Torbjörn Lager's Pengines.

Почему это только сейчас (т. Е. Последние 2 года или около того) становится доступным в Prolog? Совсем просто: многие системы Prolog (в данном случае: SWI-Prolog) не совсем соответствовали стандарту для надежного запуска веб-серверов 24x7 до недавнего времени. И почему? Опять же, потому что трудно получить это право для Prolog из-за тонкой взаимозависимости его многочисленных дополнительных функций. Медленно мы, наконец, добираемся туда.

Пролог для победы!

+0

FWIW только что обменялся электронными письмами с Торбьорном, он говорит, что процессы мертвы. Но pengines, конечно же, не – Anniepoo

+0

Я думаю, что вы правы в том смысле, что (открытые) системы сейчас достигают уровня зрелости, что делает их интересными для реальной работы. Я думаю, что главная причина, почему это заняло так много времени, - это не так много, что это сложно, но еще больше, что ресурсы разработки фрагментированы по слишком многим реализациям. Теперь у нас есть ряд хороших реализаций. Тем не менее, каждый из них имеет совсем другой акцент. В идеале мы должны сидеть вместе и собирать новую систему, которая сочетает скорость YAP с таблицей XSB, ограничениями ECLiPSe и средой и интерфейсами SWI-Prolog. –

+2

Соответствие также поможет – false

3

Язык должен быть способен сортировать реальные проблемы лучше, чем другие языки, чтобы стать основным. Говоря об Erlang, это будет не что иное, как другие функциональные языки, если не его способность к программированию в режиме реального времени с упреждающей многозадачностью, способной обрабатывать миллионы параллельных задач. Это плюс его способность работать в виртуальной машине делает действительно мощную комбинацию. В этом смысле эти дополнения сделали Эрланга уникальным. Фактически, это единственный язык программирования actor-oriented, широко используемый в отрасли.

Посмотрите, сколько разных диалектов C/C++ было создано, и все же C/C++ находится в основном потоке. Эти новые диалекты просто не давали никакого преимущества по сравнению с тем, что уже было (или не достаточно большим).

Я уверен, что у Пролога есть своя ниша, но он не обеспечивает многого над тем, что могут предоставить другие языки, и shortlist of problems on Wikipedia предлагает некоторые соображения, связанные с соображениями.

+2

Это похоже на ответ на другой вопрос. –

+0

Почему? Вопрос в том, почему Prolog не стал основным, а Erlang (по крайней мере, до некоторой степени). В нем объясняется, что Эрланг добавляет, что у Prolog нет и как это помогает Erlang завоевать пользователей. – Amiramix

Смежные вопросы