Существует ли эталонная реализация ISO-Prolog?

У Java есть эталонная реализация.

Есть ли у ISO-Prolog эталонная реализация?

У меня есть INCITS/ISO/IEC 13211-1:1995 (R 2007), поэтому нет необходимости это предлагать.

РЕДАКТИРОВАТЬ

Примечания: оценка соответствия I: синтаксис

4 ответа

Решение

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

Для ISO Prolog нет эталонной реализации. Как и в случае с C, C++ или любым другим стандартизированным языком программирования ISO/IEC. Обратите внимание, что Java не стандартизирована ни одним органом по стандартизации, таким как ISO, IEC, ITU или CEN, ни каким-либо национальным органом, таким как ANSI; а скорее одной компанией. И именно эта компания обеспечивает эталонную реализацию.

Кроме того, Пролог существует с 1972 года - задолго до того, как произошла какая-либо стандартизация. И это был первый язык в своем роде и парадигме. Вскоре он разделился на несколько разных диалектов с несовместимым синтаксисом (Пролог 1, Эдинбург, Пролог II и т. Д.). 1984 г. был распространен один из первых связанных с стандартом документов - проект предлагаемого стандарта для прогнозируемых прологов предикатов, разработанный Ричардом О'Кифом. BSI начал в 1984 году; AFNOR 1985. В 1987 году начался процесс ISO, в 1995 году был выпущен ISO/IEC 13211-1.

Сравните это с Java, который развивался из предыдущих языков, таких как C, C++, а также других объектно-ориентированных языков и многое унаследовал от них. Он был разработан совсем по-другому, когда компания жестко защищала язык от всевозможных отклонений. Подумайте об этом: даже копии руководств было запрещено предлагать в Интернете.

В любом случае системы Prolog с ближайшим соответствием:

  1. SICStus Prolog 4.3 beta 1. Не известно, что неправильно истолкован какой-либо действительный текст Prolog. Полная поддержка Cor.1, Cor.2.

  2. GNU Prolog 1.4.4 ( версия git). Не известно, что неправильно прочитал любой действительный текст Пролога. Некоторые отличия в арифметике. В противном случае Cor.1, Cor.2.

  3. IF / Prolog V5. Единственная система, предлагающая строго соответствующий режим (см. ISO/IEC 13211-1:1995, подраздел 5.1 e).

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

Еще одна реализация, которая обеспечивает строго соответствующий режим, - это ECLiPSe.
Используйте это с -L iso_strict опция командной строки.

Цитирование из заявления о соответствии:

ECLiPSe обеспечивает реализацию Стандартного Пролога, как определено в ИСО / МЭК 13211-1 (Информационные технологии, Языки программирования, Пролог, Часть 1, Общее ядро, 1995) и технических исправлений ИСО / МЭК 13211-1 ТС1 (2007) и ТС2 (2012).

Нет. Но GNU Prolog довольно близко следует стандарту ISO Prolog Core. Также обратите внимание, что это обеспечивает strict_iso флаг.

Есть и другие компиляторы Prolog, которые обеспечивают хорошее соответствие стандартам.

Непосредственно из руководства SICStus Prolog, 4.3.0:

Соответствие ISO

SICStus Prolog полностью соответствует международному стандарту ISO/IEC 13211-1 (PROLOG: Часть 1 - Общее ядро), дополненному Техническими исправлениями 1 и 2.

Чтобы помочь программистам, которые хотят писать стандартные совместимые программы, встроенные предикаты и арифметические функторы, являющиеся частью стандарта ISO Prolog, помечены [ISO] в этом руководстве.

Подумайте: необходимость показать соответствие выпущенному комитетом техническому документу 1995 года, кроме как в общем, трудно обосновать, если только вы не хотите запускать большой объем унаследованного кода, который по какой-либо причине не может быть обновлен. Вы хотите работать с использованием современных идей и функций, а не соответствовать преждевременным нормативным справкам из древних времен (когда рабочие станции Sun имели 120 МГц ЦП и 24 МБ ОЗУ).

См. Также главу " Позиционирование SWI-Prolog" в руководстве SWI Prolog.

Чтобы освободить людей от поиска, список:

Другие вопросы по тегам