software.wikisort.org - Язык_программирования

Search / Calendar

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

Modula-2
Класс языка императивный, структурированный, модульный, data and method hiding
Появился в 1978
Автор Никлаус Вирт
Система типов статическая, сильная
Основные реализации

ETH Zurich (создан Никлаусом Виртом), Gardens Point, p1,

Native XDS-x86, gm2 (GNU Modula-2)
Диалекты PIM2, PIM3, PIM4, ISO
Испытал влияние Pascal, Mesa, ALGOL, Simula-67
Повлиял на Modula-3, Oberon, Ada, Fortran 90, Lua, Zonnon, Modula-GM

Цели и принципы разработки языка


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

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


Общая характеристика


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

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


Особенности синтаксиса


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

IF Условие THEN
  Операторы
ELSIF Условие THEN
  Операторы
ELSIF Условие THEN
  Операторы
...
ELSE
  Операторы
END

Благодаря этому исчезла необходимость постоянного использования составных операторов BEGIN-END и «лестниц» операторов IF при многоступенчатой проверке условий.


Диалекты


Существует два основных диалекта Модулы-2. Первый — PIM (по названию книги Никлауса Вирта «Programming in Modula-2», где было дано развёрнутое описание языка и основных системных библиотек), существует в трёх основных вариантах, появлявшихся последовательно и минимально отличающихся друг от друга. Второй основной диалект — ISO, стандартизованный Международной организацией по стандартизации. Основные отличия диалектов от первоначального описания языка перечислены далее.


Достоинства и недостатки


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

К недостаткам языка можно отнести:

Можно также отметить отсутствие в Модуле-2 ряда возможностей, известных и популярных на момент её создания, что может быть отнесено как к достоинствам, так и к недостаткам языка, в зависимости от точки зрения конкретного критика:


Использование


В СССР первые компиляторы для Модула-2 появились в 1982-83 годах для ЭВМ СМ-4 и Электроника-60. Транслятор для БЭСМ-6 был разработан в ВЦ АН СССР (В.А. Серебряков, В.Г. Лютый, А.Н. Бездушный)[5]. Тогда же были выработаны технологии программирования и созданы первые пакеты прикладных программ на Модуле-2. Такие работы велись, в частности, на факультете Кибернетики МИФИ. ВНТК «СТАРТ» Вычислительного Центра Сибирского отделения Академии наук СССР разработал серию процессоров Кронос с аппаратной поддержкой языка программирования Модула-2.

В целом можно сказать, что Модула-2 не получила того распространения и признания, которого заслуживала по своим качествам. Язык завоевал определённую популярность в академической среде Европы, был довольно популярен среди программистов СССР, но не смог потеснить своего предшественника: новые реализации языка Паскаль, включившие в себя средства организации модулей, а позже — средства объектного программирования, всегда обходили Модулу-2 по популярности. Система Lilith, для которой создавалась Модула-2, не получила широкой известности и не смогла помочь Модуле-2 в продвижении.

Свою роль сыграло чрезвычайно широкое распространение дешёвых и быстрых Паскаль-компиляторов фирмы Borland International. Интересно, что компилятор Turbo Modula-2 для ОС CP/M был не только создан Borland, но даже поступил в продажу в Северной Америке и Западной Европе. Однако руководство компании, прежде всего Филипп Кан, приняло решение отказаться от развития этой системы, чтобы не создавать конкурента крайне успешному Turbo Pascal. Результатом этого решения стало то, что вице-президент Borland Нильс Йенсен, один из основателей компании, вместе со своей командой разработчиков в 1987 году покинул Borland, выкупив права на Turbo Modula-2. Созданная им компания JPI (Jensen & Partners International) выпустила под маркой TopSpeed линейку компиляторов для процессоров семейства x86: Assembler, Modula-2, Pascal, C/C++, Ada.[6]

В настоящее время язык Модула-2 используется для программирования бортового программного обеспечения спутников, запускаемых в рамках проекта ГЛОНАСС[7]. В конце 2010 г. компилятор GNU Modula-2 официально включён в коллекцию GCC[8].


Языки-потомки


Помимо прямых потомков, множество других языков в той или иной мере унаследовало у Модулы-2 элементы синтаксиса и общей архитектуры. О влиянии Модулы-2 говорили создатели таких мало похожих языков, как, например, Lua и Go. Влияние Модулы-2 (и в большей степени её потомка, языка Оберон) прослеживается в Java, C#, поздних диалектах Паскаля, таких как Object Pascal и Delphi.


Примечания


  1. ISO/IEC 10514-1:1996
  2. Вирт Н. Программирование на языке Модула-2. М.: Мир, 1987;
  3. Курочкин В. М. Предисловие редактора перевода к книге: Вирт Н. Программирование на языке Модула-2. М.: Мир, 1987.
  4. Никлаус Вирт. «От модулы к Оберону». ИнфоАрт (1998). Дата обращения: 25 октября 2010. Архивировано 19 сентября 2011 года.
  5. Краткое представление отдела систем матем. обеспечения ВЦ РАН. Дата обращения: 30 ноября 2019. Архивировано 11 сентября 2019 года.
  6. Руслан Богатырёв. <--! http://www.osp.ru/pcworld/2001/04/058.htm --> Летопись языков Паскаль. Мир ПК, #04/2001 (17 апреля 2001). Дата обращения: 25 октября 2010. Архивировано 18 мая 2011 года.
  7. Колташев А. А. Модула-2 в российском космосе Архивная копия от 11 апреля 2011 на Wayback Machine
  8. GNU Modula-2 page. Дата обращения: 9 октября 2009. Архивировано 5 октября 2009 года.
  9. English book: Bräunl: Parallel Programming, Prentice-Hall, 1993
    English book: Bräunl: Parallel Image Processing, Springer-Verlag, 2001
    German book: Bräunl: Parallele Programmierung, Vieweg-Verlag, 1993
    German book: Bräunl: Parallele Bildverarbeitung, Addison-Wesley, 1995
    German book: Bräunl: Massiv parallele Programmierung mit dem Parallaxis-Modell, Springer-Verlag, Informatik-Fachberichte, 1990
    Russian book: Bräunl: Parallel Programming, Vyschshaya Shkola Publishers, Kiev, 1997

Литература



Ссылки





Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.org внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2025
WikiSort.org - проект по пересортировке и дополнению контента Википедии