IMP (язык программирования) - IMP (programming language)
Парадигмы | Мультипарадигма: процедурный, императив, структурированный, расширяемый |
---|---|
Семья | АЛГОЛ |
Разработано | Эдгар Т. Айронс |
Разработчик | Национальное Агенство Безопасности |
Впервые появился | 1965 |
Стабильный выпуск | IMP72 / 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]
Смотрите также
- Эдинбург IMP язык (контраст)
Рекомендации
- ^ Коттер, Джордж. «Высокопроизводительные вычисления в Агентстве национальной безопасности». Границы суперкомпьютеров II. Калифорнийский университет Press. Получено 25 мая 2012.
- Айронс, Эдгар Т. (январь 1970 г.). «Опыт работы с расширяемым языком». Коммуникации ACM. Ассоциация вычислительной техники. 13 (1).
- Билофски, Уолтер (май 1974 г.). «Расширение синтаксиса и язык программирования IMP72». Уведомления SIGPLAN. Ассоциация вычислительной техники - через Йельский университет.
внешняя ссылка
- Справочное руководство PDP-10 IMP72
- Источники IMP72 (dcus: [43,50306] *. *)