New Implementation of LISP ( NIL ) es un lenguaje de programación , un dialecto del lenguaje Lisp , desarrollado en el Instituto de Tecnología de Massachusetts (MIT) durante la década de 1970, y destinado a ser el sucesor del lenguaje Maclisp . [1] Es una implementación de 32 bits , [2] y fue en parte una respuesta a la computadora VAX de Digital Equipment Corporation (DEC) . El proyecto fue dirigido por Jon L White, [3] con el objetivo declarado de mantener la compatibilidad con MacLisp mientras soluciona muchos de sus problemas.
Paradigmas | Multiparadigma : funcional , procedimental |
---|---|
Familia | Ceceo |
Diseñada por | Jon L Blanco |
Desarrolladores | Jon L White, Guy L. Steele Jr. , Richard P. Gabriel |
Apareció por primera vez | 1979 |
Disciplina de mecanografía | dinámico , fuerte |
Lenguaje de implementación | Montaje VAX |
Plataforma | PDP-6 , PDP-10 |
SO | TOPS-10 , SU |
Influenciado por | |
Lisp , Maclisp | |
Influenciado | |
Lisp común , [1] T |
Historia
El lenguaje Lisp fue inventado en 1958 por John McCarthy mientras estaba en el Instituto Tecnológico de Massachusetts (MIT). [4] Desde sus inicios, Lisp estuvo estrechamente relacionado con la comunidad de investigación de inteligencia artificial (IA) , especialmente en los sistemas PDP-10 . El tamaño de palabra de 36 bits de PDP-6 y PDP-10 fue influenciado por la utilidad de tener dos punteros Lisp de 18 bits en una palabra: "El proyecto PDP-6 comenzó a principios de 1963, como una máquina de 24 bits . Creció a 36 bits para LISP, un objetivo de diseño ". [5] Lisp se utilizó como implementación del lenguaje de programación Micro Planner que fue la base del famoso sistema de inteligencia artificial SHRDLU . Lisp, en particular Maclisp (llamado así porque se originó en el proyecto MAC del MIT) también se usó para implementar el sistema de álgebra computacional Macsyma . En la década de 1970, cuando la investigación de la IA generó ramificaciones comerciales, el rendimiento de los sistemas Lisp existentes se convirtió en un problema creciente.
En parte debido a la recolección de basura (Lisp usaría la recolección de basura de detener y copiar de su único montón para la asignación de memoria [2] ) y en parte debido a su representación de estructuras internas, Lisp se volvió difícil de ejecutar en el hardware de computadora de stock con memoria limitada. del día. Esto llevó a la creación de máquinas Lisp : hardware dedicado para ejecutar entornos y programas Lisp. Una alternativa era utilizar el hardware básico más potente que estaba disponible, especialmente el VAX de Digital Equipment Corporation (DEC) .
NIL fue una implementación de Lisp desarrollada en el MIT a mediados o finales de la década de 1970, y pretendía ser un sucesor moderno de Maclisp que podía ejecutarse en hardware estándar, [1] en contraste con Lisp Machine Lisp para las máquinas Lisp. [2] "Originalmente diseñado como el primer dialecto Lisp moderno en hardware estándar después del desarrollo de la máquina Lisp Lisp en el MIT, se convirtió en una de las principales influencias en el diseño de Common Lisp". (pág. 63/294 de [2] ) Dado que los usuarios del programa Macsyma representaban una gran base de usuarios potenciales para NIL, era necesario que NIL fuera un sistema grande y complejo, y esa velocidad sería imperativa. Por ejemplo, los bignums de alta velocidad eran un requisito para admitir Macsyma, ya que NIL sería un error con bignums lentos. [6] En consecuencia, NIL terminó con una gran base de lenguaje ensamblador VAX . Estos requisitos llevaron a una estrategia de optimización muy agresiva y compleja que se aplicó de forma prematura, con resultados negativos en el sistema final. [7]
Simultáneamente con el esfuerzo de escribir NIL, un grupo de investigación de la Universidad de Stanford y el Laboratorio Nacional Lawrence Livermore dirigido por Richard P. Gabriel estaban investigando el diseño de un Lisp para ejecutar en la supercomputadora S-1 Mark IIA , S-1 Lisp . Ese Lisp nunca fue completamente funcional, pero fue un banco de pruebas para implementar métodos avanzados de compilación en un Lisp. Finalmente, los grupos S-1 y NIL comenzaron a colaborar.
Aunque fracasó en el logro de sus objetivos como lengua usada, NIL fue importante de varias maneras. Primero, reunió a Jon L. White, Guy L. Steele Jr. y Richard P. Gabriel, quienes más tarde definirían Common Lisp . [1] En segundo lugar, Jonathan Rees trabajó en parte del proyecto NIL durante un año fuera de la Universidad de Yale . Al regresar a la Universidad de Yale, fue contratado por la informática departamento para escribir un nuevo Lisp, que se convirtió en la optimización, el código nativo Esquema de sistema llamado T . En parte, NIL engendró este nombre, ya que "T no es NIL". [7]
Citas
La génesis y el eventual fracaso de este tipo de proyecto siempre es claramente visible (en retrospectiva) en los conceptos de las primeras discusiones. Una frase clave es siempre algo así como: " Tiraremos todo lo viejo , comenzaremos de nuevo y simplemente haremos las cosas bien".
- Escalofríos de Olin [7]
Referencias
- ↑ a b c d Steele, Guy L. Jr .; Gabriel, Richard P. "La evolución de Lisp" (PDF) . Consultado el 5 de agosto de 2017 .
- ^ a b c d Gabriel, Richard P. (mayo de 1985). Desempeño y evaluación de sistemas Lisp (PDF) . Prensa del MIT ; Serie de sistemas informáticos. ISBN 978-0-262-07093-5. LCCN 85015161 .
- ^ Pitman, Kent M. "Breve historia del lenguaje Lisp" . Archivado desde el original el 10 de octubre de 2006 . Consultado el 12 de octubre de 2006 .
- ^ McJones, Paul. "Historia de LISP" . Consultado el 12 de octubre de 2006 .
- ^ Hurley, Peter J. Stevens, Jack; Johnson, Lum (eds.). "La historia de TOPS o vida en los AC rápidos" . Grupos de Google . Consultado el 28 de noviembre de 2018 .
- ^ Weinreb, Dan. "Dan Weinreb en NIL" . PaulGraham.com . Consultado el 28 de noviembre de 2018 .
- ^ a b c Escalofríos, Olin. "Olin Shivers: Historia de T" . PaulGraham.com . Consultado el 28 de noviembre de 2018 .
Bibliografía
- Brent T. Hailpern, Bruce L. Hitson. Manual de Arquitectura S-1. Informe técnico 161 (STAN-CS-79-715), Departamento de Ingeniería Eléctrica, Universidad de Stanford, enero de 1979.
- G. Burke. Introducción a NIL. Laboratorio de Ciencias de la Computación, Instituto de Tecnología de Massachusetts, marzo de 1983.
- GS Burke, GJ Carrette, CR Eliot. Notas NIL para la versión 0.259, Laboratorio de Ciencias de la Computación, Instituto de Tecnología de Massachusetts, junio de 1983.
- GS Burke, GJ Carrette, CR Eliot. Manual de referencia NIL. Informe MIT / LCS / TR-311, Laboratorio de Ciencias de la Computación, Instituto de Tecnología de Massachusetts, Cambridge, Massachusetts, 1983.
Documentos
- Steven Correll. Arquitectura monoprocesador S-1 (sma-4). Volumen I, Capítulo 4, Informe anual del Proyecto S-1 de 1979, Laboratorio Lawrence Livermore, Livermore, California, 1979.
- Jon L. White. Nulo: una perspectiva. Actas de la Conferencia de Usuarios de Macsyma de 1979, Washington, DC, junio de 1979.
- Rodney A. Brooks, Richard P. Gabriel, Guy L. Steele Jr. S-1 Implementación de Common Lisp. Actas del simposio ACM de 1982 sobre LISP y programación funcional, Pittsburgh, 1982, páginas 108 - 113. ACM DL
- Rodney A. Brooks, Richard P. Gabriel, Guy L. Steele Jr. Un compilador de optimización para un LISP de ámbito léxico. Actas del Simposio de 1982 sobre construcción de compiladores, Boston, junio de 1982, páginas 261-275. ACM DL
- Mark Smotherman. Supercomputadora S-1 (1975-1988). Sitio web, actualizado por última vez el 24 de abril de 2004. http://www.cs.clemson.edu/~mark/s1.html