| Limbo | |
|---|---|
| Paradigma | Concorrente |
| Surgido em | 1995 |
| Última versão | (1999) |
| Criado por | Sean Dorward, Phil Winterbottom, Rob Pike |
| Estilo de tipagem | Fortemente tipada |
| Principais implementações | Máquina virtual Dis |
| Influenciada por | C, CSP, Pascal, Alef, Newsqueak |
| Influenciou | Stackless Python, Go, Rust |
| Sistema operacional | Inferno |
| Licença | GNU GPL v2, ver NOTICE no subdiretório limbo do tarball |
| Página oficial | http://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
editarA Limbo suporta as seguintes características:
- programação modular
- programação concorrente
- uma forte verificação de tipos, quer em tempo de compilação como em tempo de execução
- Comunicação entre processos
- colecção de lixo automática
- simples tipo abstrato de dado
Máquina virtual
editarA 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
editarLimbo 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
editarA 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- O sistema operacional Inferno
- Alef, o predecessor de Limbo
- Plan 9 from Bell Labs, sistema operacional
- Go, uma linguagem similar do Google
- AT&T Hobbit, uma arquitetura de computador que inspirou a VM Dis
Referências
- ↑ «Inferno Application Programming». vitanuova. vitanuova. Consultado em 26 de janeiro de 2021. Cópia arquivada em 7 de fevereiro de 2025
- ↑ «Dis Virtual Machine Specification». Vita Nuova. 2000. Consultado em 2 de fevereiro de 2015. Cópia arquivada em 20 de fevereiro de 2025
- ↑ 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- Página da Vita Nuova sobre Limbo
- A Descent into Limbo por Brian W. Kernighan
- The Limbo Programming Language por Dennis M. Ritchie e Addendum por Vita Nuova.
- Inferno Programming with Limbo por Phillip Stanley-Marbell
- Threaded programming in the Bell Labs CSP style* Dis source code, consultado em 20 de setembro de 2017, cópia arquivada em 21 de setembro de 2017
- The design of the Inferno virtual machine, Vita nuova, consultado em 28 de abril de 2025, cópia arquivada em 11 de fevereiro de 2025.
- «Dis VM design», Inferno 4th ed. , Cat V.
- «Dis VM specification», Inferno 4th ed. , Cat V.