nuevoLISP | |
---|---|
clase de idioma | Lenguaje de programación multiparadigma |
Apareció en | 1991 |
Autor | Lutz Müller |
Desarrollador | Lutz Müller |
Liberar |
|
sido influenciado | Ceceo común , Esquema |
Licencia | Licencia Pública General GNU |
Sitio web | newlisp.org |
NewLISP es un dialecto de Lisp diseñado como lenguaje de programación .
La implementación de newLisp es liviana y el lenguaje en sí es fácil de aprender [2] .
La nueva distribución LISP incluye un entorno de programación simple [3] que tiene una ventana de emulador de terminal debajo del área de edición de fuentes donde puede ver los resultados de ejecutar un programa Lisp (ver REPL ) [4] .
El lenguaje admite la programación pseudo -orientada a objetos en forma de FOOP (Programación de Objetos Funcionales) [5] .
El lenguaje viene incluido con herramientas de programación GUI [6] .
NewLISP tiene herramientas de programación web integradas ( Httpd y CGI [7] [7] ), además de trabajar con protocolos de red como TCP/IP [7] o UDP [7] [8] .
NewLISP tiene una serie de características que lo distinguen de Common Lisp [9] y otros dialectos de Lisp, tanto en sintaxis como en semántica [10] . Por ejemplo, los nombres de funciones de lista tradicionales cary han cdrsido reemplazados por firsty rest, como en T-Lisp. consLos detalles del comportamiento de las funciones y son algo diferentes last. Las listas están indexadas, puede obtener el i-ésimo elemento de la lista myList, contando desde cero, usando la expresión (myList i).[11]
newLISP es similar a Scheme en varios aspectos . Al igual que Scheme, newLisp adopta una evaluación vigorosa de los parámetros de función pasados. Para variables , primitivas y símbolos definidos por el usuario, aquí también se usa un único espacio de nombres [11] .
Una diferencia significativa con newLisp es que utiliza un ámbito variable dinámico de forma predeterminada. Si se necesita un alcance léxico (estático), esto se logra a través del mecanismo de los llamados. contextos [11] .
El informático alemán Lutz Müller desarrolló NewLisp como un dialecto de Lisp fácil de aprender [12] . A diferencia de las versiones tradicionales de Lisp, newLISP fue diseñado como un lenguaje de programación . El autor hace referencia [10] al artículo "Elogio del scripting: pragmatismo real de la programación" [13] , que fue escrito como parte de la discusión provocada por el artículo "Scripting: programación de alto nivel para el siglo XXI" del desarrollador de Tcl Juan Osterout [14] .
El lenguaje se implementó por primera vez en la estación de trabajo Sun4 en 1991. [15] En 1993 se trasladó a Windows 3.0 de 16 bits y en 1995 a Windows 95 de 32 bits . En abril de 1999, NewLISP fue portado a Linux y lanzado bajo una licencia libre . Se eliminó todo el código específico de Windows y, a partir de la versión 6.0.25, se eliminó la compatibilidad con este sistema operativo. En 2001, el trabajo bajo Windows se vuelve posible gracias a Cygwin , al principio la versión win funcionaba solo en la consola, pero en la versión 6.3, usando Tcl / Tk , se implementó una interfaz gráfica de usuario multiplataforma newLISP-tk . En 2007, se desarrolló la biblioteca de GUI newLISP-GS basada en Java y actualmente es la principal implementación de GUI para newLISP. A continuación se muestra una cronología de los cambios clave desde 1990 hasta 2014 [16] .
Versión | Año | Cambios principales |
---|---|---|
1.0 | 1990 | Primera versión, se ejecutó en un Sun-4 con SunOS / BSD 4.1 |
1.3 | 1993 | Portar a Windows 3.0 |
3.0 | 1995 | Portar a Windows 95 |
6.0 | 1999 | Versión de código abierto ( GPL ) para Unix / Linux |
6.3 | 1999 | nuevoLISP-tk Tcl / Tk IDE |
6.5.8 | 2002 | Expresiones regulares PCRE |
7.1-4 | 2003 | Compatibilidad con MacOS X y Solaris , Manual en PDFcatch y throwVariables de contexto, DLL Win32 |
8.0-3 | 2004 | Matrices , compatibilidad con UTF-8, bifurcación de proceso , semáforos , memoria compartida , función predeterminada |
8.4-7 | 2005 | Indexación de matriz implícita, soporte para locales separados por comas , señales y temporizadores , computación distribuida a través denet-eval |
8.8-9 | 2006 | Unificación de estilo Prolog , expansión de variables de estilo macro, soporte mejorado para indexación implícita |
9.0 | 2006 | Compatibilidad con aritmética de 64 bits y acceso a archivos, funciones adicionales para trabajar con matrices, modo de servidor HTTP |
9.1 | 2007 | Compilación para plataformas de 64 bits, modo servidor HTTP / CGI , funtores en ref, ref-all, find,replace |
9.2 | 2007 | newLISP-GS es una biblioteca GUI de plataforma central para desarrollar interfaces de usuario en newLISP |
9.3 | 2008 | FOOP - Programación orientada a funciones y objetos |
9.4 | 2008 | Cilk - API de programación paralela para newLISP |
10.0 | 2009 | Limpieza general de API, paso por referencia, nueva API destructiva unificada usandosetf |
10.1 | 2009 | API para comunicación entre actores en Mac OS X, Linux y otros UNIX |
10.2 | 2010 | FOOP rediseñado para usar objetos mutables |
10.3 | 2011 | Capacidad para cambiar el protocolo de Internet entre IPv4 e IPv6 |
10.4 | 2012 | de importación extendida usando libffi |
10.5 | 2013 | Aritmética de enteros de precisión infinita |
10.5.2 | 2013 | Análisis de conglomerados KMEANS |
10.5.7 | 2014 | Compilando un ejecutable de JavaScript razonablemente rápido en el lado del navegador |
10.6.0 | 2014 | Expansión de macros nativos |
Para la programación web usando newLisp, se puede usar el marco web newLISP on Rockets [17] [18] , usando Bootstrap y jQuery en el lado del navegador y almacenando datos en SQLite [8] . El autor se inspiró para crear este marco [19] en un marco anterior: Dragonfly [20] [21] .
Basado en NewLisp, se implementa FuzzyLisp [22] , una librería para trabajar con lógica difusa [23] .
Ceceo | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Características |
| ||||||||||||||
Implementaciones |
| ||||||||||||||
Hardware |
| ||||||||||||||
Comunidad |
| ||||||||||||||
|