Jump to content

Логток

Логток
Парадигма Логическое программирование , объектно-ориентированное программирование , программирование на основе прототипов.
Разработано Пауло Моура
Впервые появился 1998 год ; 26 лет назад ( 1998 )
Стабильная версия
3.66.0 / 30 мая 2023 г .; 14 месяцев назад ( 30 мая 2023 )
ТЫ Кросс-платформенный
Лицензия Художественная лицензия 2.0 (2.x) / Лицензия Apache 2.0 (3.01.x)
Веб-сайт журнальный разговор .org
Под влиянием
Пролог , Smalltalk , Objective-C

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

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

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

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

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

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

?- write('Hello world'), nl.
Hello world
true.

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

:- object(my_first_object).

    :- initialization((write('Hello world'), nl)).

    :- public(p1/0).
    p1 :- write('This is a public predicate'), nl.

    :- private(p2/0).
    p2 :- write('This is a private predicate'), nl.

:- end_object.

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

?- logtalk_load(my_first_object).
Hello world
true.

?- my_first_object::p1.
This is a public predicate
true.

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

?- my_first_object::p2.
ERROR: error(permission_error(access, private_predicate, p2), my_first_object::p2, user)

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

[ редактировать ]

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

{FreeVar1, FreeVar2, ...}/[LambdaParameter1, LambdaParameter2, ...]>>Goal

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

| ?- meta::map([X,Y]>>(Y is 2*X), [1,2,3], Ys).
Ys = [2,4,6]
yes

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

| ?- meta::map([X]>>([Y]>>(Y is 2*X)), [1,2,3], Ys).
Ys = [2,4,6]
yes

Совместимость с серверной частью Пролога

[ редактировать ]

Поддерживаемые внутренние компиляторы Пролога включают 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), инструмент генератора диаграмм сущностей, встроенный отладчик (основанный на расширенной версии традиционной модели «Процедурный блок», присутствующей в большинстве компиляторов Пролога), среда модульного тестирования с анализом покрытия кода, а также совместима с некоторыми внутренними профилировщиками и графическими трассировщиками Prolog. [5]

Приложения

[ редактировать ]

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

См. также

[ редактировать ]
  1. ^ Jump up to: а б с д Пауло Моура (2003). Logtalk: Разработка объектно-ориентированного языка программирования. Докторская диссертация. Университет внутренних дел Бейры
  2. ^ Моура, Пауло (2011). Шаблоны программирования для параметрических объектов Logtalk . Приложения декларативного программирования и управления знаниями. Конспекты лекций по информатике. Том. 6547. дои : 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. 10.10.2016 . Проверено 6 июля 2021 г.
  5. ^ «Инструменты разработчика — LogtalkDotOrg/logtalk3 Wiki — GitHub» . Гитхаб.com. 12 февраля 2013 г. Проверено 19 августа 2013 г.
  6. ^ Логическое программирование . Конспекты лекций по информатике. Том. 4079. 2006. doi : 10.1007/11799573 . ISBN  978-3-540-36635-5 .
  7. ^ Виктор Ноэль; Антонис Какас (2009). Горгий-C: Расширение аргументации с помощью решения ограничений (PDF) . Логическое программирование и немонотонное рассуждение. Конспекты лекций по информатике . Том. 5753. стр. 535–541.
[ редактировать ]
  • Официальный сайт
  • Блог Logtalking
  • От простого Пролога к объектам Logtalk: эффективная инкапсуляция и повторное использование кода (приглашенный доклад). Пауло Моура. Материалы 25-й Международной конференции по логическому программированию (ICLP), июль 2009. LNCS 5649. Springer-Verlag Berlin Heidelberg». ( Слайды )
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: f74a5a9f6a9e015834a62729068c3353__1710459900
URL1:https://arc.ask3.ru/arc/aa/f7/53/f74a5a9f6a9e015834a62729068c3353.html
Заголовок, (Title) документа по адресу, URL1:
Logtalk - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)