Limbo (linguagem de programação)
Limbo é uma linguagem de programação para escrever sistemas distribuídos e é usada para escrever aplicações para o sistema operativo Inferno.
Limbo | |
---|---|
Paradigma | Computação concorrente |
Surgido em | 1995 |
Última versão | (1999) |
Criado por | Sean Dorward, Phil Winterbottom, Rob Pike |
Estilo de tipagem | Fortemente tipada |
Influenciada por | C, CSP, Pascal, Alef |
Influenciou | Stackless Python, Go |
Sistema operacional | Inferno |
Licença | Código aberto |
Página oficial | http://www.vitanuova.com/inferno/limbo.html |
O compilador de Limbo gera código objeto independente da arquitectura. O código é interpretado pela máquina virtual Dis ou compilada antes do tempo de execução para melhorar a sua prestação. Assim, todas as aplicações Limbo são completamente portáteis para todas as plataformas Inferno.
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 (Sistema Operacional), a qual é acompanhada por uma máquina virtual "DIS" que possui um interpretador para a linguagem.
Exemplos de Códigos
editarPrograma "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");
}
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 inter-processual
- colecção de lixo automática
- simples abstracção de tipo de dados