Ny LISP

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 29. september 2016; checks kræver 11 redigeringer .

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 .

Funktioner

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] .

Sammenlignet med andre dialekter

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] .

Historie

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

Ansøgning

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] .

Noter

  1. http://www.newlisp.org/downloads/newLISP-10.7.5-Release.html
  2. Smedley, 2014 .
  3. ↑ I linux -operativsystemer startes familier af kommandoennewlisp-edit
  4. Mendez, 2015 , 1.5 A Quick Start Using NewLisp, s. 8-13.
  5. Smedley, 2015 , s. 25.
  6. Mendez, 2015 , 4.2.4 Building a Simple User Interface, s. 102-104.
  7. ↑ 1 2 3 4 Lutz Mueller. nye LISP-kodemønstre. §13. UDP-kommunikation . www.newlisp.org. Dato for adgang: 30. maj 2016. Arkiveret fra originalen 29. juli 2016.
  8. 1 2 Smedley, 2015 , s. 24.
  9. Mendez, 2015 , appendiks A. NewLisp Versus Common Lisp, pp. 347-352.
  10. ↑ 1 2 newLISP - Forskelle til andre LISP'er . www.newlisp.org. Hentet 30. maj 2016. Arkiveret fra originalen 6. april 2022.
  11. 1 2 3 Lazar, 2009 , nyLISP: sproget .
  12. Mendez, 2015 , 1.4 The NewLisp Implementation, s. 7.
  13. Ronald P. Loui. Til ære for scripting: Real Programmering Pragmatism  // Computer. - 2008. - Juni ( vol. 41 , nr. 7 ). - S. 22-26 . - doi : 10.1109/MC.2008.228 . Arkiveret fra originalen den 23. september 2015.
  14. Osterout, 1998 .
  15. Smedley, 2015 , s. 22.
  16. Lutz Mueller. Programmeringssprog projekter. Ny LISP. newLISP historie . www.donlucio.net. Hentet 30. maj 2016. Arkiveret fra originalen 12. april 2016.
  17. Den nye LISP på Rockets Blog . newlisponrockets.com. Hentet 29. maj 2016. Arkiveret fra originalen 10. april 2016.
  18. nyt LISP-on-Rockets-projektGitHub
  19. Raketmand. Konvertering af anden ny LISP-kode til Rockets. Indlæg #: 85 . newlisponrockets.com (21. februar 2013). Hentet 30. maj 2016. Arkiveret fra originalen 21. marts 2016.
  20. Marc Hildmann, Greg Slepak. Velkommen - Dragonfly webramme . dragonfly.apptruck.de. Hentet 30. maj 2016. Arkiveret fra originalen 3. marts 2016.
  21. Dragonfly-projektGitHub
  22. Luis Arguelles. FuzzyLisp . www.fuzzylisp.com. Hentet 29. maj 2016. Arkiveret fra originalen 6. august 2016.
  23. Mendez, 2015 .

Litteratur

Links