Edinburgh IMP

Last updated

Edinburgh IMP
Paradigms Procedural, imperative, structured
Family ALGOL
Designed by Bratley, Whitfield, M. M. Barritt, David Rees, Peter D. Schofield, Roderick McLeod, Hamish Dewar, Peter D. Stephens, Peter Robertson
Developer University of Edinburgh
First appeared1966;58 years ago (1966)
Typing discipline Static, strong
Scope Lexical
Implementation language Atlas Autocode, IMP
Platform 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
OS BOS/360, DOS, Windows, Linux
Major implementations
Edinburgh IMP
Dialects
IMP77, IMP80
Influenced by
ALGOL 60, Atlas Autocode

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.

Contents

Expressively, IMP is highly similar to ALGOL and includes all the ALGOL-style block structure, reserved words (keywords), and data types such as arrays, 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 compilers offer compiler-generated runtime checks and a stack trace (backtrace) facility by default, even in production code. IMP allows inline assembler machine language instructions in source code.

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, DEC PDP-9, DEC PDP-15 and CTL Modular One computers. IMP was used to implement the Edinburgh Multiple Access System (EMAS) operating system, 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 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 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 (NSA) for many years.

See also

Sources

Related Research Articles

<span class="mw-page-title-main">Assembly language</span> Low-level programming language

In computer programming, assembly language, often referred to simply as assembly and commonly abbreviated as ASM or asm, is any low-level programming language with a very strong correspondence between the instructions in the language and the architecture's machine code instructions. Assembly language usually has one statement per machine instruction (1:1), but constants, comments, assembler directives, symbolic labels of, e.g., memory locations, registers, and macros are generally also supported.

<span class="mw-page-title-main">ALGOL</span> Family of programming languages

ALGOL 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 Association for Computing Machinery (ACM) in textbooks and academic sources for more than thirty years.

Atlas Autocode (AA) is a programming language developed around 1963 at the University of Manchester. A variant of the language ALGOL, it was developed by Tony Brooker and Derrick Morris for the Atlas computer. The initial AA and AB compilers were written by Jeff Rohl and Tony Brooker using the Brooker-Morris Compiler-compiler, with a later hand-coded non-CC implementation (ABC) by Jeff Rohl.

CORAL, short for Computer On-line Real-time Applications Language is a programming language originally developed in 1964 at the Royal Radar Establishment (RRE), Malvern, Worcestershire, in the United Kingdom. The R was originally for "radar", not "real-time". It was influenced primarily by JOVIAL, and thus ALGOL, but is not a subset of either.

Pascal is an imperative and procedural programming language, designed by Niklaus Wirth as a small, efficient language intended to encourage good programming practices using structured programming and data structuring. It is named after French mathematician, philosopher and physicist Blaise Pascal.

In computer science, a high-level programming language is a programming language with strong abstraction from the details of the computer. In contrast to low-level programming languages, it may use natural language elements, be easier to use, or may automate significant areas of computing systems, making the process of developing a program simpler and more understandable than when using a lower-level language. The amount of abstraction provided defines how "high-level" a programming language is.

A high-level assembler in computing is an assembler for assembly language that incorporate features found in a high-level programming language.

Pretty-printing is the application of any of various stylistic formatting conventions to text files, such as source code, markup, and similar kinds of content. These formatting conventions may entail adhering to an indentation style, using different color and typeface to highlight syntactic elements of source code, or adjusting size, to make the content easier for people to read, and understand. Pretty-printers for source code are sometimes called code formatters or beautifiers.

The Edinburgh Multi-Access System (EMAS) was a mainframe computer operating system at the University of Edinburgh. The system went online in 1971.

In computer programming, bounds checking is any method of detecting whether a variable is within some bounds before it is used. It is usually used to ensure that a number fits into a given type, or that a variable being used as an array index is within the bounds of the array. A failed bounds check usually results in the generation of some sort of exception signal.

ALGOL 60 is a member of the ALGOL family of computer programming languages. It followed on from ALGOL 58 which had introduced code blocks and the begin and end pairs for delimiting them, representing a key advance in the rise of structured programming. ALGOL 60 was one of the first languages implementing function definitions. ALGOL 60 function definitions could be nested within one another, with lexical scope. It gave rise to many other languages, including CPL, PL/I, Simula, BCPL, B, Pascal, and C. Practically every computer of the era had a systems programming language based on ALGOL 60 concepts.

IMP is an early systems programming language that was developed by Edgar T. Irons in the late 1960s through early 1970s, at the National Security Agency (NSA). Unlike most other systems languages, IMP supports syntax-extensible programming.

<span class="mw-page-title-main">History of programming languages</span> History of languages used to program computers

The history of programming languages spans from documentation of early mechanical computers to modern tools for software development. Early programming languages were highly specialized, relying on mathematical notation and similarly obscure syntax. Throughout the 20th century, research in compiler theory led to the creation of high-level programming languages, which use a more accessible syntax to communicate instructions.

<span class="mw-page-title-main">PERQ</span> First commercially produced personal workstation with a Graphical User Interface

The PERQ, also referred to as the Three Rivers PERQ or ICL PERQ, is a pioneering workstation computer produced in the late 1970s through the early 1980s. It is the first commercially-produced personal workstation with a graphical user interface (GUI). The design of the PERQ was heavily influenced by the original workstation computer, the Xerox Alto, which was never commercially produced. The workstation was conceived by six former Carnegie Mellon University alumni and employees: Brian S. Rosen, James R. Teter, William H. Broadley, J. Stanley Kriz, Raj Reddy and Paul G. Newbury, who formed the startup Three Rivers Computer Corporation (3RCC) in 1974.

KDF9 was an early British 48-bit computer designed and built by English Electric. The first machine came into service in 1964 and the last of 29 machines was decommissioned in 1980 at the National Physical Laboratory. The KDF9 was designed for, and used almost entirely in, the mathematical and scientific processing fields – in 1967, nine were in use in UK universities and technical colleges. The KDF8, developed in parallel, was aimed at commercial processing workloads.

In computer science, automatic programming is a type of computer programming in which some mechanism generates a computer program to allow human programmers to write the code at a higher abstraction level.

Autocode is the name of a family of "simplified coding systems", later called programming languages, devised in the 1950s and 1960s for a series of digital computers at the Universities of Manchester, Cambridge and London. Autocode was a generic term; the autocodes for different machines were not necessarily closely related as are, for example, the different versions of the single language Fortran.

ALGOL 68RS is the second ALGOL 68 compiler written by I. F. Currie and J. D. Morrison, at the Royal Signals and Radar Establishment (RSRE). Unlike the earlier ALGOL 68-R, it was designed to be portable, and implemented the language of the Revised Report.

ECCE (the Edinburgh Compatible Context Editor) is a text editor for computing systems and operating environments that support a command line interface. It is an original command set which is logical and regular. It was written in the 1960s by Hamish Dewar, an experienced Compiler writer and used this skill to design a command-set which could be easily parsed and coded to allow complex commands to be built up. A technique similar to threaded code in the Forth environment. The current ECCE release is licensed under the BSD License, recoded into C and released by Graham Toal in 2007.

References