Limbo es un lenguaje de programación para escribir sistemas distribuidos y es el lenguaje utilizado para escribir aplicaciones para el sistema operativo Inferno . Fue diseñado en Bell Labs por Sean Dorward , Phil Winterbottom y Rob Pike . [1]
Paradigma | Concurrente |
---|---|
Diseñada por | Sean Dorward, Phil Winterbottom y Rob Pike |
Desarrollador | Bell Labs / Vita Nuova Holdings |
Apareció por primera vez | 1995 |
Disciplina de mecanografía | Fuerte |
SO | Infierno |
Licencia | Fuente abierta |
Sitio web | www |
Implementaciones importantes | |
Dis máquina virtual | |
Influenciado por | |
C , Pascal , CSP , Alef , Newsqueak | |
Influenciado | |
Python sin pila , Go , Rust |
El compilador de Limbo genera código de objeto independiente de la arquitectura que luego es interpretado por la máquina virtual Dis o compilado justo antes del tiempo de ejecución para mejorar el rendimiento. Por lo tanto, todas las aplicaciones de Limbo son completamente portátiles en todas las plataformas de Inferno.
El enfoque de Limbo hacia la concurrencia se inspiró en los procesos secuenciales de comunicación (CSP) de Hoare , tal como se implementaron y modificaron en el lenguaje Newsqueak anterior de Pike y en Alef de Winterbottom .
Características del idioma
Limbo admite las siguientes características:
- programación modular
- programación concurrente
- comprobación de tipo fuerte en la compilación y en tiempo de ejecución
- comunicación entre procesos a través de canales escritos
- recolección automática de basura
- tipos de datos abstractos simples
Máquina virtual
La máquina virtual Dis que ejecuta código Limbo es una máquina virtual similar a CISC, con instrucciones para aritmética, flujo de control , movimiento de datos , creación de procesos , sincronización y comunicación entre procesos, carga de módulos de código y soporte para tipos de datos de nivel superior: cadenas, matrices, listas y canales de comunicación. [2] Utiliza un híbrido de recuento de referencias y un recolector de basura en tiempo real para datos cíclicos. [3]
Los aspectos del diseño de Dis se inspiraron en el microprocesador AT&T Hobbit , como se usa en el BeBox original .
Ejemplos de
Limbo usa definiciones de estilo Ada como en:
nombre : = tipo valor ; nombre0 , nombre1 : tipo = valor ; nombre2 , NAME3 : tipo ; nombre2 = valor ;
Hola Mundo
implementar comando ; incluir "sys.m" ; sys : Sys ; incluir "dibujar.m" ; incluir "sh.m" ; init ( nulo : ref Dibujar -> Contexto , nulo : lista de cadenas ) { sys = cargar Sys Sys -> RUTA ; sys -> print ( "¡Hola mundo! \ n " ); }
Libros
La tercera edición del sistema operativo Inferno y el lenguaje de programación Limbo se describen en el libro de texto Inferno Programming with Limbo ISBN 0-470-84352-7 (Chichester: John Wiley & Sons, 2003), de Phillip Stanley-Marbell . Otro libro de texto The Inferno Programming Book: An Introduction to Programming for the Inferno Distributed System , de Martin Atkins, Charles Forsyth, Rob Pike y Howard Trickey, se inició, pero nunca se publicó.
Ver también
- El sistema operativo Inferno
- Alef , el predecesor del Limbo
- Plan 9 de Bell Labs
- Go (lenguaje de programación) , lenguaje similar de Google
- AT&T Hobbit , una arquitectura de procesador que inspiró el Dis VM
Referencias
- ^ "Programación de la aplicación Inferno" . vitanuova . vitanuova . Consultado el 26 de enero de 2021 .
- ^ "Dis Especificación de la máquina virtual" . Vita Nuova. 2000 . Consultado el 2 de febrero de 2015 .
- ^ Lorenz Huelsbergen y Phil Winterbottom. "Recolección de basura de marcado y barrido muy concurrente sin sincronización de grano fino" (PDF) . Cite journal requiere
|journal=
( ayuda )
enlaces externos
- Página de Vita Nuova en Limbo
- Un descenso al limbo por Brian Kernighan
- El lenguaje de programación Limbo de Dennis M. Ritchie y Addendum de Vita Nuova.
- Programación infernal con Limbo por Phillip Stanley-Marbell
- Programación con hilos en el estilo CSP de Bell Labs
- Dis código fuente
- El diseño de la máquina virtual Inferno , Vita nuova.
- "Dis VM design", Inferno (4ª ed.), Cat V.
- "Especificación Dis VM", Inferno (4ª ed.), Cat V.