InteLib | |
---|---|
Tip de | Bibliotecă pentru programare multi-paradigma |
Dezvoltator | Andrew Vikt. Stolyarov |
Scris in | C++ |
Sistem de operare | Unix -like , Microsoft Windows |
ultima versiune |
|
Licență | GNU LGPL |
Site-ul web | intelib.org |
InteLib este o bibliotecă de clasă C++ care modelează modelul de calcul Lisp și oferă un set de operații care permit descrierii expresiilor S Lisp folosind expresii aritmetice apropiate sintactic în C++. Biblioteca a fost creată ca instrument de programare cu mai multe paradigme .
Biblioteca oferă un model orientat pe obiect de expresii S eterogene, echipat cu o operație de evaluare a expresiei S în termeni de Lisp. Clasele care alcătuiesc modelul sunt echipate cu operații infix redefinite care vă permit să scrieți expresii S sub formă de expresii aritmetice C++ care sunt vizual apropiate de ele. Deci, în mai multe articole dedicate InteLib, este dat un exemplu de funcție în Lisp:
( defun izomorf ( arbore1 arbore2 ) ( cond (( arbore atomic1 ) ( arbore atomic2 ) ) ( ( arbore atomic2 ) NIL ) ( t ( și ( arbore izomorf ( arbore auto1 ) ( arbore mașină2 ) ) ( izomorf ( arbore arbore cdr1 ) ( arbore cdr2 ) )) ))))Folosind InteLib, acest fragment de cod poate fi scris ca următoarea expresie C++:
( L | DEFUN , ISOMORF , ( L | TREE1 , TREE2 ), ( L | COND , ( L | ( L | ATOM , TREE1 ), ( L | ATOM , TREE2 )), ( L | ( L | ATOM , TREE2 ), NIL ), ( L | T , ( L | AND , ( L | ISOMORF , ( L | CAR , TREE1 ), ( L | CAR , TREE2 )), ( L | ISOMORFIC , ( L | CDR , TREE1 ), ( L | CDR , TREE2 )) ))))Iată L o variabilă de tip LListConstructorintrodusă pentru operația L|care construiește o listă cu un element. Rezultatul operației este un obiect al clasei LReferencepentru care este redefinită operația „virgulă” - în biblioteca InteLib, această operație este folosită pentru a adăuga elemente noi la lista existentă.
Rezultatul întregii expresii este, de asemenea, un obiect al clasei LReference. Metoda Evaluate()descrisă în această clasă vă permite să evaluați o expresie în conformitate cu regulile limbajului Lisp. Rezultatul unui astfel de calcul va fi o nouă expresie S, reprezentată, ca întotdeauna, de un obiect de clasă LReference.
DEFUN, ISOMORPHIC, TREE1etc. în exemplul de mai sus sunt variabile ale clasei LSymbol, care reprezintă conceptul de simbol Lisp.
Versiunea actuală a InteLib include un set de instrumente pentru lucrul cu expresii S ca structuri de date eterogene (fără evaluare), precum și modele de calcul pentru Lisp și Scheme (mai precis, dialectele InteLib Lisp și InteLib Scheme care nu sunt conforme cu standardele acestor limbi). Pachetul include interpreți interactivi pentru ambele dialecte, precum și traducători care preiau un modul în sintaxa tradițională Lisp sau Scheme ca intrare și creează un modul C++ cu un fișier antet.
Prima versiune de lucru a bibliotecii a fost scrisă de A. Stolyarov în 1999 , în cursul lucrării sale de calificare a masterului la facultatea VMC a Universității de Stat din Moscova .
Biblioteca InteLib a fost menționată oficial pentru prima dată în articolul lui A. Stolyarov și E. Bolshakova Construirea tehnicilor funcționale într-un limbaj orientat pe obiecte [1] prezentat la conferința JCKBSE'2000 de la Brno în septembrie 2000.
În 2002, A. Stolyarov și-a susținut teza de doctorat Integrarea mecanismelor de limbaj eterogene într-un singur limbaj de programare , care prezintă metoda de integrare directă implementată în biblioteca InteLib.
După cum se precizează pe site-ul oficial al InteLib, numele bibliotecii provine de la cuvintele Intelligence Library, care reflectă intenția inițială a autorului de a integra modele computaționale ale limbajelor de inteligență artificială în proiectele C++.
Biblioteca InteLib este un software gratuit . Biblioteca în sine este distribuită sub licența LGPL , traducătorii și interpreții însoțitori sunt distribuiti sub licența GPL.