Articulo de referencia

Maclisp

Jon L. White"},"developer":{"wt":"[[Massachusetts Institute of Technology|MIT]]: [[Project MAC]]"},"released":{"wt":"{{Start date and age|1966|07}}"},"latest release version":{"...

Maclisp (o MACLISP , a veces estilizado como MacLisp o MacLISP ) es un lenguaje de programación , un dialecto del lenguaje Lisp . Se originó en el Proyecto MAC del Instituto Tecnológico de Massachusetts (MIT) [ 1 ] (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 fuente 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 .

Historia

Maclisp es descendiente de Lisp 1.5 . [ 3 ] Maclisp se diferencia de Lisp 1.5 al usar una celda de valor para acceder y almacenar los valores dinámicos de las variables ; [ 4 ] Lisp 1.5 usaba 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 variables diferente. Maclisp también empleó macros de lectura para hacer que la entrada y salida sean más legibles , denominadas entrada/salida (E/S). En lugar de ingresar (QUOTE A), se podía ingresar 'Apara 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 se originó en las computadoras PDP-6 y PDP-10 de Digital Equipment Corporation que ejecutaban el Sistema de Tiempo Compartido Incompatible (ITS); posteriormente, se adaptó a todos los demás sistemas operativos de PDP-10, como Timesharing/Total Operating System , TOPS-10 y TOPS-20 . La implementación original estaba escrita en lenguaje ensamblador , pero una implementación posterior en Multics utilizó PL/I . Maclisp se desarrolló considerablemente a lo largo de su existencia. Se añadieron características importantes que, en otros sistemas de lenguaje, normalmente corresponderían a versiones principales.

Maclisp se utilizó para implementar el sistema de álgebra computacional (CAS) Macsyma o programa de álgebra simbólica. El desarrollo de Macsyma también impulsó varias características de Maclisp. El programa de mundo de bloques SHRDLU se escribió en Maclisp, por lo que el lenguaje se utilizó ampliamente 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 . Multics Maclisp se utilizó para implementar el primer Emacs basado en Lisp .

Maclisp fue una implementación influyente de Lisp, pero ya no recibe mantenimiento activo. Actualmente se ejecuta en emuladores PDP-10 y puede utilizarse para experimentar con programas de IA primitivos.

Características

Maclisp comenzó con un número pequeño y fijo de tipos de datos : celda cons , átomo (más tarde denominado símbolo ), entero y número de punto flotante . Posteriormente se añadieron: arreglos , que nunca fueron tipos de datos de primera clase; enteros de precisión arbitraria (bignums); cadenas ; y tuplas . Todos los objetos (excepto los inums) se implementaron como punteros , y su tipo de dato estaba determinado por el bloque de memoria al que apuntaba, con un caso especial para los números pequeños (inums).

Los programas podían interpretarse o compilarse . El comportamiento compilado era 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 como SPECIAL, [ 8 ] y no se realizaba 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 soporte numérico rápido para los lenguajes Lisp, generando código máquina (instrucciones) para la aritmética en lugar de llamar a rutinas interpretativas que se despachaban según el tipo de dato. Esto hizo que la aritmética de Lisp fuera comparable en velocidad a Fortran para operaciones escalares (aunque la implementación de arreglos y bucles de Fortran seguía 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 invirtió un esfuerzo considerable en mantener la implementación simple y eficiente. Multics Maclisp tenía un espacio de direcciones mucho mayor, pero su uso era costoso. Cuando se superó la memoria y la capacidad de procesamiento del PDP-10 , se inventó la Lisp Machine : Lisp es el descendiente directo de Maclisp. También se utilizaban otros dialectos de Lisp , y la necesidad de unificar la comunidad dio como resultado el lenguaje Common Lisp moderno .

Nombre

Maclisp recibió su nombre del Proyecto MAC y no guarda relación con el ordenador Macintosh (Mac) de Apple, al que precede por décadas, ni con John McCarthy . Los diversos sistemas Lisp para Macintosh no tienen ninguna similitud particular con Maclisp. [ 9 ]

Referencias

  1. 1 2 Levy, Steven (1984). Hackers: Héroes de la revolución informática . Doubleday. ISBN 0-385-19195-2.
  2. Informe de progreso del proyecto MAC IV: julio de 1966 a julio de 1967 (PDF) (Informe). ndp 19. Archivado del original (PDF) el 8 de marzo de 2016. El lenguaje de alto nivel utilizado para la mayor parte del programa del laboratorio de visión es el sistema LISP del PDP-6. Este sistema se basa principalmente en el lenguaje de programación LISP 1.5, pero ha sido ampliamente modificado de varias maneras. Estas incluyen muchas funciones y servicios nuevos, incluyendo facilidades para enlazar con programas escritos en otros lenguajes. 
  3. Luna 1974 , pág. 1 
  4. Luna 1974 , pág. 47 
  5. Lisp 1.5 pág. 13, la evaluación de un átomoeen el entornoase realiza con(cdr (assoc e a)). Esto implica una búsqueda lineal en la lista de asociacionesa. Una descripción más detallada con constantes globales y errores se da en la pág. 71; realiza una búsqueda lineal en la lista de propiedades antes de buscar en la lista de asociaciones.
  6. Maclisp usadefun; Lisp 1.5 usadefine.
  7. Moon 1974 , pág. 107 ; lapropiedad. autoload
  8. Pitman, Kent (16 de diciembre de 2007). "The Revised Maclisp Manual (The Pitmanual), Sunday Morning Edition" . maclisp.info . HyperMeta, Inc. Declaraciones y el compilador, concepto "Variables" . Recuperado el 20 de octubre de 2018. Si la variable que se va a enlazar se ha declarado como especial, el enlace se compila como código para imitar la forma en que el intérprete enlaza las variables.
  9. Pitman, Kent (16 de diciembre de 2007). "The Revised Maclisp Manual (The Pitmanual), Sunday Morning Edition" . maclisp.info . HyperMeta Inc. pág. 1 FAQ q1 . Consultado el 20 de octubre de 2018. El proyecto MAC no tenía nada que ver con el Apple "Mac". Y MACLISP tampoco.
  • En https://softwarepreservation.computerhistory.org/LISP/maclisp_family.html encontrará una bibliografía sobre Maclisp.
    • John L. White. Guía provisional del usuario de LISP. Memorando de Inteligencia Artificial n.º 190, Proyecto MAC, Instituto Tecnológico de Massachusetts, marzo de 1970, 87 páginas. ftp://publications.ai.mit.edu/ai-publications/pdf/AIM-190.pdf indica que «'MACLISP' se refiere a la implementación en PDP/6 del lenguaje de programación LISP que se utiliza en el Grupo de Inteligencia Artificial del Proyecto MAC».
    • En 1973 y 1974, David A. Moon lideró un proyecto para implementar MacLisp en la computadora Honeywell 6180 bajo el protocolo Multics. Como parte de este proyecto, escribió el primer manual de referencia verdaderamente completo para MacLisp, conocido popularmente como el "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 de LISP. Notas de la versión de MacLisp.
    • Jon L. White. LISP: El programa es datos: Una perspectiva histórica sobre 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 de LISP 1.5 (PDF) (2.ª  ed.). MIT Press . ISBN 0-262-13011-4.
  • Moon, David (1974). Manual de referencia de Maclisp (PDF) . Archivado (PDF) del original el 5 de octubre de 2011.
  • El manual revisado de Maclisp (1983) por Kent Pitman
  • El compilador Multics MACLISP (1977) de Bernard Greenberg