stringtranslate.com

Логток

Logtalk — это объектно-ориентированный язык логического программирования , который расширяет и использует язык Prolog с набором функций, подходящим для программирования в больших системах . [1] Он обеспечивает поддержку инкапсуляции и сокрытия данных , разделения задач и улучшенного повторного использования кода . [1] Logtalk использует стандартный синтаксис Prolog с добавлением нескольких операторов и директив.

Реализация языка Logtalk распространяется по лицензии с открытым исходным кодом и может работать с использованием реализации Prolog (соответствующей официальным и фактическим стандартам) [1] в качестве внутреннего компилятора.

Функции

Logtalk стремится объединить преимущества объектно-ориентированного программирования и логического программирования. [1] Объектно-ориентированное программирования делает акцент на разработке дискретных, повторно используемых единиц программного обеспечения, в то время как логическое программирование делает акцент на представлении знаний каждого объекта декларативным способом.

Как объектно-ориентированный язык программирования, Logtalk имеет следующие основные функции: поддержка классов ( с дополнительными метаклассами ) и прототипов , параметрических объектов, [2] протоколов ( интерфейсов ), категорий (компонентов, аспектов , горячих исправлений ), множественного наследования , открытого/защищенного/частного наследования, событийно-управляемого программирования , высокоуровневого многопоточного программирования, [3] рефлексии и автоматической генерации документации.

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

Примеры

Синтаксис Logtalk основан на Prolog:

?-  write ( 'Привет, мир' ), nl . Привет, мир правда .

Определение объекта:

:- объект (мой_первый_объект).  :- инициализация (( write ( 'Hello world' ), nl )).  :- публичный (p1 / 0 ). p1 :-  write ( 'Это публичный предикат' ), nl .  :- частный (p2 / 0 ). p2 :-  write ( 'Это частный предикат' ), nl .:- конец_объекта .

Используя объект, предположим, что он сохранен в файле my_first_object.lgt:

?-  logtalk_load (my_first_object). Привет, мир, правда .?- my_first_object :: p1. Это публичный предикат true .

Попытка доступа к частному предикату приводит к ошибке:

?- my_first_object :: p2. ОШИБКА : error( permission_error (access, private_predicate, p2), my_first_object :: p2, user)

Анонимные функции

Logtalk использует следующий синтаксис для анонимных предикатов (лямбда-выражений):

{ FreeVar1 , FreeVar2 , ... } / [ ЛямбдаПараметр1 , ЛямбдаПараметр2 , ...] >> Цель

Простой пример без свободных переменных и с использованием предиката отображения списка:

| ?- мета :: map([ X , Y ] >> ( Y  is  2 * X ), [ 1 , 2 , 3 ], Ys ). Ys  = [ 2 , 4 , 6 ]да

Каррирование также поддерживается. Приведенный выше пример можно записать так:

| ?- мета :: map([ X ] >> ([ Y ] >> ( Y  is  2 * X )), [ 1 , 2 , 3 ], Ys ). Ys  = [ 2 , 4 , 6 ]да

Совместимость с внутренним интерфейсом Prolog

Поддерживаемые внутренние компиляторы Prolog включают B-Prolog , Ciao Prolog , CxProlog, ECLiPSe , GNU Prolog , JIProlog, Quintus Prolog , Scryer Prolog, SICStus Prolog , SWI-Prolog , Tau Prolog, Trealla Prolog, XSB и YAP . [4] Logtalk позволяет использовать библиотеки внутренних компиляторов Prolog из объектов и категорий.

Инструменты разработчика

Logtalk включает в себя онлайн-справку, инструмент документирования (который может генерировать файлы PDF и HTML), инструмент генератора диаграмм сущностей, встроенный отладчик (основанный на расширенной версии традиционной модели Procedure Box, присутствующей в большинстве компиляторов Prolog), фреймворк модульного тестирования с анализом покрытия кода, а также совместим с выбранными внутренними профилировщиками Prolog и графическими трассировщиками. [5]

Приложения

Logtalk использовался для обработки моделей данных STEP , используемых для обмена информацией о производстве продукции . [6] Он также использовался для внедрения системы рассуждений, которая позволяет делать рассуждения о предпочтениях и решать проблемы ограничений . [7]

Смотрите также

Ссылки

  1. ^ abcd Пауло Моура (2003). Logtalk: Разработка объектно-ориентированного языка программирования. Кандидатская диссертация. Интерьер Университета Бейры
  2. ^ Moura, Paulo (2011). Programming Patterns for Logtalk Parametric Objects . Applications of Declarative Programming and Knowledge Management. Lecture Notes in Computer Science. Vol. 6547. doi :10.1007/978-3-642-20589-7_4. ISBN 978-3-642-20588-0.
  3. ^ Практические аспекты декларативных языков . Конспект лекций по информатике. Том 4902. 2008. doi :10.1007/978-3-540-77442-6. ISBN 978-3-540-77441-9.
  4. ^ "Совместимость Logtalk". Logtalk.org. 2016-10-10 . Получено 2021-07-06 .
  5. ^ "Инструменты разработчика – LogtalkDotOrg/logtalk3 Wiki – GitHub". Github.com. 2013-02-12 . Получено 2013-08-19 .
  6. ^ Логическое программирование . Конспект лекций по информатике. Том 4079. 2006. doi :10.1007/11799573. ISBN 978-3-540-36635-5.
  7. ^ Виктор Ноэль; Антонис Какас (2009). Gorgias-C: Расширение аргументации с помощью решения ограничений (PDF) . Логическое программирование и немонотонные рассуждения. Конспект лекций по информатике . Том 5753. С. 535–541.

Внешние ссылки