Мэри (язык программирования) - Mary (programming language)

Мэри
Парадигма императив
Семья АЛГОЛ
Разработчик ЗАПУСТИТЬ ЕГО
Впервые появился 1971 ; 49 лет назад ( 1971 )
Печатная дисциплина статичный , сильный
Операционные системы Кроссплатформенность : Kongsberg Våpenfabrikk SM-4, Norsk Data Nord-10 / ND-100, Univac-1100 series, ND-100 / Sintran -III, i386 , SPARC
Под влиянием
АЛГОЛ 68

Mary - это язык программирования, разработанный и реализованный RUNIT в Тронхейме , Норвегия, в 1970-х годах. Он заимствовал многие функции из Алгола 68, но был разработан для системного программирования (машинно-ориентированного программирования).

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

Похоже, что, как и в C , существует несколько языковых функций, позволяющих создавать достаточно хорошо оптимизированный код, несмотря на довольно примитивный генератор кода в компиляторе. К ним относятся операторы, подобные += et alter в C, и явные объявления регистров для переменных .

Примечательные особенности:

  • Синтаксис потока данных - значения перемещаются слева направо, включая присвоение
  • Большинство конструкций можно использовать в выражениях: блоки, IF, CASE и т. Д.
  • Текстовые рекурсивные макросы
  • Перегруженные определяемые пользователем операторы, не ограниченные предопределенными идентификаторами, как в C ++
  • Автоматическое построение и разыменование указателей из контекста типа
  • Типы скалярных диапазонов
  • Перечисление массивов и наборов в итераторах цикла
  • Дескрипторы динамических массивов (ROW)

В 1974 году была напечатана книга с описанием Марии (четвертое и последнее издание в 1979 году): « Учебник для Марии » Рейдара Конради и Пера Холагера.

Компиляторы были изготовлены для мини-компьютеров Kongsberg Våpenfabrikk SM-4 и Norsk Data Nord-10 / ND-100. Исходный компилятор Mary был написан на NU ALGOL , работал на серии Univac-1100 и использовался для начальной загрузки собственного компилятора для ND-100 / Sintran- III. RUNIT реализовал компилятор CHILL, написанный на Mary, который работал на ND-100 и имел цели Intel 8086 и 80286 . Когда этот компилятор был перенесен на платформу VAX , был реализован общий бэкэнд для Mary и CHILL. Позже были доступны бэкенды для i386 и SPARC . Поскольку компилятор Mary был реализован в Mary, компилятор можно было запустить на всех этих платформах.

Мэри больше не поддерживается.

пример

BEGIN
   INT i := 10;          %% Variable with initial value.
   REF INT ri := i;      %% Pointer initialized to point to i.
   INT j := 11;
   j :- REF INT =: ri;   %% Type conversion and assignment
                         %% ri now points to j.
   i =: (ri :- VAL REF INT);     
                         %% Assignment and type conversion
                         %% ri points to j so j is changed.
   IF j > 10             %% Conditional statement with result
   THEN                  %% used inside an arithmetic expression.
      1
   ELSE
      2
   FI + j =: j;
END

Смотрите также