Short description: Systems programming language used in the EMAS operating system
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 appeared | 1966; 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.
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
- IMP (programming language) (contrast)
Sources
- "Early IMP Program (the world's first known self-reproducing program)". http://history.dcs.ed.ac.uk/archive/apps/quine/self.txt.
- "IMP77 Compiler: Intel (Windows, Linux)". http://imp.nb-info.co.uk/download.htm.
- Freeman, Alan. "The IMP Macro Language Manual". https://gtoal.com/edinburgh-computer-history-project/archive/languages/imp/ImpMacros.pdf.
- Freeman, Alan. "An example of IMP Macros in use". https://history.dcs.ed.ac.uk/archive/os/emas/users/ercc07/emas-2900/macros.txt.
- McLeod, Roderick (1974). "Edinburgh IMP Language Manual, Second edition, scan". http://history.dcs.ed.ac.uk/archive/scans/ercc_imp_manual/imp001.html.
- Robertson, Peter S. (December 1977). "The IMP77 Language: A Reference Manual (rekeyed 2003)". University of Edinburgh. http://imp.nb-info.co.uk/imp77.pdf. (ASCII version)
- "Using Imp77". http://frink.ucg.ie/~bfoley/edhist/using77/using77.html.
- "The Production of Optimised Machine Code for High Level Languages using Machine-Independent Intermediate Codes". http://history.dcs.ed.ac.uk/archive/docs/psrthesis/psrthesis.html.
- "I-Code V1.3 Working Notes". http://www.gtoal.com/athome/edinburgh/imp77/gtoal/icode.html.
- "IMP11 User's Guide". http://history.dcs.ed.ac.uk/archive/os/emas/users/ercm10/imp11manual.html.
- Farvis, Keith M. (June 1978). "IMP on the DECsystem-10/20: Users Guide (Library Manual)". http://history.dcs.ed.ac.uk/archive/dec10/imp/3b35c.mem.html.
- Stephens, Felicity; Murison, John. "Edinburgh IMP80 Language Manual". http://history.dcs.ed.ac.uk/archive/os/emas/emas2/compilers/imp80/doc/manual/imp80.html.
- Bratley; Rees (1965). "Source of first ever IMP compiler; for English Electric KDF9". http://history.dcs.ed.ac.uk/archive/languages/atlas-autocode/imp9.imp.txt.
- Dewar, Hamish. "IMP compiler for PDP9/PDP15 (source code)". http://history.dcs.ed.ac.uk/archive/languages/imp-pdp15/hdcomp-emul.i15.html.
- "Windows Port of IMP15 (generates stand-alone .exe files)". http://history.dcs.ed.ac.uk/archive/languages/imp-pdp15/windows_port/.
- Dewar, Hamish Notes on. "IMP9 Compiler Output". http://history.dcs.ed.ac.uk/archive/languages/imp-pdp15/CompilerOutput.htm.
- Rees, David. "Skimp MkII compiler (used in 3rd year compilers class at University of Edinburgh)". http://frink.ucg.ie/~bfoley/edhist/skimp_ii/skimp_ii.html.
- "IMP compiler for PDP11 bootstrapped via Skimp (source code)". http://history.dcs.ed.ac.uk/archive/languages/imp11-tmp/imp11/sk11v.imp.
- "Source of first IMP compiler written entirely in IMP". 1970. http://history.dcs.ed.ac.uk/archive/languages/imp/allimpc1.txt.
- Dewar, Hamish. "Source of IMP compiler for 68000 platform". http://www.gtoal.com/athome/utils/imp/imp22g-orig.imp.html.
- Robertson, Peter. "Sources of Imp77 compilers for several platforms". http://history.dcs.ed.ac.uk/archive/languages/imp77.
- Stephens, Peter D.. "Source of Imp80 compiler for Intel". http://history.dcs.ed.ac.uk/archive/languages/imp80-tmp/imp/isrce-orig/rs6p422.i.
- Schofield, Peter D.. "Notes on IMP Programming". http://history.dcs.ed.ac.uk/archive/docs/Notes_on_IMP_Programming/.
- Stephens, Peter D.. "The IMP Language and Compiler (extracts)". http://history.dcs.ed.ac.uk/history/ImpLanguageAndCompiler.
- Stephens, Peter D.. "IMP80: A Historical Introduction". http://history.dcs.ed.ac.uk/history/Imp80.
- Murison, John M.. "Differences between ERCC IMP on ICL 4/75 and IMP80 on ICL2900". http://history.dcs.ed.ac.uk/archive/docs/imp9toimp80.html.
References
- McLeod, Roderick; Barritt, Marjorie M. (July 1970). "Edinburgh IMP Language Manual, Second edition". University of Edinburgh, Edinburgh Regional Computing Centre. http://www.ancientgeek.org.uk/EMAS/EMAS_Manuals/IMP/Edinburgh_IMP_Language_Manual.pdf.
ALGOL programming |
|---|
| Implementations | Technical standards |
- ALGOL 58
- ALGOL 60
- ALGOL 68
|
|---|
| Dialects |
- ABC ALGOL
- ALCOR
- ALGOL N
- ALGOL W
- ALGOL X
- Burroughs ALGOL
- Dartmouth ALGOL 30
- DASK ALGOL
- DG/L
- Elliott ALGOL
- Executive Systems Problem Oriented Language (ESPOL)
- Kidsgrove Algol
- Mary
- S-algol, PS-algol, Napier88
- Small Machine ALGOL Like Language (SMALL)
- SMIL ALGOL
|
|---|
|
|---|
| Community | | Organizations | Professional associations |
- ALCOR Group
- Association for Computing Machinery (ACM)
- International Federation for Information Processing (IFIP) IFIP Working Group 2.1
|
|---|
| Business |
- Burroughs Corporation
- Elliott Brothers
- Regnecentralen
|
|---|
| Education |
- Case Institute of Technology
- University of Edinburgh
- University of St Andrews
- Manchester University
- Massachusetts Institute of Technology (MIT)
- Society of Applied Mathematics and Mechanics (GAMM)
|
|---|
|
|---|
| People | | ALGOL 58 |
- John Backus
- Hermann Bottenbruch
- Charles Katz
- Alan Perlis
- Heinz Rutishauser
- Klaus Samelson
- Joseph Henry Wegstein
|
|---|
| ALGOL 60 |
- Backus+
- Roland Carl Backhouse
- Friedrich L. Bauer
- Richard Bird
- Stephen R. Bourne
- Robert Dewar
- Edsger W. Dijkstra
- Andrey Ershov
- Robert W. Floyd
- Jeremy Gibbons
- Julien Green
- David Gries
- Eric Hehner
- Tony Hoare
- Katz+
- Peter Landin
- Tom Maibaum
- Conor McBride
- John McCarthy
- Carroll Morgan
- Peter Naur
- Maurice Nivat
- Perlis+
- Brian Randell
- Rutishauser
- Samelson+
- Jacob T. Schwartz
- Micha Sharir
- David Turner
- Bernard Vauquois
- Eiiti Wada
- Wegstein+
- Adriaan van Wijngaarden
- Michael Woodger
- + = full name and link in prior ALGOL version above
|
|---|
| ALGOL 68 |
- Bauer+
- Dijkstra+
- Gerhard Goos
- Hoare+
- Cornelis H. A. Koster
- Peter Landin
- Charles H. Lindsey
- Barry J. Mailloux
- McCarthy+
- Lambert Meertens
- Naur+
- John E. L. Peck
- Willem van der Poel
- Brian Randell
- Douglas T. Ross
- Samelson+
- Michel Sintzoff
- van Wijngaarden
- Niklaus Wirth
- Woodger+
- Nobuo Yoneda
- + = full name and link in prior ALGOL version above
|
|---|
- Hal Abelson
- Tony Brooker
- Jørn Jensen
- Ron Morrison
- John C. Reynolds
|
|---|
|
|---|
| Other |
ALGOL Bulletin
Jensen's Device
|
|---|
Category
Category
|
 | Original source: https://en.wikipedia.org/wiki/Edinburgh IMP. Read more |