Limbo (язык программирования) - Limbo (programming language)
Парадигма | Одновременный |
---|---|
Разработано | Шон Дорвард, Фил Уинтерботтом, Роб Пайк |
Разработчик | Bell Labs / Vita Nuova Holdings |
Впервые появился | 1995 |
Печатная дисциплина | Сильный |
Операционные системы | Inferno |
Лицензия | Открытый источник |
Веб-сайт | www |
Основные реализации | |
Виртуальная машина Dis | |
Под влиянием | |
C , Паскаль , CSP , Алеф , Newsqueak | |
Под влиянием | |
Безстековый Python , Go , Rust |
Limbo - это язык программирования для написания распределенных систем и язык, используемый для написания приложений для операционной системы Inferno . Он был разработан в Bell Labs по Шон Дорвард , Фил Уинтерботтом , и Роб Пайк .
Компилятор Limbo генерирует архитектурно- независимый объектный код, который затем интерпретируется виртуальной машиной Dis или компилируется непосредственно перед запуском для повышения производительности. Поэтому все приложения Limbo полностью переносимы на все платформы Inferno.
Подход подвешенном к параллельности был вдохновлен Хоара «s сообщающихся последовательных процессов (CSP), как это реализовано и внесены изменения в ранее Пайка Newsqueak языка и Уинтерботтом в Alef .
Особенности языка
Limbo поддерживает следующие функции:
- модульное программирование
- параллельное программирование
- строгая проверка типов при компиляции и во время выполнения
- межпроцессное взаимодействие по типизированным каналам
- автоматический сбор мусора
- простые абстрактные типы данных
Виртуальная машина
Виртуальная машина Dis, выполняющая код Limbo, представляет собой CISC-подобную виртуальную машину с инструкциями по арифметике, потоком управления , перемещением данных , созданием процессов , синхронизацией и обменом данными между процессами, загрузкой модулей кода и поддержкой типов данных более высокого уровня: строки, массивы, списки и каналы связи. Он использует гибрид подсчета ссылок и сборщика мусора в реальном времени для циклических данных.
Аспекты дизайна Dis были вдохновлены микропроцессором AT&T Hobbit , который использовался в оригинальном BeBox .
Примеры
Limbo использует определения стиля Ada, например:
name := type value;
name0,name1 : type = value;
name2,name3 : type;
name2 = value;
Привет мир
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 и языка программирования Limbo описаны в учебнике « Программирование Inferno с Limbo ISBN 0-470-84352-7» (Chichester: John Wiley & Sons, 2003) Филиппа Стэнли-Марбелла . Еще один учебник Мартина Аткинса, Чарльза Форсайта, Роба Пайка и Ховарда Трики « Книга программирования Inferno: Введение в программирование для распределенной системы Inferno» был начат, но так и не выпущен.
Смотрите также
- Inferno операционная система
- Алеф , предшественник Limbo
- План 9 от Bell Labs
- Go (язык программирования) , аналогичный язык от Google
- AT&T Hobbit , архитектура процессора, которая вдохновила Dis VM
использованная литература
внешние ссылки
- Страница Vita Nuova на Limbo
- Спуск в безвыходность , Брайан Керниган
- Язык программирования Limbo от Денниса М. Ричи и Приложение от Виты Нуовой.
- Адское программирование с помощью Limbo , Филипп Стэнли-Марбелл
- Многопоточное программирование в стиле Bell Labs CSP
- Исходный код Dis
- Дизайн виртуальной машины Inferno , Vita nuova .
- "Дизайн Dis VM", Inferno (4-е изд.), Cat V .
- "Спецификация Dis VM", Inferno (4-е изд.), Cat V .