IMP Programming Language
   HOME

TheInfoList



OR:

IMP is an early
systems programming language A system programming language is a programming language used for system programming; such languages are designed for writing system software, which usually requires different development approaches when compared with application software. Edsger ...
that was developed by Edgar T. Irons in the late 1960s through early 1970s, at the
National Security Agency The National Security Agency (NSA) is a national-level 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, collect ...
(NSA). Unlike most other systems languages, IMP supports syntax-
extensible programming Extensible programming is a term used in computer science to describe a style of computer programming that focuses on mechanisms to extend the programming language, compiler and runtime environment. Extensible programming languages, supporting this ...
. Even though , IMP excludes many ''defining'' features of that language, while supporting a very non-ALGOL-like one: syntax extensibility. A
compiler In computing, a compiler is a computer program that translates computer code written in one programming language (the ''source'' language) into another language (the ''target'' language). The name "compiler" is primarily used for programs tha ...
for IMP existed as early as 1965 and was used to program the
CDC 6600 The CDC 6600 was the flagship of the 6000 series of mainframe computer systems manufactured by Control Data Corporation. Generally considered to be the first successful supercomputer, it outperformed the industry's prior recordholder, the IBM ...
time-sharing system, which was in use at the Institute for Defense Analyses since 1967. Although the compiler is slower than comparable ones for non-extensible languages, it has been used for practical production work. IMP compilers were developed for the
CDC 6600 The CDC 6600 was the flagship of the 6000 series of mainframe computer systems manufactured by Control Data Corporation. Generally considered to be the first successful supercomputer, it outperformed the industry's prior recordholder, the IBM ...
, Cray,
PDP-10 Digital Equipment Corporation (DEC)'s PDP-10, later marketed as the DECsystem-10, is a mainframe computer family manufactured beginning in 1966 and discontinued in 1983. 1970s models and beyond were marketed under the DECsystem-10 name, espec ...
and PDP-11 computers. Important IMP versions were IMP65, IMP70, and IMP72.


Extensible syntax in IMP72

Being an extensible syntax programming language, IMP allows a programmer to extend its syntax, although no specific means are provided to add new data types or structures to it. To achieve its syntax-extensibility, IMP uses a powerful parse algorithm based on a syntax graph and several connectivity matrices. The programmer may add new Backus–Naur form (BNF) productions to the graph. IMP72's syntax is extended by means of extended-BNF ''syntax statements'' included in a
source code In computing, source code, or simply code, is any collection of code, with or without comments, written using a human-readable programming language, usually as plain text. The source code of a program is specially designed to facilitate the w ...
program. The mechanism is so powerful, that it allowed the implementation of the language by itself, i.e., by an IMP72 source file consisting entirely of syntax statements, which was input to a trivial compiler which was initially able to translate the simplest case of the syntax statement. There is also a simple form of the syntax statement which looks like a macro to the casual user. Basically, the syntax statement is an augmented BNF production with associated
semantics Semantics (from grc, σημαντικός ''sēmantikós'', "significant") is the study of reference, meaning, or truth. The term can be used to refer to subfields of several distinct disciplines, including philosophy, linguistics and comp ...
added on the right: ::= syntax-part ::= semantic-part For example, to add the construct described by the following BNF: ::= INCREMENT with the semantics that INCREMENT V should translate to V ← V + 1, the programmer would only need to insert the following ''IMP statement'': ::= INCREMENT ::= "A←A+1" The semantic-part can also contain calls to ''semantic routines'', as in the following syntax statement: ::= ABS ( ) ::= DEWOP(214B,AREG1(1,13),A) The semantic part of this statement consists of a call on the semantic routine DEWOP. The arguments are the octal constant 214B, the semantic routine call AREG1(1,13), and A, which is the object on top of the stack at the moment this production is invoked. DEWOP is a semantic routine which respectively takes as its arguments a PDP-10 machine language opcode, a register object, and any other object, and produces an object whose value is the result of executing the designated machine instruction using as address field the object which is its last argument. In this example, the opcode 214B designates the Load Magnitude instruction, and thus the result of the above syntax statement will be to compile code to compute the absolute value of A.


Folklore operating system

IMP was the language used on NSA's homegrown
time-sharing In computing, time-sharing is the sharing of a computing resource among many users at the same time by means of multiprogramming and multi-tasking.DEC Timesharing (1965), by Peter Clark, The DEC Professional, Volume 1, Number 1 Its emergence ...
operating system An operating system (OS) is system software that manages computer hardware, software resources, and provides common services for computer programs. Time-sharing operating systems schedule tasks for efficient use of the system and may also i ...
named ''Folklore''.


See also

*
Edinburgh IMP Edinburgh IMP is a development of Atlas Autocode, initially developed around 1966-1969 at the University of Edinburgh, Scotland. It is a general-purpose programming language which was used heavily for systems programming. Expressively, IMP is hi ...
language (contrast)


References

* *


External links


PDP-10 IMP72 Reference Manual

IMP72 Sources
(dcus: 3,50306.*) {{DEFAULTSORT:Imp Programming Language Extensible syntax programming languages Systems programming languages National Security Agency