Limbo (プログラミング言語)
パラダイム | 並行 |
---|---|
登場時期 | 1995年 |
設計者 | Sean Dorward、Phil Winterbottom、Rob Pike |
開発者 | ベル研究所 / Vita Nuova Holdings |
型付け | 強い型付け |
主な処理系 | Dis virtual machine |
影響を受けた言語 | C言語、Pascal、CSP、Alef、Newsqueak |
影響を与えた言語 | Stackless Python、Go |
プラットフォーム | Inferno |
ライセンス | オープンソース |
ウェブサイト | [1] |
Limbo は分散システム構築用プログラミング言語であり、Infernoオペレーティングシステムでのアプリケーションソフトウェア作成に使う。ベル研究所の Sean Dorward、Phil Winterbottom、ロブ・パイクが設計した。
Limbo コンパイラはアーキテクチャ独立なオブジェクトコードを生成し、それを Dis 仮想機械でインタプリタ実行するか、性能を強化するために実行直前にコンパイルする。したがって、Limbo で書いたアプリケーションは全ての Inferno プラットフォーム上で動作可能である。
Limbo における並行性の方式は、アントニー・ホーアの Communicating Sequential Processes (CSP) に影響を受けている。
言語機能
[編集]Limbo は次のような機能を備えている。
- モジュラープログラミング
- 並行プログラミング
- 強い型チェック (コンパイル時と実行時)
- 型付きチャンネル上のプロセス間通信
- 自動ガベージコレクション
- 単純抽象データ型
例
[編集]Limbo は Pascal 風の定義(宣言)を採用している(VAR というキーワードはない)。
name := type value;
name0,name1 : type = value;
name2,name3 : type;
name2 = value;
Hello world
[編集] implement Command;
include "sys.m";
sys: Sys;
include "draw.m";
include "sh.m";
init(nil: ref Draw->Context, nil: list of string)
{
sys = load Sys Sys->PATH;
sys->print("Hello World!\n");
}
書籍
[編集]Inferno の第3版と Limbo は Phillip Stanley-Marbell の教科書的著書 Inferno Programming with Limbo ISBN 0-470-84352-7 (Chichester: John Wiley & Sons, 2003) で解説されている。Martin Atkins、Charles Forsyth、ロブ・パイク、Howard Trickey による書籍 "The Inferno Programming Book: An Introduction to Programming for the Inferno Distributed System" も執筆が開始されたが、未だにリリースされていない。
関連項目
[編集]外部リンク
[編集]- Vita Nuova page on Limbo
- A Descent into Limbo by Brian Kernighan
- 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