Logtalk
Pojawienie się | 1998 |
---|---|
Paradygmat | programowanie logiczne, programowanie obiektowe |
Pochodne | Prolog, Smalltalk, Objective-C |
Aktualna wersja stabilna | 3.33.0 |
Twórca | Paulo Moura |
Licencja | Licencja Artystyczna (2.x) / Apache License (3.01.x) |
Strona internetowa |
Logtalk – zorientowany obiektowo logiczny język programowania, który rozszerza i wykorzystuje język Prolog z zestawem funkcji odpowiednich do programowania na dużą skalę. Zapewnia obsługę enkapsulacji i ukrywania danych, separacji problemów i ulepszonego ponownego wykorzystania kodu. Logtalk używa standardowej składni Prologu z dodatkiem kilku operatorów i dyrektyw.
Implementacja języka Logtalk jest rozpowszechniana na licencji open source i może działać przy użyciu implementacji Prologu (zgodnej z oficjalnymi i de facto standardami)[1] jako kompilator back-endowy.
Funkcje
Logtalk ma na celu połączenie zalet programowania obiektowego i programowania logicznego. Orientacja obiektowa kładzie nacisk na tworzenie dyskretnych, wielokrotnego użytku jednostek oprogramowania, podczas gdy programowanie logiczne kładzie nacisk na reprezentowanie wiedzy o każdym obiekcie w sposób deklaratywny.
Jako język programowania zorientowanego obiektowo, główne funkcje Logtalk obejmują obsługę zarówno klas (z opcjonalnymi metaklasami)[1], jak i prototypów, obiektów parametrycznych, protokołów (interfejsów), kategorii (komponentów, aspektów, poprawiania na gorąco), dziedziczenia wielokrotnego, publicznego/chronionego/prywatnego dziedziczenie, programowanie sterowane zdarzeniami, programowanie wielowątkowe wysokiego poziomu, refleksja i automatyczne generowanie dokumentacji.
Programistom języka Prolog, Logtalk zapewnia dużą przenośność, obejmując przestrzenie nazw (obsługujące zarówno obiekty statyczne, jak i dynamiczne), przestrzenie nazw obiektów publicznych/chronionych/prywatnych, predykaty koindukcyjne, separację między interfejsem a implementacją, prostą i intuicyjną semantykę metapredykatów, wyrażenia lambda, gramatyki klauzul, mechanizm rozszerzania terminów i kompilacja warunkowa. Zapewnia również system modułowy oparty na de facto standardowej podstawowej funkcjonalności modułu (wewnętrznie moduły są kompilowane jako prototypy).
Przykłady
Składnia języka Logtalk jest podobna do Prologa:
?- write('Hello world'), nl. Hello world true.
Definiowanie obiektu:
:- object(moj_pierwszy_obiekt). :- initialization((write('Hello world'), nl)). :- public(p1/0). p1 :- write('To jest predykat publiczny'), nl. :- private(p2/0). p2 :- write('To jest predykat prywatny'), nl. :- end_object.
Korzystając z obiektu, zakładając, że jest zapisany w pliku moj_pierwszy_obiekt.lgt:
?- logtalk_load(moj_pierwszy_obiekt). Hello world true. ?- moj_pierwszy_obiekt::p1. To jest predykat publiczny true.
Próba uzyskania dostępu do prywatnego predykatu wyrzuca błąd:
?- moj_pierwszy_obiekt::p2. ERROR: error(permission_error(access, private_predicate, p2), moj_pierwszy_obiekt::p2, user)
Narzędzia dla deweloperów
Logtalk zawiera pomoc on-line, narzędzie do dokumentowania (które może generować pliki PDF i HTML), narzędzie do przedmiotowego generowania diagramów, wbudowany debugger (oparty na rozszerzonej wersji tradycyjnego modelu Procedure Box znajdującego się w większości kompilatorów Prologu), framework do testów jednostkowych z analizą pokrycia kodu, a także jest kompatybilny z wybranymi profilerami Prologu zaplecza i graficznymi znacznikami[2].
Zobacz też
- Mercury (język programowania)
- Prolog (język programowania)
- Programowanie logiczne
Przypisy
Linki zewnętrzne
- https://logtalk.org/
- Logtalking blog
- p
- d
- e
1GL | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
2GL/ Język drugiej generacji/ Asembler |
| ||||||||||||||
3GL / Język trzeciej generacji |
| ||||||||||||||
4GL/ Język czwartej generacji/ Język dziedzinowy |
| ||||||||||||||
5GL/Logiczne |
| ||||||||||||||
Ezoteryczne | |||||||||||||||
Inne |
|