Парадигмы | Мультипарадигма : процедурная , императивная , структурированная , расширяемая |
---|---|
Семья | АЛГОЛ |
Разработано | Эдгар Т. Айронс |
Разработчик | Национальное Агенство Безопасности |
Впервые появился | 1965 |
Стабильный выпуск | IMP72 / 1972 |
Печатная дисциплина | Статичный , сильный |
Сфера | Лексический |
Язык реализации | АЛГОЛ 60 |
Платформа | CDC 6600 , Cray , PDP-10 , PDP-11 |
Операционные системы | COS , SCOPE , TOPS-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 >
с семантикой, которая INCREMENT V
должна быть преобразована V ← V + 1
, программисту нужно будет только вставить следующий оператор IMP :
< EXP > :: = INCREMENT < VBL , A> :: = "A ← A + 1"
Семантическая часть также может содержать вызовы семантических подпрограмм , как в следующем синтаксисе:
< ATOM > :: = ABS ( < ATOM , A> ) :: = DEWOP ( 214 B, AREG1 ( 1 , 13 ) , A )
Семантическая часть этого утверждения состоит из вызова семантической процедуры DEWOP
. Аргументами являются восьмеричная константа 214B
, вызов семантической подпрограммы AREG1(1,13)
и A
, который является объектом на вершине стека в момент вызова этой продукции. DEWOP
представляет собой семантическую подпрограмму, которая соответственно принимает в качестве аргументов код операции машинного языка PDP-10 , объект регистра и любой другой объект и создает объект, значение которого является результатом выполнения указанной машинной инструкции с использованием в качестве поля адреса объекта, который является его последний аргумент. В этом примере код операции 214B
обозначает Load Magnitude
инструкцию, и, таким образом, результатом вышеупомянутого синтаксического оператора будет компиляция кода для вычисления абсолютного значения A
.
Фольклорная операционная система [ править ]
IMP был языком, который использовался в собственной операционной системе NSA с разделением времени под названием Folklore . [1]
См. Также [ править ]
- Эдинбургский язык IMP (контраст)
Ссылки [ править ]
- ^ Коттер, Джордж. «Высокопроизводительные вычисления в Агентстве национальной безопасности» . Границы суперкомпьютеров II . Калифорнийский университет Press . Проверено 25 мая 2012 года .
- Айронс, Эдгар Т. (январь 1970 г.). «Опыт работы с расширяемым языком». Коммуникации ACM . Ассоциация вычислительной техники . 13 (1): 31–40. DOI : 10.1145 / 361953.361966 . S2CID 17635545 .
- Билофски, Уолтер (май 1974). «Расширение синтаксиса и язык программирования IMP72». Уведомления SIGPLAN . Ассоциация вычислительной техники . 9 (5): 13–30. DOI : 10.1145 / 987413.987416 . S2CID 2170981 - через Йельский университет.
Внешние ссылки [ править ]
- Справочное руководство PDP-10 IMP72
- Источники IMP72 (dcus: [43,50306] *. *)