Limbo
- Русское название:
- Лимбо
- Дата создания:
- 1995
- Создан под влиянием:
- Повлиял на:
- Парадигма:
- Типизация:
- Принятые расширения файлов:
- .b и .m
- Реализации и версии (свернуть все | развернуть все):
Limbo — язык программирования, предназначенный для написания распределенных систем. Также используется для создания приложений под ОС Inferno. Он был разработан в Bell Labs Шоном Доуардом (Sean Dorward), Филом Винтерботтомом (Phil Winterbottom) и Робом Пайком (Rob Pike).
Компилятор Limbo генерирует архитектурно-независимый объектный код, который затем интерпретируется виртуальной машиной Dis или компилируется перед запуском для улучшения производительности. Таким образом, все программы на Limbo с легкостью переносятся на любую платформу Inferno.
В Limbo есть поддержка:
- модульного программирования;
- параллельного программирования;
- строгой проверки типов во время компиляции и во время выполнения программы;
- общение между процессами через типизированные каналы;
- автоматическая сборка мусора;
- простые абстрактные типы данных.
Limbo предоставляет расширенный набор примитивных типов данных:
- byte (8 бит, беззнаковый)
- int (32 бит, знаковый)
- big (64 бит, знаковый)
- real (64 бит, с плавающей точкой)
- списки
- массивы
- строки
- кортежи (упорядоченные коллекции типов)
- каналы (для сообщения между процессами)
- adt (структура, аналогичная struct в C)
- pick (discriminated union type)
- модули.
Программа на Limbo представляет собой набор модулей, которые взаимодействуют для выполнения задачи. Существуют модули декларации, в котором объявляются публичные типы данных, константы и функции, что делает его “видимым” для других модулей и модули реализации. Модуль декларации (заявления) помещается в файл .m , а сам модуль с реализацией находится в .b файле (похоже на .h и .c в C ) .
Компиляция программ Limbo
В UNIX или Windows команда: $ limbo -g hello.b создаст файл hello.dis . — байт-код версию программы для виртуальной машины Dis.
Элементы синтаксиса:
Комментарий до конца строки | # |
---|---|
Регистрозависимость | Да |
Присваивание значения переменной | name = value |
Объявление переменной | name : type |
Объявление переменной с присваиванием значения | name := type value |
Группировка выражений | ( ... ) |
Блок | { ... } |
Равенство | == |
Неравенство | != |
Сравнение | < > <= >= |
Определение функции | functname (value2: type1, value2: type2): returntype { ... } |
Вызов функции | Funct(a,b,c) |
Вызов функции без параметров | Funct() |
Последовательность | ; |
Если - то | if (expression) {statement} |
Если - то - иначе | if (expression) {statement} else {statement} |
Бесконечный цикл | while(1) / for (;;) |
Цикл с предусловием | while (expression) {statement} |
Цикл с постусловием | do {statement} while (expression) |
Цикл for - next для диапазона целых чисел с инкрементом на 1 | for (i := 1; i <= 100; i++) { ... } |
Цикл for - next для диапазона целых чисел с декрементом на 1 | for (i := 1; i <= 100; i--) { ... } |
Графический отладчик Limbo в среде операционной системы Inferno
Ссылки:
Примеры:
Hello, World!:
Пример для версий Inferno Limbo 20100115implement Hello;
include "sys.m";
sys: Sys;
include "draw.m";
Hello: module {
init: fn(nil: ref Draw->Context, argv: list of string);
};
init(nil: ref Draw->Context, argv: list of string)
{
sys = load Sys Sys->PATH;
sys->print("Hello, World!\n");
}
Комментарии
]]>blog comments powered by Disqus
]]>