Limbo (lenguaje de programación)

Lenguaje de programación
Limbo
ParadigmaConcurrente
Diseñado porSean Dorward, Phil Winterbottom y Rob Pike
ReveladorLaboratorios Bell / Vita Nuova Holdings
Apareció por primera vez1995 ; hace 29 años ( 1995 )
Disciplina de mecanografíaFuerte
Sistema operativoInfierno
LicenciaGNU GPL v2, consulte AVISO en la subcarpeta limbo del archivo tar
Sitio webwww.vitanuova.com/inferno/limbo.html
Implementaciones principales
Esta máquina virtual
Influenciado por
C , Pascal , CSP , Alef , Newsqueak
Influenciado
Python , Go y Rust sin pila

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]

El compilador Limbo genera código 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 Limbo son completamente portables en todas las plataformas 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 anterior Newsqueak de Pike y en el Alef de Winterbottom .

Características del lenguaje

Limbo admite las siguientes funciones:

Maquina virtual

La máquina virtual Dis que ejecuta el código Limbo es una VM 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 conteo de referencias y un recolector de basura en tiempo real para datos cíclicos. [3]

Algunos aspectos del diseño de Dis se inspiraron en el microprocesador AT&T Hobbit , utilizado en el BeBox original .

Ejemplos

Limbo utiliza definiciones de estilo Ada como en:

nombre := tipo valor ; nombre0 , nombre1 : tipo = valor ; nombre2 , nombre3 : tipo ; nombre2 = valor ;           

Hola Mundo

implementar comando ; incluir "sys.m" ; sys : Sys ;   incluye "draw.m" ; incluye "sh.m" ; init ( nil : ref Draw -> Context , nil : lista de cadenas ) { sys = load Sys Sys -> PATH ; 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ó.

Véase también

Referencias

  1. ^ "Programación de aplicaciones Inferno". vitanuova . vitanuova . Consultado el 26 de enero de 2021 .
  2. ^ "Dis Virtual Machine Specification". Vita Nuova. 2000. Consultado el 2 de febrero de 2015 .
  3. ^ Lorenz Huelsbergen y Phil Winterbottomv (1998). "Recolección de basura con marcado y barrido muy simultáneos sin sincronización de grano fino" (PDF) . Simposio internacional sobre gestión de memoria de 1998 .
  • Página de Vita Nuova en Limbo
  • Un descenso al limbo de Brian Kernighan
  • El lenguaje de programación Limbo de Dennis M. Ritchie y Addendum de Vita Nuova.
  • Programación infernal con Limbo, de Phillip Stanley-Marbell
  • Programación con subprocesos al estilo CSP de Bell Labs
  • Este código fuente se archivó desde el original el 21 de septiembre de 2017 y se recuperó el 20 de septiembre de 2017.
  • El diseño de la máquina virtual Inferno, Vita nuova.
  • "Diseño de Dis VM", Inferno (4.ª ed.), Cat V.
  • "Especificación Dis VM", Inferno (4.ª ed.), Cat V.
Obtenido de "https://es.wikipedia.org/w/index.php?title=Limbo_(lenguaje_de_programación)&oldid=1256171877#Máquina_virtual"