Welcome to the Dictionary of Programming Languages, a compendium
of computer coding methods assembled to provide information and
aid your appreciation for computer science history.
Browse the dictionary by clicking on a section:
A
B
C
D
E
F
G
H
I
JK
L
M
N
O
P
QR
S
T
UV
WXYZ+
Get a full dump of the dictionary:
List of Names
Short Form
Full Form
-
Limbo
- Language type:
- Description:
Limbo is a block-structured, procedural
language intended for application and
embedded system development. It is
the main programming language of the Lucent
Inferno operating system.
The distinguishing characteristics of
Limbo are its simplicity, its support
for modularity, and its support
for multi-threaded and distributed
processing.
Limbo is strongly typed, all variable
and function types are explicitly declared,
and type checking is performed at compile-time
and module load-time. Primitive data
types in the language are ints (3 sizes),
reals, and strings (using Unicode).
Limbo also supports
lists, arrays, tuples, channels, and
definition of abstract data types.
A Limbo program is comprised of
separate modules, the interface and
implementation of a module are separate
and one interface can have several
implementations.
(Inheritance is not supported, though, so
Limbo cannot be considered and
object-oriented programming language.)
The current Limbo compiler produces
byte-codes that are either
interpreted directly or transformed into
native code on-the-fly by the Limbo
run-time engine. The Limbo run-time system
provides all channel and process management,
as well as memory management and
garbage collection.
I/O and system interface facilities are
provided by a set of standard 'library'
modules.
Limbo's run-time environment
has been ported to various Unix
editions, Windows, Plan9, and other
operating systems, as well as directly onto
various CPU architectures.
The Inferno system is available free from
Lucent, but requires registration.
- Origin:
Doward, Winterbottom, and Pike, Lucent Technologies, 1996.
- See Also:
- Remarks:
Limbo includes inter-process communication
channels as primitive language type. These
channels can be used to send any data
object between Limbo processes on the same
machine or across a network. The Inferno
system includes full cryptographic
security for the
communication link.
Limbo is intended to be the language for all
applications under Inferno. Therefore,
it must have a GUI system; the current
GUI system for Limbo is a version of Tk.
Limbo is occasionally referred to as
"Network C," even though it really
resembles several other languages as closely
as it resembles C.
- Links:
-
-
- Date:
- Sample code:
# A simple program to sum up some numbers
# presented on the command line, from
# Bob Pike's forthcoming book on Limbo.
implement Sum;
include "sys.m";
sys: Sys;
include "draw.m";
Sum: module
{
init: fn(context: ref Draw->Context, argl: list of string);
};
init(context: ref Draw->Context, argl: list of string)
{
sys = load Sys Sys->PATH;
argl = tl argl; # ignore command name
if(len argl == 0){
sys->print("usage: sum numbers....\n");
return;
}
sum := 0.0;
while(argl != nil){
arg := hd argl;
sys->print("%s", arg);
sum += real arg;
argl = tl argl;
if(argl != nil)
sys->print(" + ");
}
sys->print(" = %g\n", sum);
}
Descriptions in this dictionary are ©1997-99 Neal Ziring. Some
examples copyright of their respective authors. Some
technologies and languages are trademarked. Permission to
copy descriptions is granted as long as authorship credit is preserved.
Comments on this dictionary, corrections and suggestions, are all welcome.
Please use email, the address is ziring@home.com
[Ziring MicroWeb Home]
[Dictionary Start]
[Sign Guestbook]
Dictionary and script maintained by Neal Ziring, last major modifications 3/18/98. Most recent
additions to dictionary and master list, 1/00.