ny LISP | |
---|---|
Sprog klasse | Multi-paradigme programmeringssprog |
Dukkede op i | 1991 |
Forfatter | Lutz Muller |
Udvikler | Lutz Muller |
Frigøre | |
Blev påvirket | Almindelig Lisp , Skema |
Licens | GNU General Public License |
Internet side | newlisp.org |
NewLISP er en dialekt af Lisp designet som et scriptsprog .
Implementeringen af newLisp er let, og selve sproget er let at lære [2] .
Den nye LISP-distribution inkluderer et simpelt programmeringsmiljø [3] , der har et terminalemulatorvindue under kilderedigeringsområdet , hvor du kan se resultaterne af at udføre et Lisp-program (se REPL ) [4] .
Sproget understøtter pseudo objektorienteret programmering i form af FOOP (Functional Object Programming) [5] .
Sproget leveres sammen med GUI- programmeringsværktøjer [6] .
NewLISP har indbyggede webprogrammeringsværktøjer ( Httpd og CGI [7] [7] ), samt arbejder med netværksprotokoller såsom TCP/IP [7] eller UDP [7] [8] .
NewLISP har en række funktioner, der adskiller den fra Common Lisp [9] og andre Lisp-dialekter, både i syntaks og semantik [10] . For eksempel er den traditionelle listefunktion navngivet carog cdrerstattet med firstog rest, som i T-Lisp. consDetaljerne om opførsel af funktionerne og er noget anderledes last. Lister er indekseret, du kan få det i-te element i listen myList, tællet fra nul, ved hjælp af udtrykket (myList i).[11]
newLISP ligner Scheme på flere måder . Ligesom Scheme anvender newLisp en grundig evaluering af beståede funktionsparametre. For variabler , primitiver og brugerdefinerede symboler bruges her også et enkelt navneområde [11] .
En væsentlig forskel med newLisp er, at den bruger dynamisk variabelt omfang som standard. Hvis der er behov for leksikalsk (statisk) omfang, opnås dette gennem mekanismen af den såkaldte. sammenhænge [11] .
Den tyske datalog Lutz Müller udviklede NewLisp som en letlærelig dialekt af Lisp [12] . I modsætning til traditionelle versioner af Lisp er newLISP designet som et scriptsprog . Forfatteren henviser [10] til artiklen "In Praise of Scripting: Real Programming Pragmatism" [13] , som blev skrevet som en del af diskussionen udløst af artiklen "Scripting: High-Level Programming for the 21st Century" af Tcl -udvikleren John Osterout [14] .
Sproget blev første gang implementeret på Sun4 -arbejdsstationen i 1991. [15] I 1993 blev det porteret til 16-bit Windows 3.0 og i 1995 til 32 -bit Windows 95 . I april 1999 blev NewLISP porteret til Linux og udgivet under en gratis licens . Al Windows-specifik kode er blevet fjernet, og fra og med version 6.0.25 er understøttelse af dette operativsystem blevet droppet. I 2001 blev arbejde under Windows muligt takket være Cygwin , først fungerede win-versionen kun i konsollen, men i version 6.3, ved hjælp af Tcl / Tk , blev en cross- platform grafisk brugergrænseflade newLISP-tk implementeret . I 2007 blev det Java -baserede newLISP-GS GUI-bibliotek udviklet og er i øjeblikket den vigtigste GUI-implementering for newLISP. Nedenfor er en kronologi over nøgleændringer fra 1990 til 2014 [16] .
Version | År | Store ændringer |
---|---|---|
1.0 | 1990 | Første version, kørte på en Sun-4 , der kører SunOS / BSD 4.1 |
1.3 | 1993 | Portering til Windows 3.0 |
3.0 | 1995 | Portering til Windows 95 |
6,0 | 1999 | Open source ( GPL ) version til Unix / Linux |
6.3 | 1999 | newLISP-tk Tcl / Tk IDE |
6.5.8 | 2002 | PCRE regulære udtryk |
7,1-4 | 2003 | MacOS X og Solaris- understøttelse , PDF -manual catchog throw, kontekstvariabler, Win32 DLL |
8,0-3 | 2004 | Arrays , UTF-8-understøttelse, procesgaffel , semaforer , delt hukommelse , standardfunktion |
8,4-7 | 2005 | Implicit array-indeksering, understøttelse af kommaseparerede lokaliteter , signaler og timere , distribueret databehandling vianet-eval |
8,8-9 | 2006 | Prolog - stil forening , makro-stil variabel udvidelse, forbedret understøttelse af implicit indeksering |
9,0 | 2006 | Understøttelse af 64-bit aritmetik og filadgang, yderligere funktioner til at arbejde med arrays, HTTP -servertilstand |
9.1 | 2007 | Kompilering til 64-bit platforme, HTTP / CGI -servertilstand, funktioner i ref, ref-all, find,replace |
9.2 | 2007 | newLISP-GS er et kerne- platform GUI- bibliotek til udvikling af brugergrænseflader på newLISP |
9.3 | 2008 | FOOP - Funktions-objektorienteret programmering |
9.4 | 2008 | Cilk - parallel programmering API til newLISP |
10,0 | 2009 | Generel API-oprydning, passerer ved reference, ny samlet destruktiv API ved hjælp afsetf |
10.1 | 2009 | API til kommunikation mellem aktører på Mac OS X, Linux og andre UNIX |
10.2 | 2010 | FOOP redesignet til at bruge foranderlige objekter |
10.3 | 2011 | Mulighed for at skifte internetprotokol mellem IPv4 og IPv6 |
10.4 | 2012 | ved hjælp af libffi |
10.5 | 2013 | Infinite Precision Heltal Aritmetic |
10.5.2 | 2013 | KMEANS klyngeanalyse |
10.5.7 | 2014 | Kompilere til rimelig hurtig JavaScript eksekverbar på browsersiden |
10.6.0 | 2014 | Native makroudvidelse |
Til web-programmering ved hjælp af newLisp kan newLISP on Rockets [17] [18] -webframeworket bruges ved at bruge Bootstrap og jQuery på browsersiden og gemme data i SQLite [8] . Forfatteren blev inspireret til at skabe denne ramme [19] af en tidligere ramme - Dragonfly [20] [21] .
Baseret på NewLisp er FuzzyLisp [22] implementeret , et bibliotek til at arbejde med fuzzy logic [23] .
Lisp | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Egenskaber |
| ||||||||||||||
Implementeringer |
| ||||||||||||||
Hardware |
| ||||||||||||||
Fællesskab |
| ||||||||||||||
|