Maclisp

MACLISP (o Maclisp, a veces llamado MacLisp o MacLISP) es un dialecto del lenguaje de programación Lisp. Se originó en el Proyecto MAC[1]​ del MIT (del cual se derivó su prefijo) a fines de la década de 1960 y se basó en Lisp 1.5.[2]Richard Greenblatt fue el principal desarrollador de la base de código original para el PDP-6; Jon L. White fue responsable de su posterior mantenimiento y desarrollo. El nombre 'Maclisp' comenzó a utilizarse a principios de la década de 1970 para distinguirlo de otras bifurcaciones de PDP-6 Lisp, especialmente BBN Lisp.

Historia

Maclisp es un descendiente de Lisp 1.5.[3]​ Maclisp se aleja 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 la variable Maclisp es más rápida pero tiene una semántica variable diferente. Maclisp también empleó macros de lector para hacer una entrada y salida más legibles. En lugar de ingresar  ((QUOTE A)), uno podría ingresar 'A para obtener la misma expresión s. Aunque ambas implementaciones ponen funciones en la lista de propiedades, Maclisp usa una sintaxis diferente para definir funciones.[6]​ Maclisp también tiene una característica de carga bajo demanda.[7]

Maclisp comenzó en las computadoras PDP-6 y PDP-10  de Digital Equipment Corporation que ejecutan el Sistema de Tiempo compartido incompatible (ITS); más tarde fue portado a todos los demás sistemas operativos PDP-10, por ejemplo, TOPS-10 y TOPS-20. La implementación original era en lenguaje ensamblador, pero una implementación posterior en Multics usó PL/I. Maclisp se desarrolló considerablemente en su tiempo de vida. Se agregaron características principales, que en otros sistemas de idiomas normalmente corresponderían a los principales números de publicación.[cita requerida]

Maclisp se usó para implementar el programa de álgebra simbólica Macsyma; El desarrollo de Macsyma también generó una serie de características[¿cuál?] en Maclisp. El programa SHRDLU blocks-world fue escrito en Maclisp, por lo que el lenguaje fue ampliamente utilizado en la comunidad de investigación de inteligencia artificial a principios de los años ochenta. También se usó para implementar otros lenguajes de programación, como Planner y Scheme. Multics Maclisp fue utilizado para implementar los primeros Emacs basados en Lisp.

Maclisp fue una implementación influyente de Lisp, pero ya no se mantiene activamente. Ahora se ejecuta en emuladores PDP-10 y se puede utilizar para experimentar con los primeros programas de IA.

Características

Maclisp comenzó con un número pequeño y fijo de tipos de datos: celda de cons , átomo (más tarde llamado "símbolo"), número entero y número de coma flotante. Las ediciones posteriores incluyeron: matrices, que nunca fueron tipos de datos de primera clase; números enteros de precisión arbitraria (bignums); instrumentos de cuerda; y tuplas Todos los objetos (excepto los interiores) se implementaron como punteros, y su tipo de datos se determinó por el bloque de memoria al que apuntaba, con un caso especial para números pequeños (interiores).

Los programas pueden ser interpretados o compilados. El comportamiento compilado fue el mismo que el interpretado, excepto que las variables locales eran léxicas por defecto en el código compilado, y no se realizó ninguna comprobación de errores para operaciones en línea como CAR y CDR. El compilador Ncomplr (mediados de la década de 1970) introdujo un rápido soporte numérico para el mundo Lisp, generando instrucciones de máquina para la aritmética en lugar de llamar a las rutinas interpretativas que se distribuyen en el tipo de datos. Esto hizo que la aritmética de Lisp fuera comparable a la velocidad de Fortran para las operaciones escalares (aunque la implementación de array y bucle de Fortran se mantuvo mucho mejor).

La versión original estaba limitada por la dirección de palabra de 18 bits del PDP-10, y se invirtió un esfuerzo considerable para mantener la implementación simple y eficiente. Multics Maclisp tenía un espacio de direcciones mucho más grande, pero era costoso de usar. Cuando se excedieron la memoria y la potencia de procesamiento del PDP-10, se inventó la Máquina Lisp :  Lisp Machine Lisp es el descendiente directo de Maclisp. Varios otros dialectos de Lisp también estaban en uso, y la necesidad de unificar la comunidad resultó en el lenguaje Common Lisp moderno.

Nombre

MACLISP fue nombrado para el Proyecto de MAC, y no está relacionado con la computadora Macintosh ("Mac") de Apple, que es anterior por décadas. Los diversos sistemas de Lisp para Macintosh no tienen ninguna similitud particular con Maclisp.[cita requerida]

Referencias

  1. Levy, Steven (1984). Hackers: Heroes of the Computer Revolution. Doubleday. ISBN 0-385-19195-2. 
  2. Project MAC Progress Report IV: July 1966 to July 1967, n.d., p. 19, archivado desde el original el 8 de marzo de 2016, consultado el 31 de enero de 2018, «The higher-level language used for most of the vision laboratory program is the PDP-6 LISP System. This system is based chiefly on the LISP 1.5 programming language, but has been extensively modified in a number of ways. These include many new functions and services, including facilities for linking with programs written in other languages.» .
  3. Moon, 1974, p. 1
  4. Moon, 1974, p. 47
  5. Lisp 1.5 p. 13, evaluating an atom e in the environment a is done with (cdr (assoc e a)). That involves a linear search of the association list a. A more involved description with global constants and errors is given on p. 71; it does a linear search of the property list before searching the association list.
  6. Maclisp uses defun; Lisp 1.5 uses define.
  7. Moon, 1974, p. 107; the autoload property.

Enlaces externos