Мэри (язык программирования)
Парадигма | императив |
---|---|
Семья | АЛГОЛ |
Разработчик | РУНИТ |
Впервые появился | 1971 год |
Дисциплина набора текста | статический , сильный |
ТЫ | Кроссплатформенность : Kongsberg Våpenfabrikk SM-4, Norsk Data Nord-10/ND-100, серия Univac-1100, ND-100 / Sintran -III, i386 , SPARC |
Под влиянием | |
АЛГОЛ 68 |
Mary — язык программирования , разработанный и реализованный RUNIT в Тронхейме , Норвегия , в 1970-х годах. Он заимствовал многие функции из АЛГОЛА 68 , но был разработан для системного программирования (машинно-ориентированного программирования).
Необычной особенностью его синтаксиса было то, что выражения создавались с использованием обычных инфиксных операторов , но все они имели одинаковый приоритет, а вычисление шло слева направо, если не было скобок. Назначение имело пункт назначения справа, и назначение считалось просто другим оператором.
Подобно C , по-видимому, существовало несколько особенностей языка, позволяющих создавать достаточно хорошо оптимизированный код, несмотря на довольно примитивный генератор кода в компиляторе. В их число входили операторы, аналогичные +=
et alter в C и явные регистров объявления для переменных .
Примечательные особенности:
- Синтаксис потока данных – значения движутся слева направо, включая присвоение.
- В выражениях можно использовать большинство конструкций: блоки, IF, CASE и т. д.
- Текстовые рекурсивные макросы
- Перегруженные пользовательские операторы, не ограниченные предопределенными идентификаторами, как в C++.
- Автоматическое построение и разыменование указателей из контекста типа.
- Типы скалярных диапазонов
- Перечисление массивов и наборов в итераторах цикла
- Дескрипторы динамических массивов (ROW)
Книга с описанием Марии была напечатана в 1974 году (четвертое и последнее издание - 1979 года): «Учебник Мэри» Рейдара Конради и Пера Холагера.
Компиляторы были созданы для Kongsberg Våpenfabrikk Nord-10/ND-100 компании мини-компьютеров SM-4 и Norsk Data . Оригинальный компилятор Мэри был написан на NU ALGOL , работал на серии Univac-1100 и использовался для начальной загрузки собственного компилятора для ND-100 / Sintran -III. RUNIT реализовал компилятор CHILL, написанный на Мэри, который работал на ND-100 и имел цели Intel 8086 и 80286 . Когда этот компилятор был портирован на платформу VAX , был реализован общий бэкэнд для Мэри и CHILL. Позже серверные части для i386 и SPARC стали доступны . Поскольку компилятор Мэри был реализован в Мэри, его можно было запускать на всех этих платформах.
Мэри больше не поддерживается.
Пример [ править ]
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