Máquina ceceo
máquinas Lisp son computadoras de propósito general diseñadas para ejecutar eficientemente Lisp como su principal software y lenguaje de programación, generalmente a través de soporte de hardware. Son un ejemplo de una arquitectura informática de lenguaje de alto nivel y, en cierto sentido, fueron las primeras estaciones de trabajo comerciales para un solo usuario. A pesar de ser modesto en número (quizás 7,000 unidades en total a partir de 1988), las máquinas Lisp fueron pioneras comercialmente en muchas tecnologías ahora comunes, que incluyen recolección de basura efectiva, impresión láser, sistemas de ventanas, ratones de computadora, gráficos de trama de mapa de bits de alta resolución, renderizado de gráficos por computadora. e innovaciones de redes como Chaosnet. 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 más tarde en parte en Common Lisp.
Historia
Contexto histórico
Los programas informáticos de inteligencia artificial (IA) de las décadas de 1960 y 1970 requerían intrínsecamente lo que entonces se consideraba una gran cantidad de potencia informática, medida en tiempo de procesador y espacio de memoria. Los requisitos de energía de la investigación de IA se vieron exacerbados por el lenguaje de programación simbólico Lisp, cuando el hardware comercial se diseñó y optimizó para lenguajes de programación de tipo ensamblador y Fortran. Al principio, el costo de dicho hardware de computadora 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 costo de las computadoras en la década de 1960 y principios de la de 1970, y las necesidades de memoria de los programas de IA comenzaron a exceder el espacio de direcciones de la computadora de investigación más común, la Digital Equipment Corporation (DEC) PDP-10, los investigadores consideró 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.
Desarrollo inicial
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 Lisp Machine del MIT cuando comenzaron a construir una computadora cableada para ejecutar ciertos Operaciones Lisp, en lugar de ejecutarlas en software, en una arquitectura etiquetada de 24 bits. La máquina también realizó una recolección de elementos no utilizados incremental (o Arena). Más específicamente, dado que las variables 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 llevar cinco veces más tiempo en hardware convencional, debido a las instrucciones de prueba y bifurcación. Lisp Machines ejecutó las pruebas en paralelo con las adiciones de instrucciones individuales más convencionales. Si las pruebas simultáneas fallaban, el resultado se descartaba y se volvía a calcular; esto significó 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 hace referencia a ellas y otras necesidades de administración de memoria (no simplemente recolección de elementos no utilizados o matrices).
La verificación de tipos se mejoró y automatizó aún más cuando la palabra de bytes convencional de 32 bits se alargó a 36 bits para las máquinas Lisp del modelo Symbolics 3600 y, finalmente, a 40 bits o más (por lo general, el exceso de bits no se contabiliza en se usaron los siguientes para los códigos de corrección de errores). El primer grupo de bits adicionales se usó para contener 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 (donde los elementos de la lista enlazada habitual se comprimen para ocupar aproximadamente la mitad del espacio), lo que ayuda a la recolección de elementos no utilizados. según se informa, un orden de magnitud. Una mejora adicional fueron dos instrucciones de microcódigo que admitían específicamente las funciones de Lisp, lo que redujo 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 (llamada así por el operador de construcción de listas cons
en Lisp). A menudo se la denominaba cariñosamente como la máquina de Knight, quizás desde que Knight escribió su tesis de maestría sobre el tema; fue muy bien recibido. Posteriormente se mejoró a una versión llamada CADR (un juego de palabras; en Lisp, la función cadr
, que devuelve el segundo elemento de una lista, se pronuncia /ˈkeɪ.dəɹ/ o /ˈkɑ.dəɹ/, como algunos pronuncian la palabra "cuadro") que se basaba esencialmente en la misma arquitectura. Alrededor de 25 de lo que eran esencialmente CADR prototipos se vendieron dentro y fuera del MIT por ~ $ 50,000; rápidamente se convirtió en la máquina favorita para la piratería: muchas de las herramientas de software más favorecidas se transfirieron rápidamente a ella (por ejemplo, Emacs se transfirió desde ITS en 1975). 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.
Comercialización de la tecnología de máquinas MIT Lisp
En 1979, Russell Noftsker, convencido de que las máquinas Lisp tenían un brillante futuro comercial debido a la fuerza del lenguaje Lisp y el factor habilitador de la aceleración de hardware, le propuso a Greenblatt que comercializaran la tecnología. En un movimiento contrario a la intuición de un hacker de AI Lab, Greenblatt accedió, con la esperanza de poder recrear la atmósfera informal y productiva del laboratorio en un negocio real. Estas ideas y objetivos eran considerablemente diferentes de los de Noftsker. Los dos negociaron largo y tendido, pero ninguno se comprometió. Como la empresa propuesta solo podía tener éxito con la asistencia total e indivisa de los piratas informáticos 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 a los piratas informáticos.
Las discusiones subsiguientes sobre la elección dividieron el laboratorio en dos facciones. En febrero de 1979, las cosas llegaron a un punto crítico. Los piratas informáticos 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 puesta en marcha autosuficiente propuesta por Greenblatt. Greenblatt perdió la batalla.
Fue en esta coyuntura que Symbolics, la empresa de Noftsker, se unió lentamente. Si bien Noftsker pagaba un salario a su personal, no tenía edificio ni equipo para que trabajaran los piratas informáticos. Negoció con Patrick Winston que, a cambio de permitir que Symbolics & # 39; personal siguiera trabajando fuera del MIT, Symbolics dejaría que el MIT usara interna 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 para que trabajara su grupo, 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 empujaba y ayudaba a Greenblatt a lanzar la empresa. Jacobson reunió planes de negocios, una junta, un socio para Greenblatt (un tal F. Stephen Wyle). La empresa recién descubierta se llamó LISP Machine, Inc. (LMI) y fue financiada por órdenes de los CDC, a través de Jacobson.
Alrededor de esta época, Symbolics (la firma de Noftsker) comenzó a operar. Se había visto obstaculizado por la promesa de Noftsker de dar a Greenblatt un año de ventaja y por los graves retrasos en la adquisición de capital de riesgo. Symbolics todavía tenía la gran ventaja de que mientras 3 o 4 de los piratas informáticos de AI Lab se habían ido a trabajar para Greenblatt, otros 14 piratas informáticos se habían registrado en Symbolics. Tampoco contrataron a dos personas de AI Lab: Richard Stallman y Marvin Minsky. Stallman, sin embargo, culpó a Symbolics por el declive de la comunidad de hackers que se había centrado en el laboratorio de IA. Durante dos años, desde 1982 hasta finales de 1983, Stallman trabajó solo para clonar la salida de los programadores de Symbolics, con el objetivo de evitar que obtuvieran el monopolio de las computadoras del laboratorio.
Independientemente, 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 la 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 firmas desarrollaron productos de segunda generación basados en el CADR: el Symbolics 3600 y el LMI-LAMBDA (de los cuales LMI logró vender ~200). El 3600, que se envió con un año de retraso, amplió el CADR ampliando la palabra de la máquina a 36 bits, expandiendo el espacio de direcciones a 28 bits y agregando 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 el microcódigo CADR), pero existían diferencias de hardware. Texas Instruments (TI) se unió a la refriega cuando obtuvo la licencia del diseño LMI-LAMBDA y produjo su propia variante, el TI Explorer. Algunos de los LMI-LAMBDA y TI Explorer eran sistemas duales con un procesador Lisp y Unix. TI también desarrolló una versión de microprocesador de 32 bits de su CPU Lisp para TI Explorer. Este chip Lisp también se usó para MicroExplorer, una placa NuBus para Apple Macintosh II (NuBus se desarrolló inicialmente en el MIT para usar en máquinas Lisp).
Symbolics continuó desarrollando la familia 3600 y su sistema operativo, Genera, y produjo Ivory, una implementación VLSI de la arquitectura de 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 integrados (I-Machine Custom LSI, dirección 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 MicroExplorer, que se ofrecía como tarjeta para el Apple Mac II. LMI abandonó la arquitectura CADR y desarrolló su propia K-Machine, pero LMI quebró antes de que la máquina pudiera comercializarse. Antes de su desaparición, LMI estaba trabajando en un sistema distribuido para LAMBDA utilizando el espacio Moby.
Estas máquinas tenían soporte de hardware para varias operaciones Lisp primitivas (pruebas de tipo de datos, codificación CDR) y también soporte de hardware para la recolección incremental de basura. Ejecutaron grandes programas Lisp de manera muy eficiente. La máquina de Symbolics competía con muchas súper minicomputadoras comerciales, pero nunca se adaptó para propósitos convencionales. Las máquinas Symbolics Lisp también se vendieron a algunos mercados que no son de 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 Flavours, New Flavours y Common Lisp Object System (CLOS)).
Interlisp, BBN y Xerox
Bolt, Beranek and Newman (BBN) desarrollaron su propia máquina Lisp, llamada Jericho, que ejecutaba una versión de Interlisp. Nunca se comercializó. Frustrado, todo el grupo de AI renunció y fue contratado principalmente por Xerox. Entonces, el Centro de Investigación de Xerox Palo Alto, simultáneamente con el propio desarrollo de Greenblatt en el MIT, desarrolló sus propias máquinas Lisp que fueron diseñadas para ejecutar InterLisp (y más tarde Common Lisp). El mismo hardware se usó con software diferente también como máquinas Smalltalk y como el sistema de oficina Xerox Star. Estos incluyeron la Xerox 1100, Dolphin (1979); la Xerox 1132, Dorado; la Xerox 1108, Diente de león (1981); la Xerox 1109, Dandetiger; y la Xerox 1186/6085, Daybreak. 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 denominado Medley. La máquina Xerox era bien conocida por su entorno de desarrollo avanzado (InterLisp-D), el administrador de ventanas ROOMS, por su primera 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 cómputo de conjunto de instrucciones reducido (RISC), utilizando el 'Xerox Common Lisp Processor' y planeó llevarlo al mercado en 1987, lo que no ocurrió.
Máquinas de inferencia integradas
A mediados de la década de 1980, Integrated Inference Machines (IIM) construyó prototipos de máquinas Lisp llamadas Inferstar.
Desarrollos de máquinas Lisp fuera de los Estados Unidos
En 1984-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 el software CADR: Knowledge Processing Sistema (KPS).
Hubo varios intentos de los fabricantes japoneses de ingresar al mercado de máquinas Lisp: el coprocesador de mainframe Fujitsu Facom-alpha, NTT's Elis, Toshiba's AI Processor (AIP) y NEC's LIMA. Varios esfuerzos de investigación universitarios produjeron prototipos de trabajo, entre ellos se encuentran el TAKITAC-7 de la Universidad de Kobe, los FLATS de RIKEN y el EVLIS de la Universidad de Osaka.
En Francia, surgieron dos proyectos Lisp Machine: M3L en la Universidad Toulouse Paul Sabatier y más tarde MAIA.
En Alemania, Siemens diseñó el coprocesador LISP basado en RISC COLIBRI.
Fin de las máquinas Lisp
Con el inicio del invierno de la IA y los primeros comienzos de la revolución de las microcomputadoras, que barrería con los fabricantes de minicomputadoras y estaciones de trabajo, las PC de escritorio más económicas pronto podrían ejecutar programas Lisp incluso más rápido que las máquinas Lisp. sin el uso de hardware de propósito especial. Eliminado su negocio de hardware de alto margen de ganancias, la mayoría de los fabricantes de máquinas Lisp habían quebrado a principios de los 90, dejando solo empresas basadas en software como Lucid Inc. o fabricantes de hardware que habían cambiado a software y servicios para evitar el colapso. A partir de enero de 2015, además de Xerox y TI, Symbolics es la única empresa de máquinas Lisp que sigue en funcionamiento y vende el entorno de software de máquina Open Genera Lisp y el sistema de álgebra informática Macsyma.
Legado
Se han realizado varios intentos de escribir emuladores de código abierto para varias máquinas Lisp: Emulación CADR, Emulación de máquina Symbolics L Lisp, Proyecto E3 (Emulación TI Explorer II), Meroko (TI Explorer I) y Nevermore (TI Explorer YO). El 3 de octubre de 2005, el MIT lanzó el código fuente de CADR Lisp Machine como fuente abierta.
En septiembre de 2014, Alexander Burger, desarrollador de PicoLisp, anunció PilMCU, una implementación de PicoLisp en hardware.
Los Bitsavers' PDF Document Archive tiene versiones en PDF de la extensa documentación para las máquinas Symbolics Lisp, las máquinas TI Explorer y MicroExplorer Lisp y las máquinas Xerox Interlisp-D Lisp.
Aplicaciones
Los dominios que usaban las máquinas Lisp se encontraban principalmente en el amplio campo de las aplicaciones de inteligencia artificial, pero también en gráficos por computadora, procesamiento de imágenes médicas y muchos otros.
Estaban disponibles los principales sistemas expertos comerciales de los años 80: Knowledge Engineering Environment (KEE) de Intellicorp, Knowledge Craft, de The Carnegie Group Inc., y ART (Automated Reasoning Tool) de Inference Corporation.
Resumen técnico
Inicialmente, las máquinas Lisp se diseñaron como estaciones de trabajo personales para el desarrollo de software en Lisp. Fueron utilizados por una sola persona y no ofrecían modo multiusuario. Las máquinas proporcionaron una gran pantalla de mapa de bits en blanco y negro, teclado y mouse, 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 a 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 verificación de tipos y el envío se realizaron en hardware en tiempo de ejecución. Por ejemplo, solo se puede usar una operación de suma con varios tipos numéricos (números enteros, flotantes, racionales y complejos). El resultado fue una representación compilada muy compacta del código Lisp.
El siguiente ejemplo usa una función que cuenta el número de elementos de una lista para los cuales un predicado devuelve true
.
()defun ejemplo-cuenta ()predicar lista) ()Deja ()Cuenta 0) ()lista ()i lista Cuenta) ()cuando ()funcall predicar i) ()incf Cuenta))))
El código de máquina desensamblado para la función anterior (para el microprocesador Ivory de Symbolics):
Comando: ()desmontaje ()compilación #'example-count) 0 ENTRY: 2 NECESITA, 0 OPTIONAL ; Creación de PREDICATE y LISTA 2 PUSH 0 ; Creación de equipo 3 PUSH FPSilencio3 ;LIST 4 PUSH NIL ;Crear I 5 BRANCH 15 6 SET-TO-CDR-PUSH-CAR FPSilencio5 7 SET-SP-TO-ADDRESS-SAVE-TOS SPSilencio.1 10 START-CALL FPSilencio2 ;PREDICATE 11 PUSH FPSilencio6 I 12 FINES-CALL-1-VALOR 13 BRANCH-FALSE 15 14 INCREMENT FPSilencio4 ;COUNT 15 ENDP FPSilencio5 16 BRANCH-FALSE 6 17 SET-SP-TO-ADDRESS SPSilencio.2 20 RETURN-SINGLE-STACK
El sistema operativo usaba memoria virtual para proporcionar un gran espacio de direcciones. La gestión de la memoria se realizó con recolección de basura. Todo el código compartía un único espacio de direcciones. Todos los objetos de datos se almacenaron con una etiqueta en la memoria, de modo que el tipo pudiera determinarse en tiempo de ejecución. Se admitieron varios subprocesos de ejecución y se denominaron procesos. Todos los procesos se ejecutaron en un espacio de direcciones.
Todo el software del sistema operativo se escribió en Lisp. Xerox usó Interlisp. Symbolics, LMI y TI utilizaron Lisp Machine Lisp (descendiente de MacLisp). Con la aparición de Common Lisp, Common Lisp fue compatible con Lisp Machines y parte del software del sistema se transfirió a Common Lisp o se escribió más tarde en Common Lisp.
Algunas máquinas Lisp posteriores (como TI MicroExplorer, Symbolics MacIvory o Symbolics UX400/1200) ya no eran estaciones de trabajo completas, sino placas diseñadas para integrarse en computadoras anfitrionas: Apple Macintosh II y Sun-3 o Sun-4.
Algunas máquinas Lisp, como la Symbolics XL1200, tenían amplias capacidades gráficas utilizando tarjetas gráficas especiales. Estas máquinas se utilizaron en dominios como el procesamiento de imágenes médicas, la animación 3D y CAD.
Contenido relacionado
Transclusión
Befunge
Wiki