Limbo
ParadigmaConcorrente
Surgido em1995; há 31 anos
Última versão(1999)
Criado porSean Dorward, Phil Winterbottom, Rob Pike
Estilo de tipagemFortemente tipada
Principais implementaçõesMáquina virtual Dis
Influenciada porC, CSP, Pascal, Alef, Newsqueak
InfluenciouStackless Python, Go, Rust
Sistema operacionalInferno
LicençaGNU GPL v2, ver NOTICE no subdiretório limbo do tarball
Página oficialhttp://www.vitanuova.com/inferno/limbo.html

Limbo é uma linguagem de programação para escrever sistemas distribuídos e é usada para escrever aplicações para o sistema operativo Inferno. Ela foi projetada na Bell Labs por Sean Dorward, Phil Winterbottom e Rob Pike.[1]

O compilador de Limbo gera código objeto independente da arquitectura que é então interpretado pela máquina virtual Dis ou compilada antes do tempo de execução para melhorar a sua performance. Assim, todas as aplicações Limbo são completamente portáteis para todas as plataformas Inferno.

O método de Limbo para concorrência foi inspirado pelo communicating sequential process (CSP) de Hoare, como implementado e melhorado na linguagem Newsqueak de Pike e Alef de Winterbottom.

Características da linguagem

editar

A Limbo suporta as seguintes características:

Máquina virtual

editar

A máquina virtual Dis que executa código Limbo é uma VM estilo CISC, com instruções para aritmética, controle de fluxo, data motion, criação de processos, sincronização e comunicação entre processos, carregamento de módulos de código, e suporte a tipos de dados: string, arrays, lists e canais de comunicação.[2] Ela usa um garbage collector híbrido de contagem de referências e tempo real para dados cíclicos.[3]

Aspectos do design de Dis foram inspirados pelo microprocessador AT&T Hobbit, como usado no BeBox original.

Exemplos de Códigos

editar

Limbo usa definições estilo Ada como:

name := type value;
name0,name1 : type = value;
name2,name3 : type;
name2 = value;

Programa "Hello world":

 implement Command;

 include "sys.m";
 include "draw.m";
    sys:	Sys;

 Command: module
 {
     init: fn (ctxt: ref Draw->Context, argv: list of string);
 };

 # The canonical "Hello world" program, enhanced
 init(ctxt: ref Draw->Context, argv: list of string)
 {
	sys = load Sys Sys->PATH;
	sys->print("Hello world\n");
	for (; argv!=nil; argv = tl argv)
		sys->print("%s ", hd argv);
	sys->print("\n");
 }

Histórico da Linguagem

editar

É uma linguagem de programação que foi desenvolvida pela Lucent Technologies Inc. para a execução de aplicações distribuídas de pouca escalabilidade (aplicações que executam sobre um número pequeno de nodos).

Paradigmas a que ela pertence

editar

É uma linguagem de programação imperativa , que apesar de rodar em cima de uma máquina virtual,não é considerada orientada a objetos, pois não possui suporte a herança e nem a definição de classes.

Aplicações

editar

É a linguagem utilizada para a criação de aplicações que rodam sobre a plataforma Inferno, a qual é acompanhada por uma máquina virtual "DIS" que possui um interpretador para a linguagem.

Livros

editar

A 3ª edição do sistema operacional Inferno e linguagem de programação Limbo são descritos no livro texto Inferno Programming with Limbo ISBN 0-470-84352-7 (Chichester: John Wiley & Sons, 2003), por Phillip Stanley-Marbell. Outro livro texto The Inferno Programming Book: An Introduction to Programming for the Inferno Distributed System, por Martin Atkins, Charles Forsyth, Rob Pike e Howard Trickey, foi iniciado mas nunca lançado.

Ver também

editar

Referências

  1. «Inferno Application Programming». vitanuova. vitanuova. Consultado em 26 de janeiro de 2021. Cópia arquivada em 7 de fevereiro de 2025 
  2. «Dis Virtual Machine Specification». Vita Nuova. 2000. Consultado em 2 de fevereiro de 2015. Cópia arquivada em 20 de fevereiro de 2025 
  3. Lorenz Huelsbergen and Phil Winterbottom (1998). «Very Concurrent Mark and Sweep Garbage Collection without Fine-Grain Synchronization» (PDF). 1998 International Symposium on Memory Management 

Ligações externas

editar
Ícone de esboço Este artigo sobre programação de computadores é um esboço. Você pode ajudar a Wikipédia expandindo-o.

📚 Artikel Terkait di Wikipedia

Linguagem de Comando Guardada

(1976). A Discipline of Programming. [S.l.]: Prentice Hall. ISBN 978-0132158718  Gries, D. (1981). The Science of Programming. Col: Monographs in Computer

Dennis Ritchie

operacional Unix. Com Brian Kernighan, ele coescreveu o livro The C Programming Language, que é frequentemente referido como K&R após suas iniciais.

Rust (linguagem de programação)

30 de outubro de 2010. Cópia arquivada em 27 de abril de 2026  «Rust Programming Language». Consultado em 21 de outubro de 2012. Cópia arquivada em 28

Terminal (macOS)

janeiro de 2004). Computational Biology: Unix/Linux, data processing and programming : with 19 figures and 12 tables (em inglês). [S.l.]: Springer Science

Tcl

chinesa de produtos eletrônicos, veja TCL Corporation. Tcl, sigla de Tool Command Language (Linguagem de Comandos de Ferramentas), é uma linguagem de programação

DOS

interface de linha de comandos através do seu interpretador de comandos, command.com, porém não existe apenas uma versão do DOS. A mais conhecida e popular

BASIC

ANSI X3.113-1987 "Programming Languages Full BASIC" (em vigor) INCITS/ISO/IEC 10279-1991 (Rev. 2024) "Information Technology – Programming Languages – Full

Lista de equipamento do Exército Português

(AFATDS); BMS-C2 (Sistema de gestão do campo de batalha); Critical Software EyeCommand Battlefront; KMW Monitorizador de tiro real (LFME) para o Leopard 2 A6;