Edinburgh IMP
Encyclopedia
Edinburgh IMP is a development of ATLAS Autocode
, initially developed around 1966-1969 at Edinburgh University, Scotland
. IMP was a general-purpose programming language
which was used heavily for systems programming.
Expressively, IMP is extremely similar to Algol and includes all the Algol-style block structure, reserved keyword
s, and datatypes such as arrays and records. It adds to Algol-style languages a string type (akin to a flex array of char) and built-in operators for string manipulation and character handling.
IMP provides significant control over the storage mapping of data, plus commands for addressing within parts of words. Most Imp compilers offer compiler-generated run-time checks and a backtrace facility by default, even in production code. IMP allows the programmer to inline
machine language instructions in the IMP source code.
Early IMP compilers were developed for the ICL System 4, UNIVAC 1108, IBM 360, DEC PDP-9, DEC PDP-15 and CTL Modular One computers. IMP was used to implement the EMAS
operating system
. In later years a version of IMP called IMP77 was developed by Peter Robertson within the Computer Science department at Edinburgh which was a portable compiler that brought IMP to even more platforms. In 2002 the IMP77 language was resurrected by the Edinburgh Computer History Project for Intel x86 hardware running DOS, Windows and Linux and is once again in use by Edinburgh graduates and ex-pats.
The diverged IMP and IMP77 were later consolidated into a single language with the introduction of the IMP80 standard supported by implementations from the Edinburgh Regional Computer Centre. IMP80 has also been ported to several platforms including Intel and was actively in use into the 1990s.
Edinburgh IMP is unrelated to the later IMP (programming language) extensible syntax programming language developed by Irons for the CDC 6600
, which was the main language used by the NSA for many years.
Atlas Autocode
Atlas Autocode was a programming language developed around 1965 at Manchester University for the Atlas Computer. It was developed by Tony Brooker and Derrick Morris as an improvement on the ALGOL programming languages, removing some of Algol's poorer features such as "passing parameters by name"...
, initially developed around 1966-1969 at Edinburgh University, Scotland
Scotland
Scotland is a country that is part of the United Kingdom. Occupying the northern third of the island of Great Britain, it shares a border with England to the south and is bounded by the North Sea to the east, the Atlantic Ocean to the north and west, and the North Channel and Irish Sea to the...
. IMP was a general-purpose programming language
General-purpose programming language
In computer software a general-purpose programming language is a programming language designed to be used for writing software in a wide variety of application domains...
which was used heavily for systems programming.
Expressively, IMP is extremely similar to Algol and includes all the Algol-style block structure, reserved keyword
Keyword (computer programming)
In computer programming, a keyword is a word or identifier that has a particular meaning to the programming language. The meaning of keywords — and, indeed, the meaning of the notion of keyword — differs widely from language to language....
s, and datatypes such as arrays and records. It adds to Algol-style languages a string type (akin to a flex array of char) and built-in operators for string manipulation and character handling.
IMP provides significant control over the storage mapping of data, plus commands for addressing within parts of words. Most Imp compilers offer compiler-generated run-time checks and a backtrace facility by default, even in production code. IMP allows the programmer to inline
Inline
inline may relate to:* Inline citation or reference* Inline engine * Computers** Inline expansion** Inline function** Inline assembler** inline tag * Internet Posting Style** Inline replying...
machine language instructions in the IMP source code.
Early IMP compilers were developed for the ICL System 4, UNIVAC 1108, IBM 360, DEC PDP-9, DEC PDP-15 and CTL Modular One computers. IMP was used to implement the EMAS
Edinburgh Multiple Access System
The Edinburgh Multi-Access System was a mainframe computer operating system developed at the University of Edinburgh, Scotland, during the 1970s...
operating system
Operating system
An operating system is a set of programs that manage computer hardware resources and provide common services for application software. The operating system is the most important type of system software in a computer system...
. In later years a version of IMP called IMP77 was developed by Peter Robertson within the Computer Science department at Edinburgh which was a portable compiler that brought IMP to even more platforms. In 2002 the IMP77 language was resurrected by the Edinburgh Computer History Project for Intel x86 hardware running DOS, Windows and Linux and is once again in use by Edinburgh graduates and ex-pats.
The diverged IMP and IMP77 were later consolidated into a single language with the introduction of the IMP80 standard supported by implementations from the Edinburgh Regional Computer Centre. IMP80 has also been ported to several platforms including Intel and was actively in use into the 1990s.
Edinburgh IMP is unrelated to the later IMP (programming language) extensible syntax programming language developed by Irons for the CDC 6600
CDC 6600
The CDC 6600 was a mainframe computer from Control Data Corporation, first delivered in 1964. It is generally considered to be the first successful supercomputer, outperforming its fastest predecessor, IBM 7030 Stretch, by about three times...
, which was the main language used by the NSA for many years.
External links
- Example Early IMP Program (actually the world's first known self-reproducing program)
- Intel (Windows + Linux) IMP77 Compiler
- Edinburgh IMP Language Manual, Second edition (1974) (Scan) by Roderick McLeod
- The Imp77 Language (Rekeyed 2003) (also in ASCII format)
- Using Imp77
- The Production of Optimised Machine Code for High Level Languages using Machine-Independent Intermediate Codes
- I-Code V1.3 Working Notes
- A short description of some optimisation techniques used in the PDP11 Imp Compiler
- IMP11 User's Guide
- Imp on the DECsystem-10/20 Users Guide and library manual
- Edinburgh IMP80 Language Manual by Felicity Stephens and John Murison
- Source of first ever IMP compiler for KDF9English Electric KDF9KDF9 was an early British computer designed and built by English Electric, later English Electric Leo Marconi, EELM, later still incorporated into ICL. It first came into service in 1964 and was still in use in 1980 in at least one installation...
by Bratley, Rees, Schofield and Whitfield, 1965 - Source of IMP compiler for PDP9/PDP15 by Hamish Dewar
- Windows implementation of Imp15. Generates stand-alone .EXE files.
- Notes on IMP9 Compiler Output by Hamish Dewar
- Skimp MkII compiler by David Rees - used in 3rd year compilers class at Edinburgh University
- Source of IMP compiler for PDP11 bootstrapped via Skimp
- Source of first IMP compiler written entirely in IMP (1970)
- Source of IMP compiler for 68000 platform by Hamish Dewar
- Sources of Imp77 compilers for several platforms by Peter Robertson
- Source of Imp80 compiler for Intel by Peter D Stephens
- Notes on IMP Programming by Peter D Schofield
- Extracts from The IMP Language and Compiler by Peter D Stephens
- IMP80 - A Historical Introduction by Peter D Stephens
- Differences between ERCC IMP on ICL 4/75 and IMP80 on ICL2900 by John M. Murison