Logtalk - Logtalk
| Paradigme | Logikkprogrammering , objektorientert programmering , prototypebasert programmering |
|---|---|
| Designet av | Paulo Moura |
| Først dukket opp | 1998 |
| Stabil utgivelse | 3.48.0 / 6. juli 2021
|
| OS | Kryssplattform |
| Tillatelse | Artistic License 2.0 (2.x) / Apache License 2.0 (3.01.x) |
| Nettsted | logtalk |
| Påvirket av | |
| Prolog , Smalltalk , Objective-C | |
Logtalk er et objektorientert logisk programmeringsspråk som utvider og utnytter Prolog- språket med et funksjonssett som er egnet for programmering i det store . Den gir støtte for innkapsling og skjuling av data , adskillelse av bekymringer og forbedret kodebruk . Logtalk bruker standard Prolog-syntaks med tillegg av noen få operatører og direktiver.
Logtalk-språkimplementeringen distribueres under en åpen kildekode-lisens og kan kjøres ved hjelp av en Prolog-implementering (i samsvar med offisielle og de facto-standarder) som backend - kompilator.
Funksjoner
Logtalk har som mål å samle fordelene med objektorientert programmering og logisk programmering. Objektorientering legger vekt på å utvikle diskrete, gjenbrukbare enheter av programvare, mens logisk programmering legger vekt på å representere kunnskapen til hvert objekt på en deklarativ måte.
Som et objektorientert programmeringsspråk inkluderer Logtalks hovedfunksjoner støtte for begge klasser (med valgfrie metaklasser ) og prototyper , parametriske objekter, protokoller ( grensesnitt ), kategorier (komponenter, aspekter , hot patching ), flere arv , offentlig / beskyttet / privat arv, hendelsesdrevet programmering , multitrådeprogrammering på høyt nivå, refleksjon og automatisk generering av dokumentasjon.
For Prolog programmerere, gir Logtalk bred portabilitet, med underliggende navnerom (som støtter både statiske og dynamiske objekter), offentlig / beskyttede / private objekt predikater, coinductive predikater , avstanden mellom grenseflaten og implementering, enkle og intuitive meta-predikat semantikk, lambda uttrykk , klar klausul grammatikk , term-utvidelsesmekanisme og betinget kompilering. Det gir også et modulsystem basert på de facto standard kjernemodulfunksjonalitet (internt er modulene samlet som prototyper).
Eksempler
Logtalks syntaks er basert på Prolog:
?- write('Hello world'), nl.
Hello world
true.
Definere et objekt:
:- 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.
Ved bruk av objektet, forutsatt at det er lagret i en my_first_object.lgt-fil:
?- logtalk_load(my_first_object).
Hello world
true.
?- my_first_object::p1.
This is a public predicate
true.
Å prøve å få tilgang til det private predikatet gir en feil:
?- my_first_object::p2.
ERROR: error(permission_error(access, private_predicate, p2), my_first_object::p2, user)
Anonyme funksjoner
Logtalk bruker følgende syntaks for anonyme predikater (lambdauttrykk):
{FreeVar1, FreeVar2, ...}/[LambdaParameter1, LambdaParameter2, ...]>>Goal
Et enkelt eksempel uten gratisvariabler og ved hjelp av et listekartleggingspredikat er:
| ?- meta::map([X,Y]>>(Y is 2*X), [1,2,3], Ys).
Ys = [2,4,6]
yes
Karriering støttes også. Ovenstående eksempel kan skrives som:
| ?- meta::map([X]>>([Y]>>(Y is 2*X)), [1,2,3], Ys).
Ys = [2,4,6]
yes
Prolog back-end kompatibilitet
Støttede backend -Prolog-kompilatorer inkluderer B-Prolog , Ciao Prolog , CxProlog , ECLiPSe , GNU Prolog , JIProlog , Quintus Prolog , Scryer Prolog , SICStus Prolog , SWI-Prolog , Tau Prolog , Trealla Prolog , XSB og YAP . Logtalk tillater bruk av back-end Prolog kompilatorbiblioteker fra objekt og kategorier.
Utviklerverktøy
Logtalk har online-hjelp, et dokumentasjonsverktøy (som kan generere PDF- og HTML-filer), et enhetsdiagramgeneratorverktøy, en innebygd feilsøkingsprogram (basert på en utvidet versjon av den tradisjonelle Procedure Box-modellen som finnes på de fleste Prolog-kompilatorer), et enhetstestrammeverk med kodedekningsanalyse, og er også kompatibelt med utvalgte back-end Prolog-profiler og grafiske sporstoffer.
applikasjoner
Logtalk har blitt brukt til å behandle STEP- datamodeller som brukes til å utveksle produktproduksjonsinformasjon . Det har også blitt brukt til å implementere et resonnementsystem som tillater preferanse resonnement og begrensningsløsning .
Se også
Referanser
Eksterne linker
- Offesiell nettside
- Logtalking-blogg
- Fra Plain Prolog til Logtalk Objects: Effektiv kodeinnkapsling og gjenbruk (Invited Talk). Paulo Moura. Proceedings of the 25th International Conference on Logic Programming (ICLP), July 2009. LNCS 5649. Springer-Verlag Berlin Heidelberg ". ( Lysbilder )