Подтвердить что ты не робот

Является ли Эрлангом язык программирования с ограничениями и логикой?

Так как Erlang основан на Prolog, означает ли это, что Erlang является языком ограничений-логики?
У Erlang есть строительные блоки Prolog: факты, правила и запрос

4b9b3361

Ответ 1

Нет.

Синтаксис Erlang очень похож на Prolog, но семантика очень отличается. Ранняя версия Erlang была написана с использованием Prolog, но сегодня Erlang больше не может быть, по сути, "основанным на Prolog".

Erlang не включает в себя backtracking или другие функции Prolog, регулярно используемые для логического программирования. Конечно, вы можете реализовать Prolog на других языках, и Erlang - это более простой выбор для этого, чем некоторые другие. Это можно увидеть в проекте Robert Virding "Erlog":

https://github.com/rvirding/erlog

Ответ 2

Да.

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

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

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

Ответ 3

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

Ответ 4

Вы можете использовать функцию распознавания списка в Erlang как способ реализации в стиле программирования ограничений.

% Produce the tuple {1, 0}
%
constraint_test() -> [ {A, B} ||
  A <- lists:seq(0, 1),
  B <- lists:seq(0, 1),
  A > B].

Вместо этого вы можете разместить генераторы элементов, взятые из списков (A < - lists: seq (0, 1)) и ограничений (A > B).

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

http://www.geocaching.com/seek/cache_details.aspx?guid=a8605431-53b5-4c2c-97fb-d42ee299b167