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 .
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] .
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] .
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 |
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] .
Lisp | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Charakteristika |
| ||||||||||||||
Implementace |
| ||||||||||||||
Hardware |
| ||||||||||||||
Společenství |
| ||||||||||||||
|