Edinburgh IMP is a development of
Atlas Autocode, initially developed around 1966-1969 at the
University of Edinburgh
The University of Edinburgh (, ; abbreviated as ''Edin.'' in Post-nominal letters, post-nominals) is a Public university, public research university based in Edinburgh, Scotland. Founded by the City of Edinburgh Council, town council under th ...
,
Scotland
Scotland is a Countries of the United Kingdom, country that is part of the United Kingdom. It contains nearly one-third of the United Kingdom's land area, consisting of the northern part of the island of Great Britain and more than 790 adjac ...
. It is a
general-purpose programming language
In computer software, a general-purpose programming language (GPL) is a programming language for building software in a wide variety of application Domain (software engineering), domains. Conversely, a Domain-specific language, domain-specific pro ...
which was used heavily for
systems programming
Systems programming, or system programming, is the activity of programming computer system software. The primary distinguishing characteristic of systems programming when compared to application programming is that application programming aims t ...
.
Expressively, IMP is highly similar to
ALGOL
ALGOL (; short for "Algorithmic Language") is a family of imperative computer programming languages originally developed in 1958. ALGOL heavily influenced many other languages and was the standard method for algorithm description used by the ...
and includes all the ALGOL-style
block structure,
reserved word
In a programming language, a reserved word (sometimes known as a reserved identifier) is a word that cannot be used by a programmer as an identifier, such as the name of a variable, function, or label – it is "reserved from use". In brief, an '' ...
s (keywords), and
data type
In computer science and computer programming, a data type (or simply type) is a collection or grouping of data values, usually specified by a set of possible values, a set of allowed operations on these values, and/or a representation of these ...
s such as
arrays
An array is a systematic arrangement of similar objects, usually in rows and columns.
Things called an array include:
{{TOC right
Music
* In twelve-tone and serial composition, the presentation of simultaneous twelve-tone sets such that the ...
, and
records. It adds to ALGOL-style languages a
string type (an array of characters, although these have a
predeclared size) and built-in operators for string manipulation and character handling. One significant difference from ALGOL is that IMP does not support parameters passed by name, although it does support parameters passed by reference.
IMP provides significant control over the storage mapping of data, plus commands for addressing within parts of words. Most IMP
compiler
In computing, a compiler is a computer program that Translator (computing), translates computer code written in one programming language (the ''source'' language) into another language (the ''target'' language). The name "compiler" is primaril ...
s offer compiler-generated
runtime checks and a
stack trace (backtrace) facility by default, even in production code. IMP allows
inline assembler
In computer programming, an inline assembler is a feature of some compilers that allows low-level code written in assembly language to be embedded within a program, among code that otherwise has been compiled from a high-level language, higher-leve ...
machine language instructions in
source code
In computing, source code, or simply code or source, is a plain text computer program written in a programming language. A programmer writes the human readable source code to control the behavior of a computer.
Since a computer, at base, only ...
.
The ERCC Implementation of IMP for the
ICL System 4 (known as IMP9) offered a syntax-driven macro facility (designed by Alan Freeman) that was similar to the
Compiler Compiler features offered by IMP's predecessor,
Atlas Autocode.
Early IMP compilers were developed for the
English Electric KDF9,
ICL System 4,
UNIVAC 1108,
IBM System/360
The IBM System/360 (S/360) is a family of mainframe computer systems announced by IBM on April 7, 1964, and delivered between 1965 and 1978. System/360 was the first family of computers designed to cover both commercial and scientific applicati ...
, DEC
PDP-9, DEC
PDP-15 and
CTL Modular One computers. IMP was used to implement the
Edinburgh Multiple Access System (EMAS)
operating system
An operating system (OS) is system software that manages computer hardware and software resources, and provides common daemon (computing), services for computer programs.
Time-sharing operating systems scheduler (computing), schedule tasks for ...
, and a compiler was written for the
ICL 2900 series to allow porting of EMAS to that
platform. In later years, a version of IMP named 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
x86 (also known as 80x86 or the 8086 family) is a family of complex instruction set computer (CISC) instruction set architectures initially developed by Intel, based on the 8086 microprocessor and its 8-bit-external-bus variant, the 8088. Th ...
hardware running
DOS,
Windows
Windows is a Product lining, product line of Proprietary software, proprietary graphical user interface, graphical operating systems developed and marketed by Microsoft. It is grouped into families and subfamilies that cater to particular sec ...
, and
Linux
Linux ( ) is a family of open source Unix-like operating systems based on the Linux kernel, an kernel (operating system), operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically package manager, pac ...
, and is once again in use by Edinburgh graduates and ex-pats.
The diverged IMP and IMP77 were later consolidated into one 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 syntax-
extensible programming language developed by
Edgar T. Irons, for the
CDC 6600, which was the main language used by the
National Security Agency
The National Security Agency (NSA) is an intelligence agency of the United States Department of Defense, under the authority of the director of national intelligence (DNI). The NSA is responsible for global monitoring, collection, and proces ...
(NSA) for many years.
See also
*
IMP (programming language) (contrast)
Sources
*
*
*
*
*
*
ASCII version
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
References
*
{{ALGOL programming
History of computing in the United Kingdom
Science and technology in Edinburgh
Systems programming languages
University of Edinburgh School of Informatics