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