Эдинбургский IMP

Язык системного программирования, используемый в операционной системе EMAS

Эдинбургский IMP
ПарадигмыПроцедурный , императивный , структурированный
СемьяАЛГОЛ
РазработаноБрэтли, Уитфилд, М. М. Барритт, Дэвид Риз, Питер Д. Шофилд, Родерик Маклеод, Хамиш Дьюар, Питер Д. Стивенс, Питер Робертсон
РазработчикЭдинбургский университет
Впервые появился1966 ; 58 лет назад ( 1966 )
Дисциплина набора текстаСтатичный , сильный
ОбъемЛексический
Язык реализацииАвтокод Атласа , IMP
ПлатформаEnglish Electric KDF9 ,
ICL System 4 , UNIVAC 1108 , IBM System/360 , DEC PDP-9 , DEC PDP-10 , DEC PDP-11 , DEC PDP-15 , CTL Modular One, x86 , Interdata 7-16, Interdata 7-32, Data General Nova
ОСБОС/360 , ДОС , Windows , Linux
Основные внедрения
Эдинбургский IMP
Диалекты
ИМП77, ИМП80
Под влиянием
АЛГОЛ 60 , Атлас Автокод

Edinburgh IMP — это развитие Atlas Autocode , изначально разработанного в 1966-1969 годах в Эдинбургском университете , Шотландия . Это язык программирования общего назначения , который широко использовался для системного программирования .

Выразительно, IMP очень похож на ALGOL и включает в себя всю блочную структуру ALGOL-стиля , зарезервированные слова (ключевые слова) и типы данных , такие как массивы и записи . Он добавляет к языкам ALGOL-стиля строковый тип (массив символов, хотя они имеют предопределенный размер) и встроенные операторы для манипуляции строками и обработки символов. Одно существенное отличие от ALGOL заключается в том, что IMP не поддерживает параметры, передаваемые по имени, хотя он поддерживает параметры, передаваемые по ссылке.

IMP обеспечивает значительный контроль над отображением хранения данных, а также команды для адресации внутри частей слов. Большинство компиляторов IMP предлагают проверки времени выполнения, сгенерированные компилятором , и трассировку стека (обратную трассировку) по умолчанию, даже в производственном коде. IMP позволяет встраивать инструкции машинного языка ассемблера в исходный код .

Реализация IMP ERCC для ICL System 4 (известная как IMP9) предлагала синтаксически-управляемую макрокоманду (разработанную Аланом Фрименом), которая была похожа на функции компилятора, предлагаемые предшественником IMP, Atlas Autocode .

Ранние компиляторы IMP были разработаны для компьютеров English Electric KDF9 , ICL System 4 , UNIVAC 1108 , IBM System/360 , DEC PDP-9 , DEC PDP-15 и CTL Modular One . IMP использовался для реализации операционной системы Edinburgh Multiple Access System (EMAS) , а для серии ICL 2900 был написан компилятор , позволяющий портировать EMAS на эту платформу . В более поздние годы Питер Робертсон на факультете компьютерных наук в Эдинбурге разработал версию IMP под названием IMP77, которая представляла собой переносимый компилятор, переносивший IMP на еще большее количество платформ. В 2002 году язык IMP77 был возрожден Эдинбургским проектом по истории компьютеров для оборудования Intel x86 под управлением DOS , Windows и Linux , и снова используется выпускниками и экспатами Эдинбурга.

Разделившиеся IMP и IMP77 позднее были объединены в один язык с введением стандарта IMP80, поддерживаемого реализациями Эдинбургского регионального компьютерного центра. IMP80 также был перенесен на несколько платформ, включая Intel, и активно использовался до 1990-х годов.

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

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

Источники

  • «Ранняя программа IMP (первая в мире известная самовоспроизводящаяся программа)».
  • "IMP77 Compiler: Intel (Windows, Linux)". Архивировано из оригинала 7 апреля 2005 г. Получено 5 мая 2020 г.
  • Фримен, Алан. «Руководство по макроязыку IMP» (PDF) .
  • Фримен, Алан. «Пример использования макросов IMP».
  • Маклеод, Родерик (1974). «Руководство по языку Edinburgh IMP, второе издание, скан».
  • Робертсон, Питер С. (декабрь 1977 г.). "Язык IMP77: справочное руководство (перезапись 2003 г.)" (PDF) . Эдинбургский проект компьютерной истории . Эдинбургский университет. Архивировано из оригинала (PDF) 29 мая 2005 г.(версия ASCII)
  • «Используя Imp77».
  • «Производство оптимизированного машинного кода для языков высокого уровня с использованием машинно-независимых промежуточных кодов».
  • "I-Code V1.3 Working Notes". Архивировано из оригинала 16 декабря 2004 г.
  • «Руководство пользователя IMP11».
  • Фарвис, Кит М. (июнь 1978 г.). «IMP на DECsystem-10/20: Руководство пользователя (Руководство по библиотеке)».
  • Стивенс, Фелисити; Мурисон, Джон. «Руководство по языку Edinburgh IMP80».
  • Брэтли; Риз; Шофилд; Уитфилд (1965). «Источник самого первого компилятора IMP; для English Electric KDF9».
  • Дьюар, Хэмиш. «Компилятор IMP для PDP9/PDP15 (исходный код)».
  • «Порт IMP15 для Windows (генерирует автономные .exe-файлы)».
  • Дьюар, Хэмиш Заметки о. «Выходные данные компилятора IMP9».
  • Риз, Дэвид. «Компилятор Skimp MkII (используется на третьем курсе по компиляторам в Эдинбургском университете)».
  • «Компилятор IMP для PDP11, загруженный через Skimp (исходный код)».
  • «Источник первого компилятора IMP, написанного полностью на IMP». 1970.
  • Дьюар, Хамиш. "Источник компилятора IMP для платформы 68000". Архивировано из оригинала 27 ноября 2003 г.
  • Робертсон, Питер. «Источники компиляторов Imp77 для нескольких платформ».
  • Стивенс, Питер Д. «Источник компилятора Imp80 для Intel».
  • Шофилд, Питер Д. «Заметки о программировании IMP».
  • Стивенс, Питер Д. "Язык и компилятор IMP (выдержки)". Архивировано из оригинала 24 сентября 2006 г.
  • Стивенс, Питер Д. "IMP80: Историческое введение". Архивировано из оригинала 7 декабря 2004 г.
  • Мурисон, Джон М. «Различия между ERCC IMP на ICL 4/75 и IMP80 на ICL2900».

Ссылки

  • Маклеод, Родерик; Барритт, Марджори М. (июль 1970 г.). "Edinburgh IMP Language Manual, Второе издание" (PDF) . Эдинбургский университет, Эдинбургский региональный вычислительный центр (опубликовано в 1974 г.).
Взято с "https://en.wikipedia.org/w/index.php?title=Edinburgh_IMP&oldid=1221939871"