Przejdź do zawartości

Logtalk: Różnice pomiędzy wersjami

Z Wikipedii, wolnej encyklopedii
[wersja przejrzana][wersja przejrzana]
Usunięta treść Dodana treść
Nie podano opisu zmian
Euleron (dyskusja | edycje)
Funkcja sugerowania linków: dodane 3 linki.
 
Linia 19: Linia 19:
'''Logtalk''' – [[Obiektowy język programowania|zorientowany obiektowo]] [[Programowanie logiczne|logiczny język programowania]], który rozszerza i wykorzystuje język [[Prolog (język programowania)|Prolog]] z zestawem funkcji odpowiednich do programowania na dużą skalę. Zapewnia obsługę [[Enkapsulacja|enkapsulacji]] i [[Ukrywanie danych|ukrywania danych]], separacji problemów i ulepszonego ponownego wykorzystania kodu. Logtalk używa standardowej składni Prologu z dodatkiem kilku [[operator]]ów i [[Dyrektywa (informatyka)|dyrektyw]].
'''Logtalk''' – [[Obiektowy język programowania|zorientowany obiektowo]] [[Programowanie logiczne|logiczny język programowania]], który rozszerza i wykorzystuje język [[Prolog (język programowania)|Prolog]] z zestawem funkcji odpowiednich do programowania na dużą skalę. Zapewnia obsługę [[Enkapsulacja|enkapsulacji]] i [[Ukrywanie danych|ukrywania danych]], separacji problemów i ulepszonego ponownego wykorzystania kodu. Logtalk używa standardowej składni Prologu z dodatkiem kilku [[operator]]ów i [[Dyrektywa (informatyka)|dyrektyw]].


Implementacja języka Logtalk jest rozpowszechniana na [[Otwarte oprogramowanie|licencji open source]] i może działać przy użyciu implementacji Prologu (zgodnej z oficjalnymi i de facto standardami)<ref name="moura 2003">Paulo Moura (2003). Logtalk: Design of an Object-Oriented Logic Programming Language. PhD thesis. Universidade da Beira Interior.</ref> jako kompilator [[Front-end i back-end|back-endowy]].
[[Implementacja (informatyka)|Implementacja]] języka Logtalk jest rozpowszechniana na [[Otwarte oprogramowanie|licencji open source]] i może działać przy użyciu implementacji Prologu (zgodnej z oficjalnymi i de facto standardami)<ref name="moura 2003">Paulo Moura (2003). Logtalk: Design of an Object-Oriented Logic Programming Language. PhD thesis. Universidade da Beira Interior.</ref> jako kompilator [[Front-end i back-end|back-endowy]].


== Funkcje ==
== Funkcje ==
Linia 59: Linia 59:


== Narzędzia dla deweloperów ==
== 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<ref>{{Cytuj |tytuł = LogtalkDotOrg/logtalk3 |data dostępu = 2020-10-19 |opublikowany = GitHub |url = https://github.com/LogtalkDotOrg/logtalk3 |język = en}}</ref>.
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<ref>{{Cytuj |tytuł = LogtalkDotOrg/logtalk3 |data dostępu = 2020-10-19 |opublikowany = GitHub |url = https://github.com/LogtalkDotOrg/logtalk3 |język = en}}</ref>.


== Zobacz też ==
== Zobacz też ==

Aktualna wersja na dzień 21:56, 28 lis 2023

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

Logtalkzorientowany 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

[edytuj | edytuj kod]

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

[edytuj | edytuj kod]

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

[edytuj | edytuj kod]

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ż

[edytuj | edytuj kod]

Przypisy

[edytuj | edytuj kod]
  1. a b Paulo Moura (2003). Logtalk: Design of an Object-Oriented Logic Programming Language. PhD thesis. Universidade da Beira Interior.
  2. LogtalkDotOrg/logtalk3 [online], GitHub [dostęp 2020-10-19] (ang.).

Linki zewnętrzne

[edytuj | edytuj kod]