Limbo programming language
Encyclopedia
Limbo is a programming language
for writing distributed systems and is the language used to write applications
for the Inferno
operating system
. It was designed at Bell Labs
by Sean Dorward, Phil Winterbottom, and Rob Pike.
The Limbo compiler
generates architecture
-independent object code
which is then interpreted by the Dis virtual machine
or compiled just before runtime to improve performance. Therefore all Limbo applications are completely portable across all Inferno platforms.
Limbo's approach to concurrency was inspired by Hoare
's Communicating Sequential Processes
(CSP).
-style definitions as in:
Programming language
A programming language is an artificial language designed to communicate instructions to a machine, particularly a computer. Programming languages can be used to create programs that control the behavior of a machine and/or to express algorithms precisely....
for writing distributed systems and is the language used to write applications
Application software
Application software, also known as an application or an "app", is computer software designed to help the user to perform specific tasks. Examples include enterprise software, accounting software, office suites, graphics software and media players. Many application programs deal principally with...
for the Inferno
Inferno (operating system)
Inferno is a distributed operating system started at Bell Labs, but is now developed and maintained by Vita Nuova Holdings as free software. Inferno was based on the experience gained with Plan 9 from Bell Labs, and the further research of Bell Labs into operating systems, languages, on-the-fly...
operating system
Operating system
An operating system is a set of programs that manage computer hardware resources and provide common services for application software. The operating system is the most important type of system software in a computer system...
. It was designed at Bell Labs
Bell Labs
Bell Laboratories is the research and development subsidiary of the French-owned Alcatel-Lucent and previously of the American Telephone & Telegraph Company , half-owned through its Western Electric manufacturing subsidiary.Bell Laboratories operates its...
by Sean Dorward, Phil Winterbottom, and Rob Pike.
The Limbo compiler
Compiler
A compiler is a computer program that transforms source code written in a programming language into another computer language...
generates architecture
Computer architecture
In computer science and engineering, computer architecture is the practical art of selecting and interconnecting hardware components to create computers that meet functional, performance and cost goals and the formal modelling of those systems....
-independent object code
Object code
Object code, or sometimes object module, is what a computer compiler produces. In a general sense object code is a sequence of statements in a computer language, usually a machine code language....
which is then interpreted by the Dis virtual machine
Dis virtual machine
The Dis virtual machine is the execution environment for application code in the Inferno operating system. Its design is based on a register machine, closely modeling CISC-like architectures on which it runs...
or compiled just before runtime to improve performance. Therefore all Limbo applications are completely portable across all Inferno platforms.
Limbo's approach to concurrency was inspired by Hoare
C. A. R. Hoare
Sir Charles Antony Richard Hoare , commonly known as Tony Hoare or C. A. R. Hoare, is a British computer scientist best known for the development of Quicksort, one of the world's most widely used sorting algorithms...
's Communicating Sequential Processes
Communicating sequential processes
In computer science, Communicating Sequential Processes is a formal language for describing patterns of interaction in concurrent systems. It is a member of the family of mathematical theories of concurrency known as process algebras, or process calculi...
(CSP).
Language features
Limbo supports the following features:- modular programmingModularity (programming)Modular programming is a software design technique that increases the extent to which software is composed of separate, interchangeable components called modules by breaking down program functions into modules, each of which accomplishes one function and contains everything necessary to accomplish...
- concurrent programming
- strong type checking at compile- and run-time
- interprocess communication over typed channelChannel (programming)A Channel is a construct used in interprocess communication to represent some binding between concurrent processes. An object may be sent over a channel, and a process is able to receive any objects sent over a channel it has a reference to...
s - automatic garbage collectionGarbage collection (computer science)In computer science, garbage collection is a form of automatic memory management. The garbage collector, or just collector, attempts to reclaim garbage, or memory occupied by objects that are no longer in use by the program...
- simple abstract data typeAbstract data typeIn computing, an abstract data type is a mathematical model for a certain class of data structures that have similar behavior; or for certain data types of one or more programming languages that have similar semantics...
s.
Examples
Limbo uses AdaAda (programming language)
Ada is a structured, statically typed, imperative, wide-spectrum, and object-oriented high-level computer programming language, extended from Pascal and other languages...
-style definitions as in:
Hello world
Books
The 3rd edition of the Inferno operating system and Limbo programming language are described in the textbook Inferno Programming with Limbo ISBN 0470843527 (Chichester: John Wiley & Sons, 2003), by Phillip Stanley-Marbell. Another textbook "The Inferno Programming Book: An Introduction to Programming for the Inferno Distributed System", by Martin Atkins, Charles Forsyth, Rob Pike and Howard Trickey, was started, but never released.See also
- The InfernoInferno (operating system)Inferno is a distributed operating system started at Bell Labs, but is now developed and maintained by Vita Nuova Holdings as free software. Inferno was based on the experience gained with Plan 9 from Bell Labs, and the further research of Bell Labs into operating systems, languages, on-the-fly...
operating system. - AlefAlef (programming language)The Alef programming language was designed as part of the Plan 9 operating system by Phil Winterbottom of Bell Labs.In a February 2000 slideshow, Rob Pike noted: "…although Alef was a fruitful language, it proved too difficult to maintain a variant language across multiple architectures, so we took...
- The predecessor of Limbo. - Plan 9 from Bell LabsPlan 9 from Bell LabsPlan 9 from Bell Labs is a distributed operating system. It was developed primarily for research purposes as the successor to Unix by the Computing Sciences Research Center at Bell Labs between the mid-1980s and 2002...
. - Go (programming language)Go (programming language)Go is a compiled, garbage-collected, concurrent programming language developed by Google Inc.The initial design of Go was started in September 2007 by Robert Griesemer, Rob Pike, and Ken Thompson. Go was officially announced in November 2009. In May 2010, Rob Pike publicly stated that Go was being...
- Similar language from Google.
External links
- Vita Nuova page on Limbo
- A Descent into Limbo by Brian KernighanBrian KernighanBrian Wilson Kernighan is a Canadian computer scientist who worked at Bell Labs alongside Unix creators Ken Thompson and Dennis Ritchie and contributed to the development of Unix. He is also coauthor of the AWK and AMPL programming languages. The 'K' of K&R C and the 'K' in AWK both stand for...
- The Limbo Programming Language by Dennis M. Ritchie and Addendum by Vita Nuova.
- Inferno Programming with Limbo by Phillip Stanley-Marbell
- Threaded programming in the Bell Labs CSP style