Logtalk - Logtalk

Logtalk
Paradigme Logikkprogrammering , objektorientert programmering , prototypebasert programmering
Designet av Paulo Moura
Først dukket opp 1998 ; 23 år siden ( 1998 )
Stabil utgivelse
3.48.0 / 6. juli 2021 ; For 1 dag siden ( 2021-07-06 )
OS Kryssplattform
Tillatelse Artistic License 2.0 (2.x) / Apache License 2.0 (3.01.x)
Nettsted logtalk .org
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 )