Genera es un sistema operativo comercial y un entorno de desarrollo integrado para máquinas Lisp creado por Symbolics . Es esencialmente una bifurcación de un sistema operativo anterior originado en las máquinas Lisp del Laboratorio de IA del Instituto Tecnológico de Massachusetts (MIT), que Symbolics había utilizado en común con Lisp Machines , Inc. (LMI) y Texas Instruments (TI). Symbolics también vendió Genera como Open Genera , que se ejecuta en computadoras basadas en un procesador Alpha de Digital Equipment Corporation (DEC) que utiliza Tru64 UNIX . En 2021 se lanzó una nueva versión llamada Portable Genera , que se ejecuta en Tru64 UNIX en Alpha, Linux en x86-64 y Arm64 Linux , y macOS en x86-64 y Arm64 ( Apple Silicon Serie M ). Se distribuye y licencia como software propietario .
Genera es un ejemplo de un sistema operativo orientado a objetos basado en el lenguaje de programación Lisp .
Genera admite el desarrollo incremental e interactivo de software complejo utilizando una combinación de estilos de programación con un amplio soporte para la programación orientada a objetos .
Sistema operativo de máquina Lisp del MIT
El sistema operativo Lisp Machine fue escrito en Lisp Machine Lisp . Era una estación de trabajo monousuario inicialmente dirigida a desarrolladores de software para proyectos de inteligencia artificial (IA). [ 1 ] El sistema tenía una gran pantalla de mapa de bits , un ratón, un teclado, una interfaz de red , una unidad de disco y ranuras para expansión. El sistema operativo era compatible con este hardware y proporcionaba (entre otras cosas):
- código para un procesador de interfaz
- significa arrancar el sistema operativo
- gestión de memoria virtual
- recolección de basura
- Interfaz para diversos dispositivos: ratón, teclado, búfer de trama de mapa de bits, disco, impresora, interfaz de red.
- un intérprete y un compilador de código nativo para Lisp Machine Lisp
- un sistema de objetos: Sabores
- un sistema de ventanas con interfaz gráfica de usuario (GUI) y un gestor de ventanas
- un sistema de archivos local
- Soporte para la red Chaosnet (CHAOS).
- un editor similar a Emacs llamado Zmacs
- un programa de correo llamado Zmail
- un oyente de Lisp
- un depurador
Ya se trataba de un sistema operativo y un entorno de desarrollo completos, basados en Lisp y para un solo usuario.
El sistema operativo Lisp del MIT se desarrolló desde mediados de la década de 1970 hasta principios de la década de 1980.
En 2006, el código fuente de este sistema operativo de máquina Lisp del MIT fue publicado como software libre y de código abierto . [ 2 ]
Sistema operativo Genera
Symbolics desarrolló nuevas máquinas Lisp y publicó el sistema operativo bajo el nombre de Genera . La última versión es la 8.5. Symbolics Genera se desarrolló a principios de los años 80 y principios de los 90. En sus últimos años, el desarrollo consistió principalmente en parches, con muy pocas funciones nuevas.
Symbolics desarrolló Genera basándose en el sistema operativo de la máquina MIT Lisp. Comercializa el sistema operativo y el software complementario . Parte de este software complementario se integró en Genera en versiones posteriores. Symbolics mejoró y amplió el software del sistema operativo original de la máquina MIT Lisp. El sistema operativo Genera solo estaba disponible para las máquinas Symbolics Lisp y la máquina virtual Open Genera .
Symbolics Genera cuenta con numerosas funciones y es compatible con todas las versiones de hardware que Symbolics ha desarrollado a lo largo de su historia. Su código fuente supera el millón de líneas; la cantidad depende de la versión y del software instalado. Symbolics Genera se publicó en cinta magnética y CD-ROM . La distribución del sistema operativo también incluía la mayor parte de su código fuente y el de sus aplicaciones. El usuario tiene acceso libre a todas las partes del sistema operativo en ejecución y puede realizar cambios y extensiones. El código fuente del sistema operativo se divide en subsistemas . Estos subsistemas agrupan fuentes, binarios y otros archivos. El kit de herramientas de construcción de sistemas (SCT) gestiona las dependencias, los componentes y las versiones de todos los subsistemas. Un subsistema tiene dos números: un número de versión principal y uno secundario. El número de versión principal indica el número de construcciones completas de un subsistema. El número de versión secundaria indica el número de parches para dicho subsistema. Un parche es un archivo que se puede cargar para corregir problemas o proporcionar extensiones a una versión específica del sistema.
Symbolics desarrolló una versión llamada Open Genera , que incluía una máquina virtual que permitía ejecutar Genera en estaciones de trabajo basadas en DEC Alpha, además de varias extensiones y aplicaciones de Genera que se vendían por separado (como la suite Symbolics S-Graphics ). También crearon un nuevo sistema operativo llamado Minima para usos embebidos, escrito en Common Lisp . La versión más reciente es Portable Genera , que tiene la máquina virtual adaptada a los procesadores x86-64 , Arm64 y Apple M1 , además del procesador DEC Alpha . La máquina virtual se ejecuta entonces bajo Linux y macOS , además de Tru64 UNIX .
El sistema operativo original de Lisp se desarrolló en Lisp Machine Lisp , utilizando la extensión orientada a objetos Flavors . Symbolics proporcionó un sucesor de Flavors llamado New Flavors . Posteriormente, Symbolics también fue compatible con Common Lisp y el Common Lisp Object System (CLOS). Luego, Symbolics Common Lisp se convirtió en el dialecto Lisp predeterminado para escribir software con Genera. El software del sistema operativo se escribió principalmente en Lisp Machine Lisp (llamado ZetaLisp ) y Symbolics Common Lisp. Ambos dialectos Lisp son proporcionados por Genera. Además, algunas partes del software utilizaban Flavors, New Flavors y Common Lisp Object System. Algunas de las partes más antiguas del sistema operativo Genera se reescribieron en Symbolics Common Lisp y el Common Lisp Object System. Muchas partes del sistema operativo permanecieron escritas en ZetaLisp y Flavors (o New Flavors).
Interfaz de usuario
Las primeras versiones de Symbolics Genera se construyeron con el sistema de ventanas de interfaz gráfica de usuario (GUI) original del sistema operativo de la máquina Lisp. Symbolics luego desarrolló un sistema de ventanas radicalmente nuevo llamado Dynamic Windows con una interfaz de usuario basada en presentación . [ 3 ] Este sistema de ventanas se introdujo con Genera 7 en 1986. [ 4 ] Muchas de las aplicaciones de Genera han estado usando Dynamic Windows para su interfaz de usuario . Finalmente hubo un movimiento para portar partes del sistema de ventanas para ejecutarse en otras implementaciones de Common Lisp de otros proveedores como Common Lisp Interface Manager (CLIM). Han estado disponibles versiones de CLIM (entre otras) para Allegro Common Lisp , LispWorks y Macintosh Common Lisp . Hay una versión de código abierto disponible ( McCLIM ).
Dynamic Windows utiliza objetos tipados para toda la salida a pantalla. Toda la información mostrada mantiene su conexión con los objetos mostrados ( registro de salida ). Esto funciona tanto para la salida textual como gráfica. En tiempo de ejecución, las operaciones aplicables a estos objetos se calculan en función de la jerarquía de clases y las operaciones disponibles ( comandos ). Los comandos se organizan en tablas de comandos jerárquicas con parámetros tipados. Los comandos se pueden introducir con el ratón (con un uso extensivo de combinaciones de teclas ), pulsaciones de teclas y mediante una interfaz de línea de comandos. Todas las aplicaciones comparten una única implementación del intérprete de línea de comandos, que se adapta a diversos tipos de uso. Las capacidades gráficas del sistema de ventanas se basan en el modelo gráfico PostScript .
La interfaz de usuario es principalmente monocromática ( blanco y negro ), ya que era la que ofrecía la consola de hardware. Sin embargo, cuenta con un amplio soporte para color, mediante búferes de fotogramas de color o servidores del Sistema X Window (X11) con soporte para color. Las actividades (aplicaciones) utilizan toda la pantalla con varios paneles, aunque también pueden ser más pequeñas. La disposición de estas ventanas de actividad se adapta a diferentes tamaños de pantalla. Las actividades también pueden alternar entre diferentes diseños de paneles.
Genera proporciona un menú del sistema para controlar las ventanas, cambiar de aplicación y gestionar el sistema de ventanas. Muchas funciones de la interfaz de usuario (cambiar entre actividades, crear actividades, detener e iniciar procesos, y mucho más) también se pueden controlar mediante comandos de teclado.
El Dynamic Lisp Listener es un ejemplo de interfaz de línea de comandos con capacidades gráficas completas y compatibilidad con el ratón. Acepta expresiones y comandos Lisp como entrada. La salida es sensible al movimiento del ratón. El Lisp Listener puede mostrar formularios para introducir datos para los distintos comandos integrados.
La interfaz de usuario proporciona una amplia ayuda en línea y ayuda contextual , así como la posibilidad de completar opciones en diversos contextos.
Documentación
Genera admite documentación en línea con hipervínculos completos. La documentación se lee con el Examinador de Documentos , un antiguo navegador de hipertexto . Se basa en pequeños registros reutilizables que también se pueden visualizar en diversos contextos con el Editor y el Lector de Lisp. La documentación está organizada en libros y secciones. Los libros también se proporcionaron en versiones impresas con el mismo contenido que la documentación en línea. La información de la base de datos de la documentación se entrega con Genera y se puede modificar mediante parches incrementales.
La documentación se creó con una aplicación independiente que no venía incluida con Genera: Symbolics Concordia . Concordia proporciona una extensión para el editor Zmacs que permite editar registros de documentación, un editor gráfico y un visor de páginas.
La documentación proporciona guías de usuario, instrucciones de instalación y referencias de las diversas construcciones y bibliotecas de Lisp.
El lenguaje de marcado se basa en el lenguaje de marcado Scribe y también puede ser utilizado por el desarrollador.
Genera admite la impresión en impresoras PostScript, proporciona una cola de impresión y también un intérprete de PostScript (escrito en Lisp).
Características
Genera también ofrece soporte para diversos protocolos de red y aplicaciones que los utilizan. Cuenta con un amplio soporte para TCP/IP .
Genera admite máquinas de un solo procesador con varios hilos (llamados procesos ).
Genera admite varios tipos de recolección de basura (GC): GC completa, GC in situ, GC incremental y GC efímera. El recolector efímero utiliza únicamente la memoria física y la unidad de administración de memoria para obtener información sobre las páginas modificadas en la memoria física. El recolector utiliza generaciones y la memoria virtual se divide en áreas. Estas áreas pueden contener objetos de ciertos tipos (cadenas, mapas de bits, rutas de acceso, etc.), y cada área puede utilizar diferentes mecanismos de administración de memoria.
Genera implementa dos sistemas de archivos : el sistema de archivos FEP para archivos grandes y el sistema de archivos de máquina Lisp (LMFS), optimizado para muchos archivos pequeños. Estos sistemas también mantienen diferentes versiones de los archivos. Si se modifica un archivo, Genera conserva las versiones anteriores. Genera también proporciona acceso a otros sistemas de archivos, tanto locales como remotos, y puede leer y escribir en ellos, incluyendo: NFS, FTP, HFS, CD-ROM y unidades de cinta .
Genera admite el arranque por red.
Genera proporciona un cliente para la base de datos de objetos estáticos de Symbolics.
Genera utiliza ampliamente el sistema de condiciones (manejo de excepciones) para gestionar todo tipo de errores en tiempo de ejecución y es capaz de recuperarse de muchos de ellos. Por ejemplo, permite reintentar las operaciones de red si falla la conexión; el código de la aplicación seguirá ejecutándose. Cuando se producen errores, se presenta a los usuarios un menú de reinicios (abortar, reintentar, continuar) específico para el error detectado.
Genera cuenta con amplias herramientas de depuración.
Genera puede guardar versiones del sistema en ejecución en mundos . Estos mundos se pueden iniciar y contendrán todos los datos y el código guardados.
Lenguajes de programación
Symbolics proporcionó varios lenguajes de programación para usar con Genera:
- ZetaLisp , la versión simbólica de Lisp Machine Lisp
- Common Lisp en varias versiones: Symbolics Common Lisp, Future Common Lisp (ANSI Common Lisp), CLtL1
- Symbolics Pascal, una versión de Pascal escrita en Lisp (el código fuente de Lisp está incluido en la distribución de Genera).
- Symbolics C, una versión de C escrita en Lisp (el código fuente de Lisp está incluido en la distribución de Genera).
- Symbolics Fortran, una versión de Fortran escrita en Lisp (el código fuente de Lisp está incluido en la distribución de Genera).
Symbolics Common Lisp proporciona la mayor parte del estándar Common Lisp con muchísimas extensiones, muchas de ellas procedentes de ZetaLisp.
Otros lenguajes de la simbólica
- Prolog simbólico , una versión de Prolog escrita e integrada en Lisp.
- Symbolics Ada , una versión de Ada escrita en Lisp.
Resulta notable que estas implementaciones de lenguajes de programación heredaran algunas de las características dinámicas del sistema Lisp (como la recolección de basura y el acceso controlado a los datos) y que admitieran el desarrollo incremental de software.
Los desarrolladores externos proporcionaron más lenguajes de programación, como OPS5 , y herramientas de desarrollo, como el Entorno de Ingeniería del Conocimiento (KEE) de IntelliCorp.
Aplicaciones
Symbolics Genera viene con varias aplicaciones. Las aplicaciones se llaman actividades . Algunas de las actividades son:
- Zmacs , un editor de texto similar a Emacs.
- Zmail, un lector de correo que también proporciona un calendario.
- Explorador del sistema de archivos con herramientas para el mantenimiento del sistema de archivos.
- Oyente de Lisp con interfaz de línea de comandos
- Examinador de documentos para la revisión de documentación
- Restaurar distribución para instalar el software.
- Sistemas distribuidos, para crear distribuciones de software
- Eche un vistazo para examinar la información del sistema (procesos, ventanas, conexiones de red, ...)
- Depurador
- Editor de espacios de nombres para acceder a información sobre objetos en la red (usuarios, equipos, sistemas de archivos, ...).
- Converse, un cliente de chat
- Terminal
- Inspector, para explorar estructuras de datos Lisp
- Notificaciones
- Frame-Up, para el diseño de interfaces de usuario.
- Flavor Examiner, para examinar las clases y los métodos de la extensión orientada a objetos Flavor para Lisp.
Otras aplicaciones de Symbolics
Symbolics vendió varias aplicaciones que se ejecutan en Symbolics Genera.
- Symbolics Concordia, un paquete de producción de documentos
- Simbólico Joshua, una estructura de sistema experto
- Symbolics Macsyma , un sistema de álgebra computacional.
- Symbolics NS, una herramienta de diseño de chips
- Symbolics Plexi, una herramienta para el desarrollo de redes neuronales.
- Symbolics S-Graphics, un conjunto de herramientas: S-Paint, S-Geometry, S-Dynamics, S-Render
- Utilidades S de simbología: S-Record, S-Compositor, S-Colorize, S-Convert
- Alcance simbólico, procesamiento de imágenes digitales con un ordenador de imágenes Pixar
- Symbolics Statice, una base de datos de objetos
Aplicaciones de terceros
Varias empresas desarrollaron y vendieron aplicaciones para Symbolics Genera. Algunos ejemplos:
- Ascent Technology Gatekeeper, un gestor de recursos basado en reglas para aeropuertos y aerolíneas.
- Herramienta de razonamiento automatizado (ART), un entorno de sistema experto de Inference Corporation
- ICAD , sistema CAD paramétrico 3D
- Ilustrador, editor gráfico
- Knowledge Engineering Environment (KEE), un entorno de sistema experto, de IntelliCorp.
- Knowledge Craft, una plataforma para sistemas expertos, de Carnegie Group.
- Metal, sistema de traducción automática de Siemens
Reflejos
- Genera está escrito completamente en Lisp, utilizando ZetaLisp y Symbolics Common Lisp, incluyendo todo el código del sistema de bajo nivel, como controladores de dispositivos, recolección de basura, planificador de procesos, pilas de red, etc.
- El código fuente consta de más de un millón de líneas en Lisp, pero es relativamente compacto en comparación con las funciones proporcionadas, gracias a su amplia reutilización. Además, está disponible para que los usuarios lo inspeccionen y modifiquen.
- El sistema operativo está escrito principalmente en un estilo orientado a objetos utilizando Flavors, New Flavors y CLOS.
- Cuenta con una amplia documentación en línea que se puede leer con el Examinador de Documentos.
- Dynamic Windows proporciona una interfaz de usuario basada en presentaciones.
- La interfaz de usuario se puede utilizar tanto localmente (en máquinas Lisp y MacIvories) como de forma remota (mediante X11).
- Los grupos de desarrolladores pueden trabajar juntos en un entorno de red.
- Un servidor de espacio de nombres central proporciona un directorio de máquinas, usuarios, servicios, redes, sistemas de archivos, bases de datos y más.
- Existe poca protección contra el cambio del sistema operativo. Todo el sistema es totalmente accesible y modificable.
Límites
Los límites de Genera incluyen:
- Solo funciona en máquinas Symbolics Lisp o en el emulador Open Genera.
- Solo un usuario puede estar conectado a la vez.
- Solo se puede ejecutar un sistema Lisp a la vez. Los datos y el código se comparten entre las aplicaciones y el sistema operativo. Sin embargo, se pueden ejecutar varias instancias de Open Genera en un mismo DEC Alpha.
- El desarrollo se detuvo prácticamente a mediados de la década de 1990.
Lanzamientos
- 1982 – Edición 78
- 1982 – Edición 210
- 1983 – Versión 4.0
- 1984 – Versión 5.0
- 1985 – Versión 6.0, introduce Symbolics Common Lisp, el recolector de basura de objetos efímeros y el examinador de documentos.
- 1986 – Genera 7.0, introduce las ventanas dinámicas
- 1990 – Genera 8.0, introduce CLOS
- 1991 – Genera 8.1, introduce CLIM
- 1992 – Genera 8.2
- 1993 – Genera 8.3
- 1993 – Open Genera 1.0 introduce la máquina virtual Lisp.
- 1998 – Open Genera 2.0
- 2021 – Portable Genera 2.0, la máquina virtual Lisp adaptada a plataformas adicionales
Se ha lanzado una versión estable de Open Genera que puede ejecutarse en Linux x86-64 o arm64 y Apple M1 MacOS [ 5 ] y se le ha cambiado el nombre a Portable Genera.
Existe una versión modificada de Open Genera que puede ejecutarse en Linux x86-64 . [ 6 ] [ 7 ]
Referencias
- ↑ Greenblatt, Richard D.; Knight, Thomas F.; Holloway, John T.; Moon, David A. (1980). "Una máquina LISP". Actas del quinto taller sobre arquitectura informática para el procesamiento no numérico - CAW '80 . Association for Computing Machinery. págs. 137–138 . doi : 10.1145/800083.802703 . S2CID 10081363 .
- ↑ "Retrocomputing – MIT CADR Lisp Machines" . Unlambda.com . Consultado el 1 de diciembre de 2018 .
- ↑ Ciccarelli, Eugene C. (1 de agosto de 1984). "Interfaz de usuario basada en presentaciones" . DSpace@MIT. hdl : 1721.1/6946 .
- ↑ "Folleto Genera 7" (PDF) . Bitsavers .
- ↑ Palter, Gary (17 de febrero de 2021). "¡Y ahí está!" . twitter . Consultado el 9 de enero de 2022 .
- ↑ Wiegley, John (23 de octubre de 2007). "The Symbolics Lisp Machine on Linux" . Advogato. Archivado del original el 30 de junio de 2017. Recuperado el 22 de noviembre de 2011 .
- ↑ Collison, Patrick (abril de 2008). "Máquinas Lisp" . Archivado del original el 27 de agosto de 2009. Recuperado el 31 de agosto de 2009 .
Enlaces externos
- Sitio web oficial

- Entorno de Desarrollo Integrado de Symbolics Genera
- "Resumen técnico de simbología"
- Copia web de "Genera Concepts" de la introducción de Symbolics a Genera
- Documentos sobre software de simbología en bitsavers.org
- Una página de capturas de pantalla de Genera
- Capturas de pantalla del galardonado programa Symbolics Document Examiner.
- "La máquina virtual Lisp simbólica, o cómo usar el Dec Alpha como un micromotor programable"
- "Demostración en vídeo de 2013 realizada por el programador de Symbolics, Kalman Reti"
- Implementaciones de Common Lisp
- Software Common Lisp (lenguaje de programación)
- Plataformas informáticas
- entornos de desarrollo integrados
- Sistemas operativos basados en Lisp (lenguaje de programación)
- Sistemas operativos orientados a objetos