Разработка программ в среде операционной платформы Inferno


Limbo: коммуникация каналов и основные графические возможности - часть 2


Первая программа записывает свои параметры, разделенные пробелами, по одному на каждую строку файла вывода. Взглянув на синтаксис языка Limbo, можно констатировать факт его попадания под отнюдь не дурное влияние C (что неудивительно) и Pascal - это выражения, операторы и соглашения первого и объявления второго. Структурная программная организация (по всей видимости, уходит корнями в Modula-2) - модули. Так, первая строка в листинге указывает на создание модуля Targ1. Имя файла не обязательно должно совпадать с именем модуля. В 3-й и 5-й строках объявляются стандартные встроенные модули sys.m (обеспечивает основные системные и В/В примитивы) и draw.m (графические возможности). В Limbo отсутствует препроцессор, как у C, следовательно, include является ключевым словом, а не директивой препроцессора, тем не менее по функциональности они эквивалентны. Имя файла, предваренное include, всегда заключается в кавычки ("модуль.m"). 4-я строка объявляет переменную sys типа Sys (Limbo регистро-зависимый язык), определенную в модуле sys.m. По соглашению, внутреннее значение sys на данном этапе равняется nil (ссылка на "ничего").

Каждый из модулей Limbo состоит из разделов интерфейса и реализации. В интерфейсе объявляются данные и методы, типы данных и константы модуля, в примере это строки с 7-й по 9-ю - модуль Targ1 и его единственная функция init с двумя аргументами: ref Draw->Context и list of string. Подобная init необходима во всех программах, вызывающихся из командной строки Inferno; она во многом аналогична функции main языка C, поскольку обозначает начало выполнения инструкций. Аргумент ref Draw->Context определен в draw.m, он используется для захвата контекста показа, потребность в нем есть даже в том случае, если программа совсем не работает с графикой, так, в нашем примере, этот аргумент может быть назван nil. list of string есть список (группа последовательных, упорядоченных элементов) параметров командной строки.

В реализации размещаются тела функций модуля, в примере это строки с 11-й по 31-ю.


Начало  Назад  Вперед