Модула-2


Мо́дула-2 (Modula-2) — язык программирования общего назначения, являющийся развитием Паскаля, разработанный Никлаусом Виртом в 1978 году.

Язык Модула-2 был разработан Никлаусом Виртом для создания системного программного обеспечения ЭВМ Lilith  (англ.), разработка которой началась в 1977 году в Институте информатики Цюриха. Этим определяются многие его особенности. Язык изначально проектировался как средство промышленного системного программирования, позволяющее писать надёжные, понятные, удобные в сопровождении программы. При этом язык должен был, оставаясь языком высокого уровня со строгой типизацией и поддержкой всех средств надёжного программирования, давать возможность обращаться непосредственно к аппаратуре, создавать специфические системные программы, такие как обработчики прерываний и драйверы устройств, поддерживать программирование параллельно исполняющихся взаимодействующих процессов.

Непосредственным предком Модулы-2 был язык Модула, созданный Виртом в первой половине 1970-х на основе Паскаля. Основным дополнением, отразившимся и в названии языка, была возможность разбиения программы на модули — отдельные фрагменты кода, взаимодействующие через явно описанные интерфейсы. Также был переработан синтаксис и добавлены средства параллельного программирования. Единственная экспериментальная реализация Модулы появилась в 1975 году. Модулу можно рассматривать как первоначальный вариант, своего рода «альфа-версию» Модулы-2, синтаксически эти два языка очень близки. Кроме того, по словам Вирта, на Модулу-2 оказал влияние язык Mesa  (англ.), разработанный в Xerox PARC.

Язык Модула-2 — структурный, модульный язык программирования, с синтаксисом, основанным на языке Паскаль, но заметно переработанным и улучшенным. Его основные характерные особенности приведены ниже.

Язык прост по структуре — в нём имеется только 40 зарезервированных слов (для сравнения, в Аде их 63); официальное «Сообщение о языке», содержащее исчерпывающее описание Модулы-2, занимает 40 страниц (полное описание сокращённого варианта ПЛ/1 занимает около 200 страниц).

Описать особенности Модулы-2 проще всего путём сравнения с языком Паскаль. Наиболее важные отличия, помимо введения модулей и механизмов управляемого экспорта описаний, состоят в нижеследующем.