Logtalk - Logtalk
Парадигма | Логическое программирование, объектно-ориентированного программирования, программирование на основе прототипов |
---|---|
Разработано | Пауло Моура |
Впервые появился | 1998 |
Стабильный выпуск | 3.33.0 / 3 декабря 2019 |
Операционные системы | Кроссплатформенность |
Лицензия | Художественная лицензия 2.0 (2.x) / Лицензия Apache 2.0 (3.01.x) |
Интернет сайт | разговор |
Под влиянием | |
Пролог, Болтовня, Цель-C |
Logtalk является объектно-ориентированный логическое программирование язык, который расширяет и использует Пролог язык с набором функций, подходящим для программирование в большом.[1] Он обеспечивает поддержку инкапсуляция и скрытие данных, разделение проблем и улучшенный повторное использование кода.[1] Logtalk использует стандартный синтаксис Пролога с добавлением нескольких операторов и директив.
Реализация языка Logtalk распространяется под лицензия с открытым исходным кодом и может работать с использованием реализации Пролога (соответствует официальным и де-факто стандартам)[1] как бэкэнд компилятор.
Функции
Logtalk стремится объединить преимущества объектно-ориентированного программирования и логического программирования.[1] Объектная ориентация делает упор на разработку дискретных, многократно используемых единиц программного обеспечения, в то время как логическое программирование делает упор на декларативное представление знаний о каждом объекте.
Как объектно-ориентированный язык программирования, основные функции Logtalk включают поддержку как классы (с необязательным метаклассы ) и прототипы, параметрические объекты,[2] протоколы (интерфейсы ), категории (компоненты, аспекты, горячее исправление ), множественное наследование, публичное / защищенное / частное наследование, событийно-ориентированное программирование, высокоуровневое многопоточное программирование,[3] отражение, и автоматическое создание документации.
Для программистов на Prolog Logtalk обеспечивает широкую переносимость, включая предикат. пространства имен (поддерживает как статические, так и динамические объекты), предикаты публичных / защищенных / частных объектов, коиндуктивные предикаты, разделение интерфейса и реализации, простая и интуитивно понятная семантика метапредикатов, лямбда-выражения, грамматики с определенными предложениями, механизм расширения терминов и условная компиляция. Он также предоставляет модульную систему, основанную на де-факто стандартной функциональности основного модуля (внутри модули компилируются как прототипы).
Примеры
Синтаксис Logtalk основан на Прологе:
?- записывать('Привет, мир'), нл.Здравствуйте Миристинный.
Определение объекта:
:- объект(мой_первый_объект). :- инициализация((записывать('Привет, мир'), нл)). :- общественный(p1/0). p1 :- записывать('Это публичный предикат'), нл. :- частный(p2/0). p2 :- записывать('Это частный предикат'), нл.:- end_object.
Используя объект, предполагая, что он сохранен в файле my_first_object.lgt:
?- logtalk_load(мой_первый_объект).Здравствуйте Миристинный.?- my_first_object::p1.Этот является публичный предикатистинный.
Попытка получить доступ к частному предикату дает ошибку:
?- my_first_object::p2.ОШИБКА: ошибка(permission_error(доступ, частный_предикат, p2), my_first_object::p2, пользователь)
Анонимные функции
Logtalk использует следующий синтаксис для анонимных предикатов (лямбда-выражений):
{FreeVar1, FreeVar2, ...}/[LambdaParameter1, LambdaParameter2, ...]>>Цель
Простой пример без свободных переменных и с использованием предиката отображения списка:
| ?- мета::карта([Икс,Y]>>(Y является 2*Икс), [1,2,3], Ys).Ys = [2,4,6]да
Также поддерживается каррирование. Приведенный выше пример можно записать как:
| ?- мета::карта([Икс]>>([Y]>>(Y является 2*Икс)), [1,2,3], Ys).Ys = [2,4,6]да
Совместимость с серверной частью Prolog
По состоянию на октябрь 2016 года поддерживаемые серверные компиляторы Пролога включают B-Prolog, CxProlog, Затмение, GNU Prolog, JIProlog, Lean Prolog, Qu-Prolog, Quintus Prolog, SICStus Prolog, SWI-Prolog, XSB, и YAP.[4] Logtalk позволяет использовать внутренние библиотеки компилятора Пролога из объектов и категорий.
Инструменты разработчика
Logtalk включает в себя онлайн-справку, инструмент для документирования (который может генерировать файлы PDF и HTML), инструмент для создания диаграмм сущностей, встроенный отладчик (на основе расширенной версии традиционной модели Procedure Box, имеющейся в большинстве компиляторов Prolog), фреймворк модульного тестирования с анализом покрытия кода, а также совместим с выбранными внутренними профилировщиками Prolog и графическими трассировщиками.[5]
Приложения
Logtalk был использован для обработки ШАГ модели данных, используемые для обмена информация о производстве продукта.[6] Он также использовался для реализации системы рассуждений, которая позволяет обосновывать предпочтения и решение ограничений.[7]
Смотрите также
Рекомендации
- ^ а б c d Пауло Моура (2003). Logtalk: разработка языка объектно-ориентированного логического программирования. Кандидатская диссертация. Universidade da Beira Interior
- ^ Моура, Пауло (2011). Шаблоны программирования для параметрических объектов Logtalk. Приложения декларативного программирования и управления знаниями. Конспект лекций по информатике. 6547. Дои:10.1007/978-3-642-20589-7_4. ISBN 978-3-642-20588-0.
- ^ «Практические аспекты декларативных языков». Конспект лекций по информатике. 4902. 2008. Дои:10.1007/978-3-540-77442-6. ISBN 978-3-540-77441-9. Цитировать журнал требует
| журнал =
(Помогите) - ^ «Совместимость с Logtalk». Logtalk.org. 2016-10-10. Получено 2018-01-04.
- ^ / (2013-02-12). «Инструменты разработчика - LogtalkDotOrg / logtalk3 Wiki - GitHub». Github.com. Получено 2013-08-19.CS1 maint: числовые имена: список авторов (ссылка на сайт)
- ^ «Логическое программирование». Конспект лекций по информатике. 4079. 2006. Дои:10.1007/11799573. ISBN 978-3-540-36635-5. Цитировать журнал требует
| журнал =
(Помогите) - ^ Виктор Ноэль; Антонис Какас (2009). Gorgias-C: расширение аргументации с помощью решения ограничений (PDF). Логическое программирование и немонотонные рассуждения. Конспект лекций по информатике. 5753. С. 535–541.
внешняя ссылка
- Официальный веб-сайт
- Logtalking блог
- От простого пролога к объектам Logtalk: эффективная инкапсуляция и повторное использование кода (приглашенный доклад). Пауло Моура. Труды 25-й Международной конференции по логическому программированию (ICLP), июль 2009 г. LNCS 5649. Springer-Verlag Berlin Heidelberg ». (Слайды )