Модула-2

Язык программирования 1970-х-80-х годов

Модула-2
Парадигмыимперативный , структурированный , модульный , скрытие данных и процедур , параллельный
СемьяВирт / Модула
РазработаноНиклаус Вирт
Впервые появился1978 ; 46 лет назад ( 1978 )
Дисциплина набора текстаСтатичный , прочный , безопасный
ОбъемЛексический (статический)
ПлатформаЛилит ( 2901 драм )
ОСКроссплатформенный
Расширения имени файла.mod, .m2, .def, .MOD, .DEF, .mi, .md
Веб-сайтwww.modula2.org
Основные внедрения
Компилятор ETH, написанный Никлаусом Виртом
GNU Modula-2
ADW Modula-2
Диалекты
ПИМ2, ПИМ3, ПИМ4, ИСО
Под влиянием
Модула , Меса , Паскаль , АЛГОЛ W , Евклид
Под влиянием
Модуль-2+ , Модуль-3 , Оберон , Ада , Фортран 90 , Lua , Seed7 , Зоннон , Модуль-GM

Modula-2 — это структурированный, процедурный язык программирования , разработанный между 1977 и 1985/8 Никлаусом Виртом в ETH Zurich . Он был создан как язык для операционной системы и прикладного программного обеспечения персональной рабочей станции Lilith . [1] Позднее он использовался для программирования вне контекста Lilith.

Вирт рассматривал Modula-2 как преемника своих более ранних языков программирования Pascal и Modula . [2] [3] Основные концепции таковы:

  1. Модуль как компилирующая единица для раздельной компиляции
  2. Сопрограмма как базовый строительный блок для параллельных процессов
  3. Типы и процедуры, позволяющие получить доступ к данным, специфичным для машины

На дизайн языка оказали влияние язык Mesa и Xerox Alto , оба из Xerox PARC , которые Вирт видел во время своего отпуска 1976 года . [4] Компьютерный журнал Byte посвятил выпуск за август 1984 года языку и его окружению. [5]

Вирт создал серию языков Oberon как преемника Modula-2, в то время как другие (в частности, в Digital Equipment Corporation и Acorn Computers , позже Olivetti ) развили Modula-2 в Modula-2+, а затем в Modula-3 .

Описание

Modula-2 — это процедурный язык общего назначения, подходящий как для системного, так и для прикладного программирования. Синтаксис основан на более раннем языке Вирта, Pascal , с некоторыми удаленными элементами и синтаксическими неоднозначностями. Была добавлена ​​концепция модуля , разработанная для поддержки раздельной компиляции и абстракции данных; и прямая языковая поддержка мультипрограммирования .

Язык позволяет использовать однопроходные компиляторы . Такой компилятор Гуткнехта и Вирта был примерно в четыре раза быстрее, чем более ранние многопроходные компиляторы . [6]

Вот пример исходного кода программы «Hello world»:

МОДУЛЬ  Hello ; FROM  STextIO  IMPORT  WriteString ; BEGIN  WriteString ( "Hello World!" ) END  Hello .

Модуль Modula-2 может использоваться для инкапсуляции набора связанных подпрограмм и структур данных, а также для ограничения их видимости из других частей программы. [7] Программы Modula-2 состоят из модулей, каждый из которых состоит из двух частей: модуля определения , интерфейсной части, которая содержит только те части подсистемы, которые экспортируются (видимы для других модулей), и модуля реализации , который содержит рабочий код, являющийся внутренним для модуля.

Язык имеет строгий контроль области действия . За исключением стандартных идентификаторов, ни один объект извне не виден внутри модуля, если он явно не импортирован; ни один внутренний объект модуля не виден снаружи, если он явно не экспортирован.

Предположим, что модуль M1 экспортирует объекты a, b, c и P, перечисляя их идентификаторы в явном списке экспорта.

 ОПРЕДЕЛЕНИЕ  МОДУЛЬ  M1 ;  ЭКСПОРТНАЯ  КВАЛИФИКАЦИЯ  a ,  b ,  c ,  P ;  ...

Тогда объекты a, b, c и P из модуля M1 известны вне модуля M1 как M1.a, M1.b, M1.c и M1.P. Они экспортируются квалифицированным образом наружу (предполагая, что модуль M1 является глобальным). Имя экспортирующего модуля, т. е. M1, используется как квалификатор, за которым следует имя объекта.

Предположим, что модуль M2 содержит следующую декларацию IMPORT:

 МОДУЛЬ  M2 ;  ИМПОРТ  M1 ;  ...

Тогда это означает, что объекты, экспортированные модулем M1 за пределы его включающей программы, теперь могут использоваться внутри модуля M2. Они упоминаются квалифицированным образом : M1.a, M1.b, M1.c и M1.P. Пример:

 ...  М1.а : = 0 ; М1.с : = М1.П ( М1.а + М1.б ) ; ...        

Квалифицированный экспорт позволяет избежать конфликтов имен. Например, если другой модуль M3 экспортирует объект с именем P, то эти два объекта можно различить, поскольку M1.P отличается от M3.P. Не имеет значения, что оба объекта называются P внутри своих экспортирующих модулей M1 и M3.

Существует альтернативный метод. Предположим, что модуль M4 сформулирован следующим образом:

 МОДУЛЬ  M4 ;  ИЗ  M1  ИМПОРТ  a ,  b ,  c ,  P ;

Это означает, что объекты, экспортированные модулем M1 наружу, снова могут использоваться внутри модуля M4, но теперь просто с помощью ссылок на экспортированные идентификаторы без каких-либо ограничений , например: a, b, c и P. Пример:

 ...  а  :=  0 ;  с  :=  Р ( а  +  b );  ...

Этот метод импорта можно использовать, если нет конфликтов имен. Он позволяет использовать переменные и другие объекты вне их экспортирующего модуля тем же неквалифицированным образом, как и внутри экспортирующего модуля.

Правила экспорта и импорта не только защищают объекты от нежелательного доступа, но и позволяют создавать перекрестные ссылки на определения каждого идентификатора в программе. Это свойство помогает в обслуживании больших программ, содержащих много модулей.

Язык обеспечивает однопроцессорный параллелизм ( мониторы , сопрограммы и явная передача управления) и аппаратный доступ (абсолютные адреса, битовая манипуляция и прерывания ). Он использует номинальную систему типов .

Диалекты

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

  • ПИМ2 (1983)
    • Обязательное явное EXPORTусловие в модулях определений.
    • Функцию SIZEнеобходимо импортировать из модуляSYSTEM
  • ПИМ3 (1985)
    • Удалил EXPORTпункт из модулей определения после замечания, что все в модуле определения определяет интерфейс к этому модулю, поэтому EXPORTпункт был излишним.
    • Функция SIZEявляется всеобъемлющей (видимой в любой области без импорта)
  • ПИМ4 (1988)
    • Указано поведение оператора MOD, когда операнды отрицательные.
    • Требуется, чтобы все ARRAY OF CHARстроки завершались ASCII-символом NUL, даже если строка точно вписывается в свой массив.
  • ИСО (1996, 1998)
    • ISO Modula-2 разрешил большинство неясностей в PIM Modula-2. Он добавил типы данных COMPLEXи LONGCOMPLEXисключения, завершение модуля ( FINALLYпункт) и полную стандартную библиотеку ввода/вывода (I/O) . Есть много мелких отличий и уточнений. [8]

Суперсеты

Существует несколько надмножеств Modula-2 с языковыми расширениями для конкретных областей применения:

Производные

Есть несколько производных языков, которые очень похожи на Modula-2, но являются новыми языками сами по себе. Большинство из них — это разные языки с разными целями и с собственными сильными и слабыми сторонами:

  • Modula-3 , разработанная командой бывших сотрудников Xerox, которые перешли в DEC и Olivetti [13]
  • Oberon , разработанный в ETH Zurich Zürich для System Oberon [14], доступен онлайн.
  • Oberon-2 , Oberon с объектно-ориентированными (OO-расширениями [15]
  • Active Oberon — еще одно расширение OO Oberon , разработанное в ETH Zurich с главной целью — поддержка программирования параллельных вычислений на многопроцессорных и многоядерных процессорах.
  • Parallaxis, язык для машинно-независимого параллельного программирования данных [16]
  • Umbriel, разработанный Пэтом Терри как язык обучения [17]
  • YAFL, исследовательский язык Дариуса Бласбанда [18]

Многие другие современные языки программирования переняли особенности Modula-2.

Элементы языка

Зарезервированные слова

PIM [2,3,4] определяет 40 зарезервированных слов :

И ELSIF ПОВТОРЕНИЕ ЦИКЛАМАССИВ КОНЕЦ МОД ВОЗВРАТНАЧАТЬ ВЫХОДНОЙ МОДУЛЬ НАБОРАЭКСПОРТОМ НЕ ТОГДАДЕЛО ДЛЯ TOКОНСТ ИЗ ИЛИ ТИПОПРЕДЕЛЕНИЕ ЕСЛИ УКАЗАТЕЛЬ ДОПОРЯДОК РЕАЛИЗАЦИИ DIV VARИМПОРТИРУЙТЕ КВАЛИФИКАЦИОННО, ПОКАОСТАЛЬНОЕ В ЗАПИСИ С

Встроенные идентификаторы

PIM [3,4] определяет 29 встроенных идентификаторов :

ABS EXCL LONGINT REALBITSET FALSE LONGREAL РАЗМЕРBOOLEAN FLOAT MAX TRUECAP HALT MIN TRUNCКАРДИНАЛЬНЫЙ ВЫСОКИЙ НИЛЬ ВАЛСИМВОЛ ВКЛЮЧАЯ НЕЧЕТНЫЙCHR ВКЛЮЧАЯ ЗАКАЗDEC ЦЕЛОЕ ПРОЦЕСС

Использование встроенной системы

Modula-2 используется для программирования многих встраиваемых систем .

Кембридж Модула-2

Cambridge Modula-2 от Cambridge Microprocessor Systems основан на подмножестве PIM4 с языковыми расширениями для разработки встроенных систем. Компилятор работает на DOS и генерирует код для встроенных микроконтроллеров на базе Motorola 68000 series (M68k), работающих под управлением операционной системы MINOS.

Мод51

Mod51 от Mandeno Granville Electronics основан на ISO Modula-2 с языковыми расширениями для разработки встроенных систем в соответствии с IEC 1131 , отраслевым стандартом для программируемых логических контроллеров (ПЛК), тесно связанным с Modula-2. Компилятор Mod51 генерирует автономный код для микроконтроллеров на базе 80C51.

Модула-ГМ

Delco Electronics , тогда дочерняя компания GM Hughes Electronics , разработала версию Modula-2 для встраиваемых систем управления, начиная с 1985 года. Delco назвала ее Modula-GM. Это был первый язык программирования высокого уровня , используемый для замены машинного кода (языка) для встраиваемых систем в блоках управления двигателем (ЭБУ) Delco . Это было важно, поскольку в 1988 году Delco производила более 28 000 ЭБУ в день для GM. Тогда это был крупнейший в мире производитель ЭБУ. [19] Первое экспериментальное использование Modula-GM во встраиваемом контроллере было в 1985 году в контроллере антиблокировочной тормозной системы, который был основан на микропроцессоре Motorola 68xxx, а в 1993 году в ЭБУ Gen-4, который использовался командами Champ Car World Series Championship Auto Racing Teams (CART) и Indy Racing League (IRL). [20] Первым производственным применением Modula-GM было его использование в грузовиках GM, начиная с модуля управления транспортным средством (VCM) 1990 модельного года, используемого для управления двигателями Vortec от GM Powertrain . Modula-GM также использовался во всех ЭБУ для семейства двигателей GM 90° Buick V6 3800 Series II, используемых в Buick Park Avenue 1997-2005 модельного года . Компиляторы Modula-GM и соответствующие инструменты управления программным обеспечением были получены Delco от Intermetrics .

Modula-2 был выбран в качестве основы для языка высокого уровня Delco из-за его многочисленных преимуществ по сравнению с другими альтернативными вариантами языка в 1986 году. После того, как Delco Electronics отделилась от GM (с другими подразделениями компонентов) и образовала Delphi Automotive Systems в 1995 году, глобальный поиск поставщиков потребовал использования непатентованного языка программного обеспечения высокого уровня. Встроенное программное обеспечение ECU , которое сейчас разрабатывается в Delphi, компилируется с помощью коммерческих компиляторов для языка C.

Российские радионавигационные спутники

Спутники российской радионавигационной спутниковой службы ГЛОНАСС , аналогичные американской системе глобального позиционирования (GPS), программируются на языке Модула-2. [21]

Компиляторы

  • Amsterdam Compiler Kit (ACK) Modula-2 – для MINIX ; бесплатное ПО [22]
  • ADW Modula-2 – для Windows, соответствует ISO, ISO/IEC 10514-1, ISO/IEC 10514-2 (расширение OO), ISO/IEC 10514-3 (расширение Generic); бесплатное ПО [23]
  • Aglet Modula-2 – для AmigaOS 4.0 для PowerPC ; бесплатное ПО [24]
  • Встроенные программные средства (FST) Modula-2 – для DOS; бесплатное ПО [25]
  • Gardens Point Modula-2 (GPM) – для BSD, Linux, OS/2, Solaris ; совместимо с ISO; бесплатное ПО, по состоянию на 30 июля 2014 г. [26]
  • Gardens Point Modula-2 (GPM/CLR) – для .NET Framework ; бесплатное ПО [27]
  • GNU Modula-2 – для платформ GCC, версия 1.0 выпущена 11 декабря 2010 г.; соответствие: PIM2, PIM3, PIM4, ISO; свободное программное обеспечение , GNU General Public License (GPL) [28]
  • Logitech SA — у них также было «ядро реального времени» для встроенного использования (1987) [29] [30]
  • M2Amiga – для Amiga ; бесплатное программное обеспечение [31]
  • M2M – от Н. Вирта и его коллег из ETH Zurich, кроссплатформенный, генерирует M-код для виртуальной машины ; бесплатное ПО [32]
  • M2RT11 – Н. Вирт и его коллеги из ETH Zurich, изначально созданный для начальной загрузки Lilith
  • MacMETH – от Н. Вирта и соавторов из ETH Zurich для Macintosh, только Classic; бесплатное ПО [33]
  • Mod51 – для семейства микроконтроллеров Intel 80x51, совместимый с ISO, расширения IEC1132; фирменное программное обеспечение [34]
  • Megamax Modula-2 – для Atari ST с документацией; бесплатное ПО [35]
  • Modula-2 R10 – эталонный компилятор для этой Modula; открытый исходный код, рецензирование [36]
  • ModulaWare – для OpenVMS ( VAX и Alpha ), совместимый с ISO; фирменное программное обеспечение [37]
  • ORCA/Modula-2 – для Apple IIGS от The Byte Works для Apple Programmer's Workshop
  • p1 Modula-2 – для Macintosh , Classic и macOS ( только PowerPC и Carbon (API) ), соответствует ISO; фирменное программное обеспечение [38]
  • MOCKA – для различных платформ, совместимая с PIM; коммерческие, бесплатные версии Linux/BSD [39]
  • TDI Modula-2 – для Atari ST , от TDI Software [40]
  • Terra M2VMS – для OpenVMS ( VAX и Alpha ), совместимый с PIM; фирменное программное обеспечение [41]
  • m2c, Ulm Modula-2 System – для Solaris (Sun SPARC и Motorola 68k ); свободное программное обеспечение, GNU General Public License (GPL) [42]
  • XDS – библиотека, совместимая с ISO и TopSpeed: собственный XDS-x86 для x86 (Windows и Linux); XDS-C для Windows и Linux (16- и 32-разрядные версии), предназначен для C ( K&R и ANSI ); бесплатное ПО [43]

Турбо Модула-2

Turbo Modula-2 был компилятором и интегрированной средой разработки для MS-DOS , разработанной, но не опубликованной компанией Borland . Jensen and Partners, в которую входил соучредитель Borland Нильс Йенсен, купили невыпущенную кодовую базу и превратили ее в TopSpeed ​​Modula-2. В конечном итоге она была продана Clarion, теперь SoftVelocity, которая затем предложила компилятор Modula-2 как часть своей линейки продуктов Clarion в то время. [44]

Версия Turbo Modula-2 для Zilog Z80 CP/M некоторое время продавалась компанией Echelon по лицензии Borland. Сопутствующий релиз для Hitachi HD64180 продавался компанией Micromint в качестве инструмента разработки для их одноплатного компьютера SB-180. [45]

IBM Modula-2

IBM имела компилятор Modula-2 для внутреннего использования, который работал как на OS/2, так и на AIX , и имел первоклассную поддержку в редакторе IBM E2 . [46] IBM Modula-2 использовался для частей OS /400 Vertical Licensed Internal Code (фактически ядра OS/400). [47] Этот код был в основном заменен на C++ , когда OS/400 была портирована на семейство процессоров IBM RS64 , хотя часть его осталась в современных выпусках операционной системы. [48] [49] Также существовал бэкэнд Motorola 68000 , который, возможно, использовался в продуктах встроенных систем. [46]

Операционные системы

Modula-2 используется для программирования некоторых операционных систем (ОС). Структура и поддержка модуля Modula-2 используются непосредственно в двух родственных ОС.

ОС Medos-2 для рабочей станции Lilith была разработана в ETH Zurich Свендом Эриком Кнудсеном при поддержке Вирта. Это однопользовательская объектно-ориентированная операционная система, построенная из модулей Modula-2. [50] [51] [52]

Операционная система Excelsior для рабочей станции Kronos была разработана Академией наук Советского Союза , Сибирским отделением, Новосибирским вычислительным центром, проектом Modular Asynchronous Developable Systems (MARS), исследовательской группой Kronos Research Group (KRG). Это однопользовательская система на базе модулей Modula-2. [53]

Книги

Ссылки

  1. ^ «Краткое изложение проектов Н. Вирта, 1962–1999». Кафедра компьютерных наук . ETH Zurich .
  2. ^ Вирт, Никлаус (2002). «Паскаль и его преемники». В Broy, Manfred; Denert, Ernst (ред.). Пионеры программного обеспечения: вклад в программную инженерию . Берлин, Гейдельберг: Springer-Verlag . стр. 108–120. doi :10.1007/978-3-642-59412-0. ISBN 978-3-642-59412-0. S2CID  2698265.
  3. ^ Вирт, Никлаус (18 февраля 2005 г.). «История и цели Modula-2». Журнал доктора Добба . Informa PLC.
  4. ^ аб Вирт, Никлаус (1988). Программирование в Модуле-2 (4-е изд.). Берлин, Гейдельберг: Springer. дои : 10.1007/978-3-642-83565-0. ISBN 978-3-642-83565-0. S2CID  41899609.Страница 4.
  5. ^ Вирт, Никлаус ; Гуткнехт, Юрг ; Оран, Ричард; Пол, Роберт Дж.; Коар, Дэвид (август 1984 г.). «Тема: Модуль-2». Байт: Журнал малых систем . Том. 9, нет. 8. стр. 143–232.Доступно на Archive.org
  6. ^ Вирт, Никлаус (1 мая 1984 г.). "Однопроходный компилятор Modula-2 для Lilith" (PDF) . Программное обеспечение CFB . Получено 23 ноября 2023 г. .
  7. ^ Статья основана на материале, взятом из Modula-2 в Free On-line Dictionary of Computing до 1 ноября 2008 года и включенном в соответствии с условиями «перелицензирования» GFDL версии 1.3 или более поздней.
  8. ^ ИСО/МЭК 10514-1:1996
  9. ^ Тичи и др., Modula-2*: расширение Modula-2 для высокопараллельных переносимых программ, Университет Карлсруэ [1990]
  10. ^ Браунль, Параллельное программирование, Прентис-Холл [1993]
  11. ^ Muller, C. (ноябрь 1986 г.). «Modula–Prolog: разработка программного обеспечения». IEEE Software . 3 (6): 39–45}. doi :10.1109/MS.1986.229475. S2CID  763425.
  12. ^ ab modula2.org, 5. Где я могу получить информацию об ISO Modula-2?
  13. ^ Карделли и др., Отчет Modula-3 , Исследовательский отчет 31, Центр системных исследований, Корпорация цифрового оборудования, [1988]
  14. ^ Н. Вирт и Дж. Гуткнехт, Проект Оберон: разработка операционной системы и компилятора, ISBN 0-201-54428-8 , Addison-Wesley [1992] 
  15. ^ Moessenboeck & Wirth, Язык программирования Oberon-2 , ETH Zurich [1995]
  16. ^ Томас Бройнл, Parallaxis, язык для структурированного параллельного программирования данных, Университет Штутгарта [1996]
  17. ^ Пэт Д. Терри, Другой минимальный язык программирования, ACM SIGPLAN Notices No. 30 [1995]
  18. ^ Д. Бласбанд, Язык программирования YAFL, второе издание, [1993]
  19. ^ Delco Electronics Electron Magazine, The Atwood Legacy, весна '89, стр. 25
  20. ^ Разработка электроники для автогонок GM
  21. ^ Колташев, А.А. (2006). «Модула-2 в российском космосе». Кронос: История проекта (на русском языке). xTech . Получено 8 апреля 2021 г. .
  22. Given, David (9 октября 2020 г.). "ACK". GitHub . Получено 13 марта 2021 г. .
  23. ^ "ADW Модуль-2". Модуль-2.org . Проверено 13 марта 2021 г.
  24. ^ "Aglet Modula-2". Aglet Modula-2 . 15 февраля 2012 . Получено 13 марта 2021 .
  25. ^ "FST Modula-2". psg.com . Получено 13 октября 2021 г. .
  26. ^ "Gardens Point Modula". Programming Languages ​​and Systems Group, Faculty of Information Technology . Queensland University of Technology, Brisbane. 29 января 2007 г. Архивировано из оригинала 23 марта 2013 г. Получено 13 марта 2021 г.
  27. К. Джон Гоф (25 октября 2010 г.). «Гарденс Пойнт Модуль-2 (GPM/CLR)». Гитхаб . Проверено 16 октября 2022 г.
  28. ^ "GNU Modula-2". Саванна . Free Software Foundation. 30 августа 2018 г. Получено 13 марта 2021 г.
  29. ^ "Logitech Modula-2". Журнал Electronic Developer Magazine для OS/2 (EDM/2) . Получено 29 мая 2022 г.
  30. ^ «1988: Модуль-2 и Logitech RTK» . Ойвинд Тейг. 12 апреля 2022. Фотография дискеты.
  31. ^ Дежен, Рене; Нидер, Клаудио; Преузинг, Бернд; Шауб, Маркус; Штраубе, Йорг (2004). «М2Амига». Веб-сайт Клаудио . А+Л АГ. Архивировано из оригинала 20 января 2019 года . Проверено 13 марта 2021 г.
  32. ^ "Лилит и Модула-2". CFB Software . Получено 23 ноября 2023 г.
  33. ^ "MacMETH: Быстрая система языка Modula-2 для компьютеров Macintosh". ETH Zurich: Terrestrial Systems Ecology . 22 января 2020 г. Получено 13 марта 2021 г.
  34. ^ "Mod51 Structured Text Programming Language". Design Tools . Архивировано из оригинала 21 октября 2008 года . Получено 13 марта 2021 года .
  35. ^ Темпельманн, Томас (1 сентября 2020 г.). "Домашняя страница Томаса Темпельмана" . Получено 18 марта 2021 г. .
  36. ^ "Модула-2 Р10" . Проверено 13 октября 2021 г.
  37. ^ Dotzel, Chih-Ya (21 января 2020 г.). "ModulAware" . Получено 18 марта 2021 г. .
  38. ^ Видеманн, Альберт (13 января 2021 г.). "p1 Modula-2". p1 Society for Computer Science . Получено 19 марта 2021 г. .
  39. ^ Бек, Михаэль; Гейсс, Рубино (2006). "Компилятор Modula-2 из Карлсруэ MOCKA". Институт структур программ и организации данных (IPD) . Технологический институт Карлсруэ . Архивировано из оригинала 4 сентября 2009 года . Получено 21 марта 2021 года .
  40. ^ Джефферсон, Гарет (август 1986 г.). «Компилятор Modula-2». Australian Personal Computer . стр. 49, 52, 54, 56, 58. Получено 8 октября 2022 г.
  41. ^ "Системы Modula-2 для OpenVMS/Alpha и OpenVMS/VAX". Terra Datentechnik (на английском и немецком). Эрленбах, Швейцария. 12 ноября 2002 г. Получено 23 марта 2021 г.
  42. ^ Борхерт, Андреас; Хаш, Мартин (21 января 2003 г.). "m2c: Ulm's Modula-2 System". Ульмский университет . Ульм , Германия . Получено 23 марта 2021 г.
  43. ^ "XDS Family of Products: Modula-2 – Oberon-2 development tools". Excelsior LLC . 1999–2009. Архивировано из оригинала 27 мая 2009 года . Получено 23 марта 2021 года .
  44. ^ "About Clarion". Архивировано из оригинала 7 декабря 2002 года . Получено 31 марта 2023 года .
  45. ^ "Circuit Cellar". Байт: The Small Systems Journal . Том 11, № 13. С. 98.
  46. ^ ab "IBM Modula-2". edm2.com . 2 марта 2019 г. . Получено 12 марта 2021 г. .
  47. ^ «Отзывы читателей об AS/400 в i Mystery Solved». itjungle.com . 21 февраля 2011 г. Получено 12 марта 2021 г.
  48. ^ Солтис, Фрэнк Г. (1997). Внутри AS/400 (2-е изд.). Duke Press. ISBN 978-1882419661.
  49. Лейф Свальгаард (8 октября 2003 г.). «Re:Re:Эмулятор MI». MI400 (список рассылки) . Проверено 26 февраля 2021 г.
  50. ^ Кнудсен, Свенд Эрик (1983). Medos-2: Операционная система, ориентированная на Modula-2, для персонального компьютера Лилит (PhD). ETH Zurich . doi : 10.3929/ethz-a-000300091. hdl : 20.500.11850/137906.
  51. Кнудсен, Свенд Эрик (25 октября 2000 г.). «Медос в ретроспективе». В Бёсёрменьи, Ласло; Гуткнехт, Юрг ; Помбергер, Густав (ред.). Школа Никлауса Вирта: искусство простоты . Морган Кауфманн. стр. 69–86. ISBN 978-1558607231. ISBN  1-55860-723-4 и dпункт, ISBN 3-932588-85-1 . 
  52. ^ Сэнд, Пол А. (сентябрь 1984 г.). «Персональный компьютер Лилит». Byte . стр. 300–311 . Получено 6 марта 2021 г.Перепечатка.
  53. ^ Кузнецов, Д.Н.; Недоря, А.Е.; Тарасов, Е.В.; Филиппов, В.Е. «Кронос: семейство процессоров для языков высокого уровня». Кронос : история проекта (на русском языке). xTech . Получено 13 апреля 2021 г.
  • Официальный сайт
Взято с "https://en.wikipedia.org/w/index.php?title=Modula-2&oldid=1252215110#turbo"