nouLISP | |
---|---|
Clasa de limba | Limbajul de programare cu mai multe paradigme |
Aparut in | 1991 |
Autor | Lutz Muller |
Dezvoltator | Lutz Muller |
Eliberare | |
A fost influențat | Common Lisp , Scheme |
Licență | Licență publică generală GNU |
Site-ul web | newlisp.org |
NewLISP este un dialect al Lisp conceput ca un limbaj de scripting .
Implementarea newLisp este ușoară, iar limba în sine este ușor de învățat [2] .
Distribuția newLISP include un mediu de programare simplu [3] care are o fereastră de emulator de terminal sub zona de editare a sursei unde puteți vedea rezultatele executării unui program Lisp (vezi REPL ) [4] .
Limbajul suportă programarea pseudo-orientată pe obiecte sub formă de FOOP (Functional Object Programming) [5] .
Limbajul vine la pachet cu instrumente de programare GUI [6] .
NewLISP are încorporate instrumente de programare web ( Httpd și CGI [7] [7] ), precum și lucrul cu protocoale de rețea precum TCP/IP [7] sau UDP [7] [8] .
NewLISP are o serie de caracteristici care îl deosebesc de Common Lisp [9] și alte dialecte Lisp, atât în sintaxă , cât și în semantică [10] . De exemplu, funcțiile tradiționale de listă numesc carși au cdrfost înlocuite cu firstși rest, ca în T-Lisp. consDetaliile comportamentului funcțiilor și sunt oarecum diferite last. Listele sunt indexate, puteți obține elementul i al listei myList, numărând de la zero, folosind expresia (myList i).[11]
newLISP este similar cu Scheme în mai multe moduri . La fel ca Scheme, newLisp adoptă o evaluare viguroasă a parametrilor funcției trecuți. Pentru variabile , primitive și simboluri definite de utilizator, aici este folosit și un singur spațiu de nume [11] .
O diferență semnificativă cu newLisp este că folosește în mod implicit domeniul de aplicare a variabilei dinamice. Dacă este nevoie de un domeniu de aplicare lexical (static), acest lucru se realizează prin mecanismul așa-numitului. contexte [11] .
Informaticianul german Lutz Müller a dezvoltat NewLisp ca un dialect al lui Lisp ușor de învățat [12] . Spre deosebire de versiunile tradiționale ale Lisp, newLISP a fost conceput ca un limbaj de scripting . Autorul face referire [10] la articolul „In Praise of Scripting: Real Programming Pragmatism” [13] , care a fost scris în cadrul discuției declanșate de articolul „Scripting: High-Level Programming for the 21st Century” al dezvoltatorului Tcl John Osterout [14] .
Limbajul a fost implementat pentru prima dată pe stația de lucru Sun4 în 1991. [15] În 1993 a fost portat pe Windows 3.0 pe 16 biți și în 1995 pe Windows 95 pe 32 biți . În aprilie 1999, NewLISP a fost portat pe Linux și lansat sub o licență gratuită . Tot codul specific Windows a fost eliminat și, începând cu versiunea 6.0.25, suportul pentru acest sistem de operare a fost renunțat. În 2001, munca sub Windows devine posibilă datorită Cygwin , la început versiunea win a funcționat doar în consolă, dar în versiunea 6.3, folosind Tcl / Tk , a fost implementată o interfață grafică cu utilizatorul multiplatform newLISP-tk . În 2007, a fost dezvoltată biblioteca GUI newLISP-GS bazată pe Java și este în prezent principala implementare GUI pentru newLISP. Mai jos este o cronologie a schimbărilor cheie din 1990 până în 2014 [16] .
Versiune | An | Schimbari majore |
---|---|---|
1.0 | 1990 | Prima versiune, a rulat pe un Sun-4 care rulează SunOS / BSD 4.1 |
1.3 | 1993 | Portare la Windows 3.0 |
3.0 | 1995 | Portare pe Windows 95 |
6.0 | 1999 | Versiune open source ( GPL ) pentru Unix / Linux |
6.3 | 1999 | nouLISP-tk Tcl / Tk IDE |
6.5.8 | 2002 | Expresii regulate PCRE |
7.1-4 | 2003 | Suport pentru MacOS X și Solaris , Manual PDFcatch și throw, Variabile de context, Win32 DLL |
8,0-3 | 2004 | Matrice , suport UTF-8 , furcă de proces , semafoare , memorie partajată , funcție implicită |
8,4-7 | 2005 | Indexare implicită a matricei, suport pentru localizări separate prin virgulă , semnale și temporizatoare , calcul distribuit prinnet-eval |
8,8-9 | 2006 | Unificare în stil Prolog , extindere variabilă în stil macro, suport îmbunătățit pentru indexarea implicită |
9,0 | 2006 | Suport pentru aritmetică pe 64 de biți și acces la fișiere, funcții suplimentare pentru lucrul cu matrice, mod server HTTP |
9.1 | 2007 | Compilare pentru platforme pe 64 de biți, mod server HTTP / CGI , functori în ref, ref-all, find,replace |
9.2 | 2007 | newLISP-GS este o bibliotecă GUI de bază pentru platforma pentru dezvoltarea interfețelor utilizator pe newLISP |
9.3 | 2008 | FOOP - Programare orientată pe funcție-obiect |
9.4 | 2008 | Cilk - API de programare paralelă pentru newLISP |
10.0 | 2009 | Curățarea generală a API-ului, trecerea prin referință, utilizarea noului API distructiv unificatsetf |
10.1 | 2009 | API pentru comunicarea între actori pe Mac OS X, Linux și alte UNIX |
10.2 | 2010 | FOOP reproiectat pentru a utiliza obiecte mutabile |
10.3 | 2011 | Abilitatea de a comuta protocolul de internet între IPv4 și IPv6 |
10.4 | 2012 | de import extins folosind libffi |
10.5 | 2013 | Aritmetică a numărului întreg de precizie infinită |
10.5.2 | 2013 | Analiza cluster KMEANS |
10.5.7 | 2014 | Compilarea într-un executabil JavaScript relativ rapid din partea browserului |
10.6.0 | 2014 | Extindere macro nativă |
Pentru programarea web folosind newLisp, se poate folosi cadrul web newLISP pe Rockets [17] [18] , folosind Bootstrap și jQuery din partea browserului și stocarea datelor în SQLite [8] . Autorul a fost inspirat să creeze acest cadru [19] de un cadru anterior - Dragonfly [20] [21] .
Pe baza NewLisp, se implementează FuzzyLisp [22] , o bibliotecă pentru lucrul cu logica fuzzy [23] .
Lisp | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Caracteristici |
| ||||||||||||||
Implementări |
| ||||||||||||||
Hardware |
| ||||||||||||||
Comunitate |
| ||||||||||||||
|