InteLib | |
---|---|
Sorts | Bibliotek för multiparadigmprogrammering |
Utvecklaren | Andrew Viktor. Stolyarov |
Skrivet i | C++ |
Operativ system | Unix -liknande , Microsoft Windows |
senaste versionen |
|
Licens | GNU LGPL |
Hemsida | intelib.org |
InteLib är ett C++- klassbibliotek som modellerar Lisp -beräkningsmodellen och tillhandahåller en uppsättning operationer som gör att Lisp S-uttryck kan beskrivas med syntaktiskt nära aritmetiska uttryck inom C++. Biblioteket skapades som ett programmeringsverktyg med flera paradigm .
Biblioteket tillhandahåller en objektorienterad modell av heterogena S-uttryck, utrustad med en S-uttrycksutvärderingsoperation i form av Lisp. Klasserna som utgör modellen är utrustade med omdefinierade infixoperationer som låter dig skriva S-uttryck i form av C++ aritmetiska uttryck som är visuellt nära dem. Så, i flera artiklar som ägnas åt InteLib, ges ett exempel på en funktion i Lisp:
( defun isomorphic ( tree1 tree2 ) ( cond (( atom tree1 ) ( atom tree2 )) (( atom tree2 ) NIL ) ( t ( och ( isomorphic ( bil tree1 ) ( bil tree2 )) ( isomorphic ( cdr tree1 ) ( cdr tree2 ) )) ))))Med hjälp av InteLib kan detta kodfragment skrivas som följande C++-uttryck:
( L | DEFUN , ISOMORFISK , ( L | TREE1 , TREE2 ), ( L | COND , ( L | ( L | ATOM , TREE1 ), ( L | ATOM , TREE2 )), ( L | ( L | ATOM , TRÄD2 ), NIL ), ( L | T , ( L | AND , ( L | ISOMORPHIC , ( L | CAR , TREE1 ), ( L | CAR , TREE2 )), ( L | ISOMORFISK , ( L | CDR , TREE1 ), ( L | CDR , TREE2 )) ))))Här L är en variabel av typen som LListConstructorintroduceras för operationen L|som konstruerar en lista med ett element. Resultatet av operationen är ett objekt av klassen LReferenceför vilken operationen "komma" omdefinieras - i InteLib-biblioteket används denna operation för att lägga till nya element till den befintliga listan.
Resultatet av hela uttrycket är också ett klassobjekt LReference. Metoden som Evaluate()beskrivs i den här klassen låter dig utvärdera ett uttryck i enlighet med reglerna för språket Lisp. Resultatet av en sådan beräkning blir ett nytt S-uttryck, representerat, som alltid, av ett objekt av klass LReference.
DEFUN, ISOMORPHIC, TREE1etc. i exemplet ovan är variabler i klassen LSymbol, som representerar konceptet med en Lisp-symbol.
Den nuvarande versionen av InteLib innehåller en uppsättning verktyg för att arbeta med S-uttryck som heterogena datastrukturer (utan utvärdering), såväl som beräkningsmodeller för Lisp och Scheme (mer exakt, dialekter av InteLib Lisp och InteLib Scheme som inte överensstämmer med standarderna för dessa språk). Paketet innehåller interaktiva tolkar för båda dialekterna, samt översättare som tar en modul i traditionell Lisp- eller Scheme-syntax som indata och skapar en C++-modul med en rubrikfil.
Den första fungerande versionen av biblioteket skrevs av A. Stolyarov 1999 under sin masterexamen vid fakulteten vid VMC vid Moskvas statliga universitet .
InteLib-biblioteket nämndes officiellt för första gången i artikeln av A. Stolyarov och E. Bolshakova. Bygga funktionella tekniker till ett objektorienterat språk [1] som presenterades vid konferensen JCKBSE'2000 i Brno i september 2000.
År 2002 försvarade A. Stolyarov sin doktorsavhandling Integration of heterogeneous language mechanisms within a single programmering language , som presenterar den direkta integrationsmetoden implementerad i InteLib-biblioteket.
Som anges på den officiella webbplatsen för InteLib kommer namnet på biblioteket från orden Intelligence Library, vilket återspeglar författarens ursprungliga avsikt att integrera beräkningsmodeller av artificiell intelligensspråk i C++-projekt.
InteLib-biblioteket är fri programvara . Själva biblioteket distribueras under LGPL -licensen , de medföljande översättarna och tolkarna distribueras under GPL-licensen.