ny LISP | |
---|---|
Språkklass | Flerparadigm programmeringsspråk |
Framträdde i | 1991 |
Författare | Lutz Muller |
Utvecklaren | Lutz Muller |
Släpp | |
Blivit påverkad | Common Lisp , Scheme |
Licens | GNU General Public License |
Hemsida | newlisp.org |
NewLISP är en dialekt av Lisp utformad som ett skriptspråk .
Implementeringen av newLisp är lätt, och själva språket är lätt att lära sig [2] .
Den nya LISP-distributionen inkluderar en enkel programmeringsmiljö [3] som har ett terminalemulatorfönster under källredigeringsområdet där du kan se resultaten av att köra ett Lisp-program (se REPL ) [4] .
Språket stöder pseudoobjektorienterad programmering i form av FOOP (Functional Object Programming) [5] .
Språket levereras med GUI- programmeringsverktyg [6] .
NewLISP har inbyggda webbprogrammeringsverktyg ( Httpd och CGI [7] [7] ), samt arbetar med nätverksprotokoll som TCP/IP [7] eller UDP [7] [8] .
NewLISP har ett antal funktioner som skiljer den från Common Lisp [9] och andra Lisp-dialekter, både i syntax och semantik [10] . Till exempel, den traditionella listfunktionen namnger caroch har cdrersatts med firstoch rest, som i T-Lisp. consDetaljerna för beteendet hos och funktionerna är något annorlunda last. Listor är indexerade, du kan få det i-te elementet i listan myList, räknat från noll, med hjälp av uttrycket (myList i).[11]
newLISP liknar Scheme på flera sätt . Precis som Scheme använder newLisp en kraftfull utvärdering av godkända funktionsparametrar. För variabler , primitiver och användardefinierade symboler används även här ett enda namnområde [11] .
En betydande skillnad med newLisp är att den använder dynamiskt variabelt omfång som standard. Om lexikalisk (statisk) räckvidd behövs uppnås detta genom mekanismen för den sk. sammanhang [11] .
Den tyske datavetaren Lutz Müller utvecklade NewLisp som en lättläst dialekt av Lisp [12] . Till skillnad från traditionella versioner av Lisp, designades newLISP som ett skriptspråk . Författaren hänvisar [10] till artikeln "In Praise of Scripting: Real Programming Pragmatism" [13] , som skrevs som en del av diskussionen som utlöstes av artikeln "Scripting: High-Level Programming for the 21st Century" av Tcl -utvecklaren John Osterout [14] .
Språket implementerades först på Sun4 -arbetsstationen 1991. [15] 1993 portades det till 16-bitars Windows 3.0 och 1995 till 32 -bitars Windows 95 . I april 1999 portades NewLISP till Linux och släpptes under en fri licens . All Windows-specifik kod har tagits bort, och från och med version 6.0.25 har stödet för detta operativsystem tagits bort. År 2001 blev arbete under Windows möjligt tack vare Cygwin , till en början fungerade win-versionen bara i konsolen, men i version 6.3, med Tcl / Tk , implementerades ett plattformsoberoende grafiskt användargränssnitt newLISP-tk . Under 2007 utvecklades det Java -baserade newLISP-GS GUI-biblioteket och är för närvarande den huvudsakliga GUI-implementeringen för newLISP. Nedan är en kronologi över viktiga förändringar från 1990 till 2014 [16] .
Version | År | Stora ändringar |
---|---|---|
1.0 | 1990 | Första versionen, körde på en Sun-4 som kör SunOS / BSD 4.1 |
1.3 | 1993 | Portera till Windows 3.0 |
3.0 | 1995 | Portering till Windows 95 |
6,0 | 1999 | Open source ( GPL ) version för Unix / Linux |
6.3 | 1999 | newLISP-tk Tcl / Tk IDE |
6.5.8 | 2002 | PCRE Regular Expressions |
7,1-4 | 2003 | Stöd för MacOS X och Solaris , PDF- manual catchoch throw, Kontextvariabler, Win32 DLL |
8,0-3 | 2004 | Arrayer , UTF-8-stöd, processgaffel , semaforer , delat minne , standardfunktion |
8,4-7 | 2005 | Implicit array-indexering, stöd för kommaseparerade lokaler , signaler och timers , distribuerad datoranvändning vianet-eval |
8,8-9 | 2006 | Prolog - style unification , makro-stil variabel expansion, förbättrat stöd för implicit indexering |
9,0 | 2006 | Stöd för 64-bitars aritmetik och filåtkomst, ytterligare funktioner för att arbeta med arrayer, HTTP -serverläge |
9.1 | 2007 | Kompilering för 64-bitars plattformar, HTTP / CGI -serverläge, funktioner i ref, ref-all, find,replace |
9.2 | 2007 | newLISP-GS är ett kärnplattforms GUI -bibliotek för att utveckla användargränssnitt på newLISP |
9.3 | 2008 | FOOP - Funktionsobjektorienterad programmering |
9.4 | 2008 | Cilk - parallell programmering API för newLISP |
10,0 | 2009 | Allmän API-rensning, passerar genom referens, nytt enhetligt destruktivt API med hjälp avsetf |
10.1 | 2009 | API för kommunikation mellan aktörer på Mac OS X, Linux och andra UNIX |
10.2 | 2010 | FOOP har designats om för att använda föränderliga objekt |
10.3 | 2011 | Möjlighet att byta internetprotokoll mellan IPv4 och IPv6 |
10.4 | 2012 | med libffi |
10.5 | 2013 | Infinite Precision Integer Aritmetic |
10.5.2 | 2013 | KMEANS klusteranalys |
10.5.7 | 2014 | Kompilerar till någorlunda snabb JavaScript - körbar på webbläsarsidan |
10.6.0 | 2014 | Native makroexpansion |
För webbprogrammering med newLisp kan webbramverket newLISP on Rockets [17] [18] användas, med Bootstrap och jQuery på webbläsarsidan och lagra data i SQLite [8] . Författaren inspirerades att skapa detta ramverk [19] av ett tidigare ramverk - Dragonfly [20] [21] .
Baserat på NewLisp är FuzzyLisp [22] implementerat , ett bibliotek för att arbeta med fuzzy logic [23] .
Läspa | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Egenskaper |
| ||||||||||||||
Genomföranden |
| ||||||||||||||
Hårdvara |
| ||||||||||||||
gemenskap |
| ||||||||||||||
|