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 |
| Stabil kiadás | 3.48.0 / 2021. július 6
|
| OS | Cross-platform |
| Engedély | Művészi licenc 2.0 (2.x) / Apache License 2.0 (3.01.x) |
| Weboldal | logtalk |
| 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 )