Мэри (язык программирования)
Парадигма | императив |
---|---|
Семья | АЛГОЛ |
Разработчик | Руни |
Впервые появился | 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 . Поскольку компилятор Мэри был реализован в Мэри, его можно было запускать на всех этих платформах.
Мэри больше не поддерживается.
Пример [ править ]
НАЧИНАТЬ ИНТ я := 10; %% Переменная с начальным значением. REF INT ri := i; %% Указатель инициализирован, чтобы указать на i. ИНТ j := 11; j :- REF INT =: ri; %% Преобразование типов и присвоение %%ri теперь указывает на j. i =: (ri :- VAL REF INT); %% Присваивание и преобразование типов %% ri указывает на j, поэтому j изменяется. IF j > 10 %% Условное утверждение с результатом THEN %% используется внутри арифметического выражения. 1 ЕЩЕ 2 ФИ + j =: j; КОНЕЦ