NuevoLISP

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 29 de septiembre de 2016; las comprobaciones requieren 11 ediciones .

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 .

Características

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

Comparado con otros dialectos

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

Historia

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

Aplicación

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

Notas

  1. http://www.newlisp.org/downloads/newLISP-10.7.5-Release.html
  2. Smedley, 2014 .
  3. En los sistemas operativos linux , las familias son iniciadas por el comandonewlisp-edit
  4. Méndez, 2015 , 1.5 Un inicio rápido con NewLisp, págs. 8-13.
  5. Smedley, 2015 , pág. 25
  6. Méndez, 2015 , 4.2.4 Creación de una interfaz de usuario sencilla, págs. 102-104.
  7. ↑ 1 2 3 4 Lutz Mueller. nuevosPatrones de código LISP. §13. Comunicaciones UDP . www.newlisp.org. Consultado el 30 de mayo de 2016. Archivado desde el original el 29 de julio de 2016.
  8. 1 2 Smedley, 2015 , pág. 24
  9. Mendez, 2015 , Apéndice A. NewLisp Versus Common Lisp, pp. 347-352.
  10. ↑ 1 2 nuevoLISP: diferencias con otros LISP . www.newlisp.org. Consultado el 30 de mayo de 2016. Archivado desde el original el 6 de abril de 2022.
  11. 1 2 3 Lazar, 2009 , nuevoLISP: el lenguaje .
  12. Mendez, 2015 , 1.4 La implementación de NewLisp, p. 7.
  13. Ronald P. Loui. Elogio de las secuencias de comandos: pragmatismo de programación real  // Informática. - 2008. - junio ( vol. 41 , núm. 7 ). - S. 22-26 . -doi : 10.1109 / MC.2008.228 . Archivado desde el original el 23 de septiembre de 2015.
  14. Osterout, 1998 .
  15. Smedley, 2015 , pág. 22
  16. Lutz Müller. Proyectos de lenguaje de programación. NuevoLISP. nuevoHistoria de LISP . www.donlucio.net. Consultado el 30 de mayo de 2016. Archivado desde el original el 12 de abril de 2016.
  17. El nuevo LISP en el blog de Rockets . newlisponrockets.com. Consultado el 29 de mayo de 2016. Archivado desde el original el 10 de abril de 2016.
  18. nuevo proyecto LISP-on-Rockets en GitHub
  19. Hombre Cohete. Conversión de otro código newLISP a Rockets. Publicación #: 85 . newlisponrockets.com (21 de febrero de 2013). Consultado el 30 de mayo de 2016. Archivado desde el original el 21 de marzo de 2016.
  20. Marc Hildmann, Greg Slepak. Bienvenido: marco web Dragonfly . dragonfly.apptruck.de. Consultado el 30 de mayo de 2016. Archivado desde el original el 3 de marzo de 2016.
  21. Proyecto Dragonfly en GitHub
  22. Luis Argüelles. FuzzyLisp . www.fuzzylisp.com. Consultado el 29 de mayo de 2016. Archivado desde el original el 6 de agosto de 2016.
  23. Méndez, 2015 .

Literatura

Enlaces