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

IMP
ПарадигмыМультипарадигма: процедурный, императив, структурированный, расширяемый
СемьяАЛГОЛ
РазработаноЭдгар Т. Айронс
РазработчикНациональное Агенство Безопасности
Впервые появился1965; 55 лет назад (1965)
Стабильный выпуск
IMP72 / 1972; 48 лет назад (1972)
Печатная дисциплинаСтатический, сильный
ОбъемЛексический
Язык реализацииАЛГОЛ 60
ПлатформаCDC 6600, Cray, PDP-10, PDP-11
Операционные системыCOS, ОБЪЕМ, ТОП-10, Unix, другие
ЛицензияПроприетарный
Основной реализации
IMP65, IMP70, IMP72
Под влиянием
АЛГОЛ 60

IMP это ранний системы язык программирования который был разработан Эдгаром Т. Айронсом в конце 1960-х - начале 1970-х годов на Национальное Агенство Безопасности (АНБ). В отличие от большинства других системных языков, IMP поддерживает синтаксис -расширяемое программирование.

Хотя его разработчик называет этот язык "основанным на АЛГОЛ "[нужна цитата ], IMP исключает многие определение особенности этого языка, поддерживая при этом весьма не похожий на АЛГОЛ: расширяемость синтаксиса.

А компилятор для IMP существовал еще в 1965 году и использовался для программирования CDC 6600 система разделения времени, которая использовалась в Институт оборонного анализа с 1967. Хотя компилятор работает медленнее, чем сопоставимые компиляторы для нерасширяемых языков, он использовался для практической работы.

Компиляторы IMP были разработаны для CDC 6600, Cray, PDP-10 и PDP-11 компьютеры. Важными версиями IMP были IMP65, IMP70 и IMP72.

Расширяемый синтаксис в IMP72

Будучи языком программирования с расширяемым синтаксисом, IMP позволяет программисту расширять его синтаксис, хотя никаких специальных средств для добавления новых не предусмотрено. типы данных или структуры к нему. Для достижения расширяемости синтаксиса IMP использует мощный алгоритм синтаксического анализа, основанный на графе синтаксиса и нескольких матрицах связи. Программист может добавлять новые Форма Бэкуса – Наура (BNF) продукции к графу.

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

По сути, оператор синтаксиса - это расширенная продукция BNF с соответствующими семантика добавлено справа:

 <учебный класс> ::= синтаксическая часть ::= семантическая часть

Например, чтобы добавить конструкцию, описываемую следующим BNF:

 <EXP> ::= ПРИЛОЖЕНИЕ <VBL>

с семантикой, которая ПРИЛОЖЕНИЕ V следует перевести на V ← V + 1, программисту нужно будет только вставить следующие Заявление IMP:

 <EXP> ::= ПРИЛОЖЕНИЕ <VBL, A> ::= «A ← A + 1»

Семантическая часть также может содержать вызовы семантические процедуры, как в следующем синтаксисе:

 <АТОМ> ::= АБС ( <АТОМ, А> ) ::= DEWOP(214B,AREG1(1,13), А)

Семантическая часть этого утверждения состоит из вызова семантической процедуры DEWOP. Аргументы - восьмеричная константа 214B, вызов семантической процедуры AREG1 (1,13), и А, который является объектом на вершине стека в момент вызова этой продукции. DEWOP семантическая процедура, которая соответственно принимает в качестве аргументов машинный язык PDP-10 код операции, регистровый объект и любой другой объект, и создает объект, значение которого является результатом выполнения указанной машинной инструкции с использованием в качестве поля адреса объекта, который является его последним аргументом. В этом примере код операции 214B обозначает Величина нагрузки инструкция, и, таким образом, результатом приведенного выше синтаксиса будет компиляция кода для вычисления абсолютного значения А.

Фольклорная операционная система

IMP был языком, на котором говорилось о местных совместное времяпровождение Операционная система названный Фольклор.[1]

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

Рекомендации

  1. ^ Коттер, Джордж. «Высокопроизводительные вычисления в Агентстве национальной безопасности». Границы суперкомпьютеров II. Калифорнийский университет Press. Получено 25 мая 2012.

внешняя ссылка