Maclisp
Maclisp (o MACLISP, a veces llamado MacLisp o MacLISP) es un lenguaje de programación, un dialecto de el lenguaje Lisp. Se originó en el Proyecto MAC del Instituto Tecnológico de Massachusetts (MIT) (del que deriva su prefijo) a fines de la década de 1960 y se basó en Lisp 1.5. Richard Greenblatt fue el principal desarrollador del código base original del PDP-6; Jon L. White fue el 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.
Historia
Maclisp es un descendiente de Lisp 1.5. Maclisp parte de Lisp 1.5 al usar una celda de valor para acceder y almacenar los valores dinámicos de las variables; Lisp 1.5 usaba una búsqueda lineal de una lista de asociaciones para determinar el valor de una variable. La evaluación de variables de Maclisp es más rápida pero tiene una semántica variable diferente. Maclisp también empleó macros de lector para hacer entrada y salida 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. Maclisp también tiene una función de carga bajo demanda.
Maclisp comenzó en las computadoras PDP-6 y PDP-10 de Digital Equipment Corporation que ejecutaban el Sistema de tiempo compartido incompatible (ITS); más tarde fue portado 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 posterior en Multics usó PL/I. Maclisp se desarrolló considerablemente durante su vida. Se agregaron características principales que en otros sistemas de idiomas normalmente corresponderían a números de versión principales.
Maclisp se utilizó para implementar el sistema de álgebra computacional (CAS) Macsyma o el programa de álgebra simbólica. El desarrollo de Macsyma también impulsó varias funciones en Maclisp. El programa del mundo de bloques SHRDLU se escribió en Maclisp, por lo que el lenguaje se usó ampliamente en la comunidad de investigación de inteligencia artificial (IA) a principios de la década de 1980. También se utilizó para implementar otros lenguajes de programación, como Planner y Scheme. Multics Maclisp se utilizó para implementar el primer Emacs basado en Lisp.
Maclisp fue una implementación Lisp influyente, pero ya no se mantiene activamente. Ahora se ejecuta en emuladores PDP-10 y se puede usar para experimentar con los primeros programas de IA.
1955 | 1960 | 1965 | 1970 | 1975 | 1980 | 1985 | 1990 | 1995 | 2000 | 2005 | 2010 | 2015 | 2020 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
LISP 1, 1,5, LISP 2(abandonado) | ||||||||||||||
Maclisp | ||||||||||||||
Interlisp | ||||||||||||||
MDL | ||||||||||||||
Lisp Machine Lisp | ||||||||||||||
Plan | R5RS | R6RS | R7RS pequeño | |||||||||||
NIL | ||||||||||||||
ZIL (Zork Implementation Language) | ||||||||||||||
Franz Lisp | ||||||||||||||
Lisp común | ANSI standard | |||||||||||||
Le Lisp | ||||||||||||||
MIT Plan | ||||||||||||||
T | ||||||||||||||
Chez Scheme | ||||||||||||||
Emacs Lisp | ||||||||||||||
AutoLISP | ||||||||||||||
PicoLisp | ||||||||||||||
Gambit | ||||||||||||||
EuLisp | ||||||||||||||
ISLISP | ||||||||||||||
OpenLisp | ||||||||||||||
PLT Plan | Racket | |||||||||||||
GNU Guile | ||||||||||||||
Visual LISP | ||||||||||||||
Clojure | ||||||||||||||
Arc | ||||||||||||||
LFE | ||||||||||||||
Hy |
Características
Maclisp comenzó con una cantidad pequeña y fija de tipos de datos: celda contraria, átomo (más tarde denominado símbolo), número entero y número de coma flotante. Las adiciones posteriores incluyeron: matrices, que nunca fueron tipos de datos de primera clase; enteros de precisión arbitraria (bignums); instrumentos de cuerda; y tuplas. Todos los objetos (excepto inums) se implementaron como punteros, y su tipo de datos estaba determinado por el bloque de memoria al que apuntaba, con un caso especial para números pequeños (inums).
Los programas pueden ser interpretados o compilados. El comportamiento compilado fue el mismo que el interpretado, excepto que las variables locales eran léxicas de manera predeterminada en el código compilado, a menos que se declararan SPECIAL, y no se realizó verificación de 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 la aritmética en lugar de llamar a rutinas interpretativas que se despachaban según el tipo de datos. Esto hizo que la aritmética de Lisp fuera comparable en velocidad a Fortran para operaciones escalares (aunque la implementación de matrices y bucles de Fortran siguió siendo mucho más rápida).
La versión original estaba limitada por la dirección de memoria de palabra de 18 bits del PDP-10, y se dedicó un esfuerzo considerable a mantener la implementación sencilla y sencilla. Multics Maclisp tenía un espacio de direcciones mucho más grande, pero su uso era costoso. Cuando se superó la capacidad de memoria y procesamiento del PDP-10, se inventó Lisp Machine: Lisp Machine 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 en décadas, ni con John McCarthy. Los diversos sistemas Lisp para Macintosh no tienen ninguna similitud particular con Maclisp.
Contenido relacionado
Pérdida de memoria
Palabras de Caligra
Eric Raymond (desambiguación)