Nový LISP

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 29. září 2016; kontroly vyžadují 11 úprav .

nový LISP
Jazyková třída Multiparadigmatický programovací jazyk
Objevil se v 1991
Autor Lutz Muller
Vývojář Lutz Muller
Uvolnění
Byl ovlivněn Common Lisp , Schéma
Licence GNU General Public License
webová stránka newlisp.org

NewLISP je dialekt jazyka Lisp navržený jako skriptovací jazyk .

Funkce

Implementace newLisp je nenáročná a jazyk samotný se snadno učí [2] .

Distribuce newLISP obsahuje jednoduché programovací prostředí [3] , které má pod oblastí úprav zdrojového kódu okno emulátoru terminálu , kde můžete vidět výsledky spouštění programu Lisp (viz REPL ) [4] .

Jazyk podporuje pseudo objektově orientované programování ve formě FOOP (Functional Object Programming) [5] .

Jazyk je dodáván s GUI programovacími nástroji [6] .

NewLISP má vestavěné nástroje pro webové programování ( Httpd a CGI [7] [7] ), stejně jako práci se síťovými protokoly jako TCP/IP [7] nebo UDP [7] [8] .

Ve srovnání s jinými dialekty

NewLISP má řadu vlastností, které jej odlišují od Common Lisp [9] a dalších dialektů Lisp, a to jak v syntaxi , tak v sémantice [10] . Například tradiční názvy funkcí seznamu cara cdrbyly nahrazeny firsta rest, jako v T-Lisp. consPodrobnosti o chování funkcí a jsou poněkud odlišné last. Seznamy jsou indexovány, i-tý prvek seznamu myList, počítající se od nuly, získáte pomocí výrazu (myList i).[11]

newLISP je v mnoha ohledech podobný Scheme . Stejně jako Scheme, i newLisp přijímá energické vyhodnocování předávaných funkčních parametrů. Pro proměnné , primitiva a uživatelem definované symboly se zde také používá jednotný jmenný prostor [11] .

Významný rozdíl oproti newLisp je v tom, že standardně používá rozsah dynamických proměnných . Je-li potřeba lexikální (statický) rozsah, je toho dosaženo prostřednictvím mechanismu tzv. kontexty [11] .

Historie

Německý počítačový vědec Lutz Müller vyvinul NewLisp jako snadno se naučitelný dialekt jazyka Lisp [12] . Na rozdíl od tradičních verzí Lisp byl newLISP navržen jako skriptovací jazyk . Autor odkazuje [10] na článek "In Chvála skriptování: Real Programming Pragmatism" [13] , který byl napsán v rámci diskuse vyvolané článkem "Scripting: High-Level Programming for the 21st Century" od vývojáře Tcl John Osterout [14] .

Jazyk byl poprvé implementován na pracovní stanici Sun4 v roce 1991. [15] V roce 1993 byl portován na 16bitový Windows 3.0 a v roce 1995 na 32bitový Windows 95 . V dubnu 1999 byl NewLISP portován na Linux a vydán pod svobodnou licencí . Veškerý kód specifický pro Windows byl odstraněn a od verze 6.0.25 byla ukončena podpora tohoto operačního systému. V roce 2001 byla práce pod Windows umožněna díky Cygwin , zprvu win-verze fungovala pouze v konzoli, ale ve verzi 6.3 s použitím Tcl / Tk bylo implementováno multiplatformní grafické uživatelské rozhraní newLISP-tk . V roce 2007 byla vyvinuta knihovna newLISP-GS GUI založená na Javě , která je v současnosti hlavní implementací GUI pro newLISP. Níže je uvedena chronologie klíčových změn od roku 1990 do roku 2014 [16] .

Verze Rok Hlavní změny
1,0 1990 První verze běžela na Sun-4 se systémem SunOS / BSD 4.1
1.3 1993 Portování na Windows 3.0
3.0 1995 Portování na Windows 95
6.0 1999 Open source ( GPL ) verze pro Unix / Linux
6.3 1999 nový LISP-tk Tcl / Tk IDE
6.5.8 2002 Regulární výrazy PCRE
7,1-4 2003 Podpora MacOS X a Solaris , příručka PDFcatch a throwkontextové proměnné, Win32 DLL
8,0-3 2004 Pole , podpora UTF-8, procesní větvení , semafory , sdílená paměť , výchozí funkce
8,4-7 2005 Implicitní indexování polí, podpora čárkami oddělených lokalit , signálů a časovačů , distribuované výpočty prostřednictvímnet-eval
8,8-9 2006 Sjednocení ve stylu Prologu , rozšíření proměnných ve stylu makra, vylepšená podpora pro implicitní indexování
9,0 2006 Podpora 64bitové aritmetiky a přístupu k souborům, doplňkové funkce pro práci s poli, režim HTTP serveru
9.1 2007 Kompilace pro 64bitové platformy, režim serveru HTTP / CGIref , funktory v , ref-all, find,replace
9.2 2007 newLISP-GS je základní platforma GUI knihovna pro vývoj uživatelských rozhraní na newLISP
9.3 2008 FOOP - Funkčně-objektově orientované programování
9.4 2008 Cilk  - paralelní programovací API pro newLISP
10,0 2009 Obecné vyčištění API, předávání odkazem, použití nového jednotného destruktivního APIsetf
10.1 2009 API pro komunikaci mezi aktéry na Mac OS X, Linux a další UNIX
10.2 2010 FOOP přepracován tak, aby používal proměnlivé objekty
10.3 2011 Schopnost přepínat internetový protokol mezi IPv4 a IPv6
10.4 2012 import pomocí libffi
10.5 2013 Infinite Precision Integer Aritmetic
10.5.2 2013 Klastrová analýza KMEANS
10.5.7 2014 Kompilace do přiměřeně rychlého JavaScriptu spustitelného na straně prohlížeče
10.6.0 2014 Nativní rozšíření maker

Aplikace

Pro programování webu pomocí newLisp lze použít webový framework newLISP on Rockets [17] [18] , využívající Bootstrap a jQuery na straně prohlížeče a ukládání dat v SQLite [8] . Autora k vytvoření tohoto frameworku [19] inspiroval dřívější framework - Dragonfly [20] [21] .

Na základě NewLisp je implementován FuzzyLisp [22] , knihovna pro práci s fuzzy logikou [23] .

Poznámky

  1. http://www.newlisp.org/downloads/newLISP-10.7.5-Release.html
  2. Smedley, 2014 .
  3. V operačních systémech linux jsou rodiny spouštěny příkazemnewlisp-edit
  4. Mendez, 2015 , 1.5 A Rychlý začátek používání NewLisp, str. 8-13.
  5. Smedley, 2015 , str. 25.
  6. Mendez, 2015 , 4.2.4 Vytvoření jednoduchého uživatelského rozhraní, str. 102-104.
  7. ↑ 1 2 3 4 Lutz Mueller. nové vzory kódu LISP. §13. UDP komunikace . www.newlisp.org. Staženo 30. 5. 2016. Archivováno z originálu 29. 7. 2016.
  8. 1 2 Smedley, 2015 , str. 24.
  9. Mendez, 2015 , Příloha A. NewLisp Versus Common Lisp, pp. 347-352.
  10. ↑ 1 2 newLISP - Rozdíly od ostatních LISP . www.newlisp.org. Získáno 30. května 2016. Archivováno z originálu dne 6. dubna 2022.
  11. 1 2 3 Lazar, 2009 , nový LISP: jazyk .
  12. Mendez, 2015 , 1.4 The NewLisp Implementation, str. 7.
  13. Ronald P. Loui. In Chvála skriptování: Skutečný programovací pragmatismus  // Počítač. - 2008. - Červen ( roč. 41 , č. 7 ). - S. 22-26 . - doi : 10.1109/MC.2008.228 . Archivováno z originálu 23. září 2015.
  14. Osterout, 1998 .
  15. Smedley, 2015 , str. 22.
  16. Lutz Mueller. Projekty programovacích jazyků. Nový LISP. newLISP Historie . www.donlucio.net. Staženo 30. 5. 2016. Archivováno z originálu 12. 4. 2016.
  17. Nový LISP na Rockets Blogu . newlisponrockets.com. Získáno 29. 5. 2016. Archivováno z originálu 10. 4. 2016.
  18. nový projekt LISP-on-Rockets na GitHubu
  19. Rocket Man. Konverze dalšího newLISP kódu na Rockets. Číslo příspěvku: 85 . newlisponrockets.com (21. února 2013). Získáno 30. 5. 2016. Archivováno z originálu 21. 3. 2016.
  20. Marc Hildmann, Greg Slepak. Vítejte - webový rámec Dragonfly . dragonfly.apptruck.de. Získáno 30. 5. 2016. Archivováno z originálu 3. 3. 2016.
  21. Projekt Dragonfly na GitHubu
  22. Luis Arguelles. FuzzyLisp . www.fuzzylisp.com. Získáno 29. 5. 2016. Archivováno z originálu 6. 8. 2016.
  23. Mendez, 2015 .

Literatura

Odkazy