Maclisp (o MACLISP , a veces llamado MacLisp o MacLISP ) es un lenguaje de programación , un dialecto del lenguaje Lisp . Se originó en el Proyecto MAC [1] del Instituto Tecnológico de Massachusetts (MIT) (del cual derivó su prefijo) a finales de la década de 1960 y se basó en Lisp 1.5. [2] Richard Greenblatt fue el desarrollador principal del código base original para el PDP-6 ; [1] Jon L. White fue responsable de su posterior mantenimiento y desarrollo. El nombre Maclisp comenzó a usarse a principios de la década de 1970 para distinguirlo de otras bifurcaciones de PDP-6 Lisp, en particular BBN Lisp .
Paradigmas | Multi-paradigma : funcional , procedimental , reflexivo , meta |
---|---|
Familia | Ceceo |
Diseñada por | Richard Greenblatt Jon L. White |
Desarrollador | MIT : Proyecto MAC |
Apareció por primera vez | Julio de 1966 |
Disciplina de mecanografía | dinámico , fuerte |
Lenguaje de implementación | Lenguaje ensamblador , PL / I |
Plataforma | PDP-6 , PDP-10 |
SO | Sistema de tiempo compartido incompatible , TOPS-10 , TOPS-20 , Multics |
Extensiones de nombre de archivo | .lisp , .fasl |
Influenciado por | |
Lisp 1.5 | |
Influenciado | |
Lisp común |
Historia
Maclisp es un descendiente de Lisp 1.5 . [3] Maclisp se aparta de Lisp 1.5 utilizando una celda de valor para acceder y almacenar los valores dinámicos de las variables ; [4] Lisp 1.5 utilizó una búsqueda lineal de una lista de asociación para determinar el valor de una variable. [5] La evaluación de variables de Maclisp es más rápida pero tiene una semántica de variable diferente. Maclisp también empleó macros de lector para hacer entradas y salidas más legibles , denominadas entrada / salida (E / S). En lugar de ingresar (QUOTE A)
, se podría ingresar 'A
para obtener la misma expresión s . Aunque ambas implementaciones colocan funciones en la lista de propiedades, Maclisp usa una sintaxis diferente para definir funciones. [6] Maclisp también tiene una función de carga bajo demanda. [7]
Maclisp comenzó en las computadoras PDP-6 y PDP-10 de Digital Equipment Corporation que ejecutaban el Incompatible Timesharing System (ITS); posteriormente se trasladó a todos los demás sistemas operativos PDP-10, por ejemplo, Timesharing / Total Operating System , TOPS-10 y TOPS-20 . La implementación original estaba en lenguaje ensamblador , pero una implementación más adelante Multics utiliza PL / I . Maclisp se desarrolló considerablemente durante su vida. Principales características [ ¿cuáles? ] se agregaron, que en otros sistemas de idiomas normalmente corresponderían a los números de versiones más importantes. [ dudoso ]
Maclisp se utilizó para implementar el sistema de álgebra computacional Macsyma (CAS) o el programa de álgebra simbólica. El desarrollo de Macsyma también impulsó varias características [ ¿cuál? ] en Maclisp. El programa SHRDLU blocks-world se escribió en Maclisp, por lo que el lenguaje tuvo un uso generalizado en la comunidad de investigación de inteligencia artificial (IA) hasta principios de la década de 1980. También se utilizó para implementar otros lenguajes de programación, como Planner y Scheme . Se utilizó Multics Maclisp para implementar el primer Emacs basado en Lisp .
Maclisp fue una implementación de Lisp influyente, pero ya no se mantiene de forma activa. Ahora se ejecuta en emuladores PDP-10 y se puede utilizar para experimentar con los primeros programas de IA.
Caracteristicas
Maclisp comenzó con un número pequeño y fijo de tipos de datos : contras de celda, átomo (más tarde denominado símbolo ), entero y número de punto flotante . Las adiciones posteriores incluyeron: matrices , que nunca fueron tipos de datos de primera clase; números enteros de precisión arbitraria (bignums); cuerdas ; y tuplas . Todos los objetos (excepto inums) se implementaron como punteros , y su tipo de datos fue determinado por el bloque de memoria al que apuntaban, con un caso especial para números pequeños (inums).
Los programas se pueden interpretar o compilar . El comportamiento compilado fue el mismo que el interpretado, excepto que las variables locales eran léxicas por defecto en el código compilado, a menos que se declararan SPECIAL, [8] y no se verificaron errores para operaciones en línea como CAR y CDR. El compilador Ncomplr (mediados de la década de 1970) introdujo un soporte numérico rápido para los lenguajes Lisp, generando código de máquina (instrucciones) para aritmética en lugar de llamar a rutinas interpretativas que se distribuían por tipo de datos. Esto hizo que la aritmética de Lisp fuera comparable en velocidad a la de Fortran para operaciones escalares (aunque la implementación de matriz y bucle de Fortran se mantuvo mucho más rápida).
La versión original estaba limitada por la dirección de memoria de palabras de 18 bits del PDP-10, y se dedicó un esfuerzo considerable a mantener la implementación ágil y simple. Multics Maclisp tenía un espacio de direcciones mucho más grande, pero su uso era costoso. Cuando la memoria y potencia de procesamiento de la PDP-10 se superaron, la máquina Lisp fue inventado: Lisp Máquina Lisp es el descendiente directo de Maclisp. Varios otros dialectos Lisp también estaban en uso, y la necesidad de unificar la comunidad resultó en el lenguaje Common Lisp moderno .
Nombre
Maclisp recibió su nombre del Proyecto MAC y no está relacionado con la computadora Macintosh (Mac) de Apple , que es anterior a décadas. Los diversos sistemas Lisp para Macintosh no tienen ninguna similitud particular con Maclisp. [9]
Referencias
- ↑ a b Levy, Steven (1984). Hackers: héroes de la revolución informática . Doubleday. ISBN 0-385-19195-2.
- ^ Project MAC Progress Report IV: julio de 1966 a julio de 1967 (PDF) (Informe). ndp 19.
El lenguaje de nivel superior que se utiliza en la mayor parte del programa de laboratorio de visión es el sistema PDP-6 LISP. Este sistema se basa principalmente en el lenguaje de programación LISP 1.5, pero se ha modificado ampliamente de varias formas. Estos incluyen muchas funciones y servicios nuevos, incluidas las facilidades para vincularse con programas escritos en otros idiomas.
- ↑ Moon 1974 , p. 1
- ↑ Moon 1974 , p. 47
- ^ Lisp 1.5 p. 13, la evaluación de un átomo
e
en el entornoa
se hace con(cdr (assoc e a))
. Eso implica una búsqueda lineal de la lista de asociacionesa
. En la pág. Se ofrece una descripción más detallada con constantes y errores globales. 71; realiza una búsqueda lineal de la lista de propiedades antes de buscar en la lista de asociaciones. - ^ Usos de Maclisp
defun
; Lisp 1.5 utilizadefine
. - ↑ Moon 1974 , p. 107; la
autoload
propiedad. - ^ Pitman, Kent (16 de diciembre de 2007). "El Manual revisado de Maclisp (The Pitmanual), edición del domingo por la mañana" . maclisp.info . HyperMeta, Inc. Declaraciones y el Compilador, Concepto "Variables" . Consultado el 20 de octubre de 2018 .
Si la variable a vincular se ha declarado especial, la vinculación se compila como código para imitar la forma en que el intérprete vincula las variables.
- ^ Pitman, Kent (16 de diciembre de 2007). "El Manual revisado de Maclisp (The Pitmanual), edición del domingo por la mañana" . maclisp.info . HyperMeta Inc. pág. 1 Preguntas frecuentes q1 . Consultado el 20 de octubre de 2018 .
El proyecto MAC no tuvo nada que ver con el "Mac" de Apple. Y MACLISP tampoco.
enlaces externos
- http://www.softwarepreservation.org/projects/LISP/maclisp_family/ contiene una bibliografía de Maclisp.
- John L. White. Una guía del usuario provisional de LISP. Memorando de Inteligencia Artificial No. 190, Proyecto MAC, Instituto de Tecnología de Massachusetts, marzo de 1970, 87 páginas. ftp://publications.ai.mit.edu/ai-publications/pdf/AIM-190.pdf dice "'MACLISP' se refiere a la implementación PDP / 6 del lenguaje de programación LISP en uso en el Grupo de Inteligencia Artificial del Proyecto MAC . "
- “En 1973 y 1974, David A. Moon dirigió un esfuerzo para implementar MacLisp en Honeywell 6180 bajo Multics. Como parte de este proyecto, escribió el primer manual de referencia verdaderamente completo para Maclisp, que se conoció familiarmente como 'Moonual'. " [Steele y Gabriel 1993]
- Jon L. White [JONL], Eric Rosen [ECR], Richard M. Stallman [RMS], Guy L. Steele Jr. [GLS], Howard I. Cannon [HIC], Bob Kerns [RWK]. Noticias LISP. Notas de la versión de MacLisp.
- Jon L. White. LISP: El programa es datos: una perspectiva histórica en MacLISP. Actas de la Conferencia de Usuarios de MACSYMA de 1977. Oficina de Información Científica y Técnica de la NASA (Washington, DC, julio de 1977), páginas 181-189. PDF
- McCarthy, John ; Abrahams, Paul W .; Edwards, Daniel J .; Hart, Timothy P .; Levin, Michael I. (1985) [1962]. Manual del programador LISP 1.5 (2ª ed.). Prensa del MIT . ISBN 0-262-13011-4.
- Moon, David (1974). Manual de referencia de Maclisp (PDF) .
- El manual revisado de Maclisp (1983) por Kent Pitman
- El compilador Multics MACLISP (1977) de Bernard Greenberg