]]> ]]>
Править | Обсудить | История

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
Графический отладчик Limbo в среде операционной системы Inferno

Примеры:

Hello, World!:

Пример для версий Inferno Limbo 20100115
implement 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

]]>

Работа программистам