Las máquinas Lisp son computadoras de propósito general diseñadas para ejecutar Lisp de manera eficiente como su software y lenguaje de programación principal , generalmente a través de soporte de hardware. Son un ejemplo de una arquitectura de computadora de lenguaje de alto nivel . En cierto sentido, fueron las primeras estaciones de trabajo comerciales de un solo usuario . A pesar de ser modestas en número (quizás 7000 unidades en total en 1988 [1] ), las máquinas Lisp fueron pioneras comercialmente en muchas tecnologías ahora comunes, incluida la recolección de basura efectiva , la impresión láser , los sistemas de ventanas , los ratones de computadora , los gráficos rasterizados de mapa de bits de alta resolución , la representación de gráficos de computadora e innovaciones en redes como Chaosnet . [2] Varias empresas construyeron y vendieron máquinas Lisp en la década de 1980: Symbolics (3600, 3640, XL1200, MacIvory y otros modelos), Lisp Machines Incorporated (LMI Lambda), Texas Instruments ( Explorer, MicroExplorer ) y Xerox ( estaciones de trabajo Interlisp -D). Los sistemas operativos fueron escritos en Lisp Machine Lisp , Interlisp (Xerox) y posteriormente parcialmente en Common Lisp .
Los programas informáticos de inteligencia artificial (IA) de los años 1960 y 1970 requerían intrínsecamente lo que entonces se consideraba una enorme cantidad de potencia informática, medida en tiempo de procesador y espacio de memoria. Los requisitos de potencia de la investigación en IA se vieron exacerbados por el lenguaje de programación simbólica Lisp, cuando se diseñó y optimizó hardware comercial para lenguajes de programación tipo ensamblador y Fortran . Al principio, el coste de dicho hardware informático significaba que tenía que ser compartido entre muchos usuarios. A medida que la tecnología de circuitos integrados redujo el tamaño y el coste de las computadoras en los años 1960 y principios de los años 1970, y las necesidades de memoria de los programas de IA comenzaron a superar el espacio de direcciones de la computadora de investigación más común, la Digital Equipment Corporation (DEC) PDP-10 , los investigadores consideraron un nuevo enfoque: una computadora diseñada específicamente para desarrollar y ejecutar grandes programas de inteligencia artificial, y adaptada a la semántica del lenguaje Lisp . Para mantener el sistema operativo (relativamente) simple, estas máquinas no se compartirían, sino que estarían dedicadas a usuarios individuales. [ cita requerida ]
En 1973, Richard Greenblatt y Thomas Knight , programadores del Laboratorio de Inteligencia Artificial (AI Lab) del Instituto Tecnológico de Massachusetts (MIT) , comenzaron lo que se convertiría en el Proyecto de la Máquina Lisp del MIT cuando comenzaron a construir una computadora cableada para ejecutar ciertas operaciones básicas de Lisp, en lugar de ejecutarlas en software, en una arquitectura etiquetada de 24 bits. La máquina también realizó recolección de basura incremental (o Arena ) . [ cita requerida ] Más específicamente, dado que las variables de Lisp se escriben en tiempo de ejecución en lugar de en tiempo de compilación, una simple adición de dos variables podría tomar cinco veces más tiempo en hardware convencional, debido a las instrucciones de prueba y bifurcación. Las máquinas Lisp ejecutaban las pruebas en paralelo con las adiciones de una sola instrucción más convencionales. Si las pruebas simultáneas fallaban, entonces el resultado se descartaba y se volvía a calcular; esto significaba en muchos casos un aumento de velocidad por varios factores. Este enfoque de verificación simultánea también se usó para probar los límites de las matrices cuando se hacía referencia a ellas y otras necesidades de administración de memoria (no simplemente la recolección de basura o las matrices).
La comprobación de tipos se mejoró y automatizó aún más cuando la palabra de byte convencional de 32 bits se alargó a 36 bits para las máquinas Lisp modelo 3600 de Symbolics [3] y eventualmente a 40 bits o más (generalmente, los bits sobrantes no contabilizados por lo siguiente se usaban para códigos de corrección de errores ). El primer grupo de bits adicionales se usó para almacenar datos de tipo, lo que convirtió a la máquina en una arquitectura etiquetada , y los bits restantes se usaron para implementar la codificación CDR (en la que los elementos habituales de la lista enlazada se comprimen para ocupar aproximadamente la mitad del espacio), lo que ayuda a la recolección de basura en un orden de magnitud, según se informa. Una mejora adicional fueron dos instrucciones de microcódigo que admitían específicamente funciones Lisp , lo que reducía el costo de llamar a una función a tan solo 20 ciclos de reloj, en algunas implementaciones de Symbolics.
La primera máquina se llamó máquina CONS (nombrada así por el operador de construcción de listas cons
en Lisp). A menudo se la conocía cariñosamente como la máquina Knight , tal vez porque Knight escribió su tesis de maestría sobre el tema; fue extremadamente bien recibida. [ cita requerida ] Posteriormente se mejoró en una versión llamada CADR (un juego de palabras; en Lisp, la cadr
función, que devuelve el segundo elemento de una lista, se pronuncia /ˈkeɪ.dəɹ/ o /ˈkɑ.dəɹ/ , como algunos pronuncian la palabra "cadre") que se basaba esencialmente en la misma arquitectura. Alrededor de 25 de lo que eran esencialmente prototipos de CADR se vendieron dentro y fuera del MIT por ~$50,000; rápidamente se convirtió en la máquina favorita para hackear: muchas de las herramientas de software más favorecidas se portaron rápidamente a ella (por ejemplo, Emacs fue portado desde ITS en 1975 [ disputado - discutir ] ). Fue tan bien recibido en una conferencia de IA celebrada en el MIT en 1978 que la Agencia de Proyectos de Investigación Avanzada de Defensa (DARPA) comenzó a financiar su desarrollo.
En 1979, Russell Noftsker , convencido de que las máquinas Lisp tenían un futuro comercial brillante debido a la fuerza del lenguaje Lisp y al factor habilitador de la aceleración de hardware, propuso a Greenblatt que comercializaran la tecnología. [ cita requerida ] En un movimiento contra-intuitivo para un hacker de AI Lab, Greenblatt accedió, esperando quizás poder recrear la atmósfera informal y productiva del Laboratorio en una empresa real. Estas ideas y objetivos eran considerablemente diferentes a los de Noftsker. Los dos negociaron largamente, pero ninguno se comprometió. Como la empresa propuesta podría tener éxito solo con la ayuda total e indivisa de los hackers de AI Lab como grupo, Noftsker y Greenblatt decidieron que el destino de la empresa dependía de ellos, por lo que la elección debía dejarse en manos de los hackers.
Las discusiones posteriores sobre la elección dividieron al laboratorio en dos facciones. En febrero de 1979, la situación llegó a un punto crítico. Los hackers se pusieron del lado de Noftsker, creyendo que una empresa respaldada por un fondo de riesgo comercial tenía más posibilidades de sobrevivir y comercializar máquinas Lisp que la empresa autosostenible propuesta por Greenblatt. Greenblatt perdió la batalla.
Fue en ese momento cuando Symbolics , la empresa de Noftsker, fue tomando forma poco a poco. Aunque Noftsker pagaba un salario a su personal, no tenía ningún edificio ni equipo en el que los hackers pudieran trabajar. Negoció con Patrick Winston que, a cambio de permitir que el personal de Symbolics siguiera trabajando fuera del MIT, Symbolics dejaría que el MIT utilizara internamente y libremente todo el software desarrollado por Symbolics. Un consultor de CDC , que estaba tratando de armar una aplicación informática de lenguaje natural con un grupo de programadores de la costa oeste, llegó a Greenblatt en busca de una máquina Lisp con la que su grupo pudiera trabajar, unos ocho meses después de la desastrosa conferencia con Noftsker. Greenblatt había decidido iniciar su propia empresa rival de máquinas Lisp, pero no había hecho nada. El consultor, Alexander Jacobson, decidió que la única forma en que Greenblatt iba a iniciar la empresa y construir las máquinas Lisp que Jacobson necesitaba desesperadamente era si Jacobson presionaba y ayudaba de alguna otra manera a Greenblatt a lanzar la empresa. Jacobson reunió los planes de negocios, una junta directiva y un socio para Greenblatt (un tal F. Stephen Wyle). La nueva empresa se llamó LISP Machine, Inc. (LMI) y fue financiada por órdenes del CDC, a través de Jacobson.
En esa época, Symbolics (la empresa de Noftsker) empezó a operar. Se había visto obstaculizada por la promesa de Noftsker de darle a Greenblatt un año de ventaja y por graves retrasos en la obtención de capital de riesgo. Symbolics todavía tenía la gran ventaja de que, mientras 3 o 4 de los hackers del laboratorio de inteligencia artificial se habían ido a trabajar para Greenblatt, otros 14 hackers se habían unido a Symbolics. Dos personas del laboratorio de inteligencia artificial no fueron contratadas por ninguno de los dos: Richard Stallman y Marvin Minsky . Sin embargo, Stallman culpó a Symbolics por el declive de la comunidad de hackers que se había centrado en el laboratorio de inteligencia artificial. Durante dos años, desde 1982 hasta finales de 1983, Stallman trabajó solo para clonar el trabajo de los programadores de Symbolics, con el objetivo de evitar que obtuvieran un monopolio sobre las computadoras del laboratorio. [4]
De todas formas, después de una serie de batallas internas, Symbolics despegó en 1980/1981, vendiendo el CADR como LM-2, mientras que Lisp Machines , Inc. lo vendió como LMI-CADR. Symbolics no tenía intención de producir muchos LM-2, ya que se suponía que la familia 3600 de máquinas Lisp se enviaría rápidamente, pero los 3600 se retrasaron repetidamente y Symbolics terminó produciendo ~100 LM-2, cada uno de los cuales se vendió por $70,000. Ambas empresas desarrollaron productos de segunda generación basados en el CADR: el Symbolics 3600 y el LMI-LAMBDA (del cual LMI logró vender ~200). El 3600, que se comercializó un año más tarde, amplió el CADR ampliando la palabra de máquina a 36 bits, expandiendo el espacio de direcciones a 28 bits [5] y añadiendo hardware para acelerar ciertas funciones comunes que se implementaron en microcódigo en el CADR. El LMI-LAMBDA, que salió un año después del 3600, en 1983, era compatible con el CADR (podía ejecutar microcódigo CADR), pero existían diferencias de hardware. Texas Instruments (TI) se unió a la contienda cuando licenció el diseño LMI-LAMBDA y produjo su propia variante, el TI Explorer . Algunos de los LMI-LAMBDA y el TI Explorer eran sistemas duales con un procesador Lisp y un procesador Unix . TI también desarrolló una versión de microprocesador de 32 bits de su CPU Lisp para el TI Explorer. Este chip Lisp también se utilizó para el MicroExplorer, una placa NuBus para Apple Macintosh II (NuBus se desarrolló inicialmente en el MIT para su uso en máquinas Lisp).
Symbolics continuó desarrollando la familia 3600 y su sistema operativo, Genera , y produjo el Ivory, una implementación VLSI de la arquitectura Symbolics. A partir de 1987, se desarrollaron varias máquinas basadas en el procesador Ivory: placas para Suns y Macs, estaciones de trabajo independientes e incluso sistemas embebidos (I-Machine Custom LSI, direccionamiento de 32 bits, Symbolics XL-400, UX-400, MacIvory II; en 1989 las plataformas disponibles eran Symbolics XL-1200, MacIvory III, UX-1200, Zora, NXP1000 "pizza box"). Texas Instruments redujo el Explorer a silicio como el MicroExplorer que se ofreció como una tarjeta para el Apple Mac II . LMI abandonó la arquitectura CADR y desarrolló su propia K-Machine, [6] pero LMI se declaró en quiebra antes de que la máquina pudiera ser lanzada al mercado. Antes de su desaparición, LMI estaba trabajando en un sistema distribuido para LAMBDA utilizando el espacio Moby. [7]
Estas máquinas tenían soporte de hardware para varias operaciones primitivas de Lisp (prueba de tipos de datos, codificación CDR ) y también soporte de hardware para recolección de basura incremental . Ejecutaban grandes programas Lisp de manera muy eficiente. La máquina Symbolics era competitiva contra muchas superminicomputadoras comerciales , pero nunca fue adaptada para propósitos convencionales. Las máquinas Symbolics Lisp también se vendieron a algunos mercados no relacionados con la IA, como gráficos por computadora , modelado y animación.
Las máquinas Lisp derivadas del MIT ejecutaban un dialecto Lisp llamado Lisp Machine Lisp , descendiente del Maclisp del MIT . Los sistemas operativos se escribieron desde cero en Lisp, a menudo utilizando extensiones orientadas a objetos. Más tarde, estas máquinas Lisp también admitieron varias versiones de Common Lisp (con Flavors , New Flavors y Common Lisp Object System (CLOS)).
Bolt, Beranek y Newman (BBN) desarrollaron su propia máquina Lisp, llamada Jericho, [8] que ejecutaba una versión de Interlisp . Nunca se comercializó. Frustrado, todo el grupo de IA renunció y fueron contratados principalmente por Xerox. Entonces, el Centro de Investigación de Xerox en Palo Alto había desarrollado, simultáneamente con el propio desarrollo de Greenblatt en el MIT, sus propias máquinas Lisp que fueron diseñadas para ejecutar InterLisp (y más tarde Common Lisp ). El mismo hardware se usó con diferente software también como máquinas Smalltalk y como el sistema de oficina Xerox Star . Estos incluyeron el Xerox 1100, Dolphin (1979); el Xerox 1132, Dorado ; el Xerox 1108, Dandelion (1981); el Xerox 1109, Dandetiger ; y el Xerox 1186/6085 , Daybreak . [9] El sistema operativo de las máquinas Xerox Lisp también ha sido portado a una máquina virtual y está disponible para varias plataformas como un producto llamado Medley . La máquina Xerox era bien conocida por su entorno de desarrollo avanzado (InterLisp-D), el administrador de ventanas ROOMS, por su temprana interfaz gráfica de usuario y por aplicaciones novedosas como NoteCards (una de las primeras aplicaciones de hipertexto ).
Xerox también trabajó en una máquina Lisp basada en computación de conjunto de instrucciones reducido (RISC), utilizando el 'Xerox Common Lisp Processor' y planeó sacarlo al mercado en 1987, [10] lo que no ocurrió.
A mediados de la década de 1980, Integrated Inference Machines (IIM) construyó prototipos de máquinas Lisp llamadas Inferstar. [11]
Entre 1984 y 1985, una empresa del Reino Unido, Racal-Norsk, una subsidiaria conjunta de Racal y Norsk Data , intentó reutilizar el supermini ND-500 de Norsk Data como una máquina Lisp microcodificada, ejecutando software CADR: el Sistema de procesamiento de conocimiento (KPS). [12]
Hubo varios intentos por parte de fabricantes japoneses de entrar en el mercado de las máquinas Lisp: el coprocesador de mainframe Fujitsu Facom-alpha [13] , el Elis de NTT [14] [15], el procesador AI (AIP) de Toshiba [16] y el LIME de NEC [17] . Varios esfuerzos de investigación universitaria produjeron prototipos funcionales, entre ellos el TAKITAC-7 de la Universidad de Kobe [18] , el FLATS de RIKEN [19] y el EVLIS de la Universidad de Osaka [20] .
En Francia surgieron dos proyectos Lisp Machine: M3L [21] en la Universidad Paul Sabatier de Toulouse y más tarde MAIA. [22]
En Alemania, Siemens diseñó el coprocesador Lisp basado en RISC COLIBRI. [23] [24] [25] [26]
Con el inicio del invierno de la IA y los inicios de la revolución de las microcomputadoras , que barrería a los fabricantes de minicomputadoras y estaciones de trabajo, las PC de escritorio más baratas pronto podrían ejecutar programas Lisp incluso más rápido que las máquinas Lisp, sin necesidad de utilizar hardware especial. Su negocio de hardware de alto margen de beneficio eliminado, la mayoría de los fabricantes de máquinas Lisp habían cerrado a principios de los 90, dejando solo empresas basadas en software como Lucid Inc. o fabricantes de hardware que habían cambiado al software y los servicios para evitar la crisis. A partir de enero de 2015 [update], además de Xerox y TI, Symbolics es la única empresa de máquinas Lisp que sigue en funcionamiento, vendiendo el entorno de software de máquina Lisp Open Genera y el sistema de álgebra computacional Macsyma . [27] [28]
Se han hecho varios intentos de escribir emuladores de código abierto para varias máquinas Lisp: CADR Emulation, [29] Symbolics L Lisp Machine Emulation, [30] el Proyecto E3 (TI Explorer II Emulation), [31] Meroko (TI Explorer I), [32] y Nevermore (TI Explorer I). [33] El 3 de octubre de 2005, el MIT publicó el código fuente de CADR Lisp Machine como código abierto. [34]
En septiembre de 2014, Alexander Burger, desarrollador de PicoLisp , anunció PilMCU, una implementación de PicoLisp en hardware. [35]
El archivo de documentos PDF de Bitsavers [36] contiene versiones PDF de la extensa documentación de las máquinas Lisp de Symbolics, [37] las máquinas Lisp de TI Explorer [38] y MicroExplorer [39] y las máquinas Lisp de Xerox Interlisp-D. [40]
Los dominios que utilizan las máquinas Lisp se encuentran principalmente en el amplio campo de aplicaciones de inteligencia artificial, pero también en gráficos de computadora, procesamiento de imágenes médicas y muchos otros.
Los principales sistemas expertos comerciales disponibles en los años 80 eran: Knowledge Engineering Environment (KEE) de Intellicorp, Knowledge Craft, de The Carnegie Group Inc., y ART (Automated Reasoning Tool) de Inference Corporation. [41]
Inicialmente, las máquinas Lisp se diseñaron como estaciones de trabajo personales para el desarrollo de software en Lisp. Las utilizaba una sola persona y no ofrecían modo multiusuario. Las máquinas disponían de una gran pantalla de mapa de bits en blanco y negro, teclado y ratón, adaptador de red, discos duros locales, más de 1 MB de RAM, interfaces seriales y un bus local para tarjetas de extensión. Las tarjetas gráficas en color, las unidades de cinta y las impresoras láser eran opcionales.
El procesador no ejecutaba Lisp directamente, sino que era una máquina de pila con instrucciones optimizadas para Lisp compilado. Las primeras máquinas Lisp usaban microcódigo para proporcionar el conjunto de instrucciones. Para varias operaciones, la comprobación y el envío de tipos se realizaban en hardware en tiempo de ejecución. Por ejemplo, solo se podía utilizar una operación de suma con varios tipos numéricos (números enteros, de punto flotante, racionales y complejos). El resultado era una representación compilada muy compacta del código Lisp.
El siguiente ejemplo utiliza una función que cuenta la cantidad de elementos de una lista para la que un predicado devuelve true
.
( defun ejemplo-conteo ( predicado lista ) ( let (( conteo 0 )) ( dolist ( i lista conteo ) ( when ( funcall predicado i ) ( incf conteo )))))
El código de máquina desensamblado para la función anterior (para el microprocesador Ivory de Symbolics):
Comando: ( desensamblar ( compilar #'example-count)) 0 ENTRADA: 2 REQUERIDO , 0 OPCIONAL ; Creando PREDICADO y LISTA 2 PUSH 0 ; Creando CONTEO 3 PUSH FP | 3 ; LISTA 4 PUSH NIL ; Creando I 5 RAMA 15 6 ESTABLECER - A - CDR - PUSH - CAR FP | 5 7 ESTABLECER - SP - A - DIRECCIÓN - GUARDAR - TOS SP |- 1 10 INICIO - LLAMAR FP | 2 ; PREDICADO 11 PUSH FP | 6 ; I 12 FINALIZAR - LLAMAR - 1 - VALOR 13 RAMA - FALSO 15 14 INCREMENTAR FP | 4 ; CONTEO 15 FINALIZAR FP | 5 16 RAMA - FALSO 6 17 ESTABLECER - SP - A - DIRECCIÓN SP |- 2 20 RETORNO - SIMPLE - PILA
El sistema operativo utilizaba memoria virtual para proporcionar un gran espacio de direcciones. La gestión de la memoria se realizaba mediante recolección de elementos no utilizados. Todo el código compartía un único espacio de direcciones . Todos los objetos de datos se almacenaban con una etiqueta en la memoria, de modo que se pudiera determinar el tipo en tiempo de ejecución. Se admitían varios subprocesos de ejecución y se los denominaba procesos . Todos los procesos se ejecutaban en un único espacio de direcciones.
Todo el software del sistema operativo se escribió en Lisp. Xerox utilizó Interlisp. Symbolics, LMI y TI utilizaron Lisp Machine Lisp (descendiente de MacLisp). Con la aparición de Common Lisp, Common Lisp pasó a ser compatible con Lisp Machines y parte del software del sistema se adaptó a Common Lisp o se escribió posteriormente en Common Lisp.
Algunas máquinas Lisp posteriores (como la TI MicroExplorer, la Symbolics MacIvory o la Symbolics UX400/1200) ya no eran estaciones de trabajo completas, sino placas diseñadas para ser integradas en ordenadores host: Apple Macintosh II y Sun-3 o Sun-4 .
Algunas máquinas Lisp, como la Symbolics XL1200, tenían amplias capacidades gráficas mediante el uso de tarjetas gráficas especiales. Estas máquinas se utilizaban en ámbitos como el procesamiento de imágenes médicas, la animación 3D y el CAD.
La Xerox 1186, apodada Daybreak, ofrece varias funciones únicas y potentes a un costo relativamente bajo. [...] La 1186 se parece mucho a una máquina anterior de Xerox: la 1108 o Dandelion.
{{cite journal}}
: Requiere citar revista |journal=
( ayuda )