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.
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 A 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 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. Ela usa um garbage collector híbrido de contagem de referências e tempo real para dados cíclicos.
Aspectos do design de Dis foram inspirados pelo microprocessador AT&T Hobbit, como usado no BeBox original.
Exemplos de Códigos 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 É 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 É 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 É 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 A 3ª edição do sistema operacional Inferno e linguagem de programação Limbo são descritos no livro texto Inferno Programming with Limbo (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 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
Ligações externas 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* . . .
http://www.cs.rit.edu/~ats/inferno/limbo/index.html
Categoria:Linguagens de programação Categoria:Compiladores e interpretadores livres