Logtalk


Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

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

Функции

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

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

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

Примеры

Синтаксис Logtalk основан на Прологе:

? -  написать ( 'Hello world' ), nl .Привет, мир, правда .

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

: - объект (my_first_object).  : - инициализация (( 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.Это  является публичным предикатом верно .

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

? - my_first_object :: p2.ОШИБКА : ошибка ( permission_error (доступ, private_predicate, p2), my_first_object :: p2, пользователь)

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

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

{ FreeVar1 , FreeVar2 , ... } / [ LambdaParameter1 , LambdaParameter2 , ...] >> Цель

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

| ? - meta :: map ([ X , Y ] >> ( Y  равно  2 * X ), [ 1 , 2 , 3 ], Ys ).Ys  = [ 2 , 4 , 6 ]
да

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

| ? - meta :: map ([ X ] >> ([ Y ] >> ( Y  равно  2 * X )), [ 1 , 2 , 3 ], Ys ).Ys  = [ 2 , 4 , 6 ]
да

Совместимость с серверной частью 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 позволяет использовать внутренние библиотеки компилятора Пролога из объектов и категорий.

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

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

Приложения

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

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

  • Меркурий (язык программирования)
  • Оз (язык программирования)
  • Пролог ++
  • Визуальный пролог

использованная литература

  1. ^ а б в г Пауло Моура (2003). Logtalk: Дизайн объектно-ориентированного логического языка программирования. Кандидатская диссертация. Universidade da Beira Interior
  2. Перейти ↑ Moura, Paulo (2011). Шаблоны программирования для параметрических объектов Logtalk . Приложения декларативного программирования и управления знаниями. Конспект лекций по информатике. 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. Цитировать журнал требует |journal=( помощь )
  4. ^ "Совместимость с Logtalk" . Logtalk.org. 2016-10-10 . Проверено 6 июля 2021 .
  5. ^ / (12 февраля 2013 г.). «Инструменты разработчика - LogtalkDotOrg / logtalk3 Wiki - GitHub» . Github.com . Проверено 19 августа 2013 .CS1 maint: числовые имена: список авторов ( ссылка )
  6. ^ «Логическое программирование». Конспект лекций по информатике. 4079 . 2006. DOI : 10.1007 / 11799573 . ISBN 978-3-540-36635-5. Цитировать журнал требует |journal=( помощь )
  7. Виктор Ноэль; Антонис Какас (2009). Gorgias-C: Расширение аргументации с помощью решения ограничений (PDF) . Логическое программирование и немонотонные рассуждения. Конспект лекций по информатике . 5753 . С. 535–541.

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

  • Официальный веб-сайт
  • Logtalking блог
  • От простого пролога к объектам Logtalk: эффективная инкапсуляция и повторное использование кода (приглашенный доклад). Пауло Моура. Труды 25-й Международной конференции по логическому программированию (ICLP), июль 2009 г. LNCS 5649. Springer-Verlag Berlin Heidelberg ». ( Слайды )
Источник « https://en.wikipedia.org/w/index.php?title=Logtalk&oldid=1032440154 »