Logtalk - Logtalk

Logtalk
Paradigma Logikai programozás , objektum-orientált programozás , prototípus-alapú programozás
Tervezte Paulo Moura
Először jelent meg 1998 ; 23 évvel ezelőtt ( 1998 )
Stabil kiadás
3.48.0 / 2021. július 6 .; 1 napja ( 2021-07-06 )
OS Cross-platform
Engedély Művészi licenc 2.0 (2.x) / Apache License 2.0 (3.01.x)
Weboldal logtalk .org
Befolyásolta
Prolog , Smalltalk , C-objektív

A Logtalk egy objektum-orientált logikai programozási nyelv, amely kiterjeszti és kihasználja a Prolog nyelvet egy olyan programkészlettel, amely alkalmas a nagy programozásra . Támogatást nyújt a kapszulázáshoz és az adatok elrejtéséhez , az aggályok elkülönítéséhez és a fokozott kód újrafelhasználáshoz . A Logtalk a szokásos Prolog szintaxist használja néhány operátor és irányelv hozzáadásával.

A Logtalk nyelvű implementációja nyílt forráskódú licenccel kerül terjesztésre, és egy Prolog-implementációval futtatható (amely megfelel a hivatalos és de facto szabványoknak) háttér- fordítóként.

Jellemzők

A Logtalk célja az objektum-orientált programozás és a logikai programozás előnyeinek összefogása. Az objektumorientáció a szoftver diszkrét, újrafelhasználható egységeinek fejlesztését, míg a logikai programozás az egyes objektumok ismeretének deklaratív módon való képviseletét hangsúlyozza.

Objektum-orientált programozási nyelvként a Logtalk főbb szolgáltatásai közé tartozik mind a két osztály támogatása (opcionális metaclassokkal ) és prototípusok , paraméteres objektumok, protokollok ( interfészek ), kategóriák (összetevők, szempontok , gyors javítás ), többszörös öröklés , nyilvános / védett / magán öröklés, eseményvezérelt programozás , magas szintű többszálas programozás, reflektálás és automatikus dokumentáció-generálás.

A Prolog programozók számára a Logtalk széles hordozhatóságot kínál, predikátum névtereket (statikus és dinamikus objektumokat egyaránt támogatva), nyilvános / védett / privát objektum predikátumokat, koinduktív predikátumokat , elkülönítést az interfész és a megvalósítás között, egyszerű és intuitív meta-predikátum szemantikát, lambda kifejezéseket , határozott tagmondatok nyelvtanai , kifejezésbővítési mechanizmusa és feltételes összeállítása. Ez egy olyan modulrendszert is biztosít, amely de facto szabványos alapmodul funkcionalitáson alapul (belülről a modulokat prototípusként állítják össze).

Példák

A Logtalk szintaxisa a Prologon alapul:

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

Objektum meghatározása:

:- 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.

Az objektum használatával feltételezzük, hogy a my_first_object.lgt fájlba van mentve:

?- logtalk_load(my_first_object).
Hello world
true.

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

A privát predikátum elérésének megkísérlése hibát okoz:

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

Névtelen funkciók

A Logtalk a következő szintaxist használja az anonim predikátumokhoz (lambda kifejezések):

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

Egyszerű példa szabad változók nélkül és a lista-hozzárendelési predikátum használatával:

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

A curry szintén támogatott. A fenti példa így írható:

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

Prolog háttér-kompatibilitás

A támogatott háttér-Prolog fordítók a B-Prolog , Ciao Prolog , CxProlog , ECLiPSe , GNU Prolog , JIProlog , Quintus Prolog , Scryer Prolog , SICStus Prolog , SWI-Prolog , Tau Prolog , Trealla Prolog , XSB és YAP . A Logtalk lehetővé teszi a háttérprolog fordító könyvtárak használatát objektumokon és kategóriákon belül.

Fejlesztői eszközök

A Logtalk on-line segítséget, dokumentációs eszközt (amely PDF és HTML fájlokat képes létrehozni), entitásdiagram-generátor eszközt, beépített hibakeresőt tartalmaz (a Prolog-fordítók többségénél megtalálható hagyományos eljárási doboz modell kibővített változatán alapul), egy egység teszt keretrendszer kód lefedettség elemzéssel, és kompatibilis a kiválasztott háttér Prolog profilokkal és grafikus nyomkövetőkkel is.

Alkalmazások

A Logtalkot a gyártási információk cseréjére használt STEP adatmodellek feldolgozására használták . Olyan érvelési rendszer megvalósítására is alkalmazták, amely lehetővé teszi a preferencia-érvelést és a kényszer-megoldást .

Lásd még

Hivatkozások

Külső linkek

  • Hivatalos honlapján
  • Logtalking blog
  • A Sima Prologtól a Logtalk objektumokig: Hatékony kód-beágyazás és újrafelhasználás (Meghívott beszélgetés). Paulo Moura. A 2009. Nemzetközi Logikai Programozási Konferencia (ICLP) anyagai, 2009. július. LNCS 5649. Springer-Verlag Berlin Heidelberg ". ( Diák )