Мэри (язык программирования) - Mary (programming language)
Парадигма | императив |
---|---|
Семья | АЛГОЛ |
Разработчик | ЗАПУСТИТЬ ЕГО |
Впервые появился | 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