Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Edinburgh IMP
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Systems programming language used in the EMAS operating system}} {{Use dmy dates|date=April 2022}} {{Infobox programming language | name = Edinburgh IMP | logo = <!-- Filename only --> | logo caption = | screenshot = <!-- Filename only --> | screenshot caption = | paradigms = [[Procedural programming|Procedural]], [[Imperative programming|imperative]], [[Structured programming|structured]] | family = [[ALGOL]] | designers = Bratley, Whitfield, M. M. Barritt, David Rees, Peter D. Schofield, Roderick McLeod, [[Hamish Dewar]], Peter D. Stephens, Peter Robertson | developer = [[University of Edinburgh]] | released = {{Start date and age|1966}}<!-- If known, add |mm|dd|df=yes --> | latest release version = | latest release date = <!-- {{Start date and age|201y|mm|dd|df=yes}} --> | typing = [[Static type|Static]], [[Strong and weak typing|strong]] | scope = [[Scope (computer science)|Lexical]] | programming language = [[Atlas Autocode]], IMP | platform = [[English Electric KDF9]],<br />[[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 (operating system)|Nova]] | operating system = [[BOS/360]], [[DOS]], [[Windows]], [[Linux]] | license = | file ext = | file format = <!-- or: | file formats = --> | website = <!-- {{URL|www.example.com}} --> | implementations = Edinburgh IMP | dialects = IMP77, IMP80 | influenced by = [[ALGOL 60]], [[Atlas Autocode]] | influenced = }} '''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 (programming)|block]] structure, [[reserved word]]s (keywords), and [[data type]]s such as [[Array data type|arrays]], and [[Record (computer science)|records]]. It adds to ALGOL-style languages a [[String (computer science)|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]]s offer compiler-generated [[Runtime (program lifecycle phase)|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 [[Computing platform|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 [[Software portability|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 (programming language)|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== *{{cite web |url=http://history.dcs.ed.ac.uk/archive/apps/quine/self.txt |title=Early IMP Program (the world's first known self-reproducing program)}} *{{cite web |url=http://imp.nb-info.co.uk/download.htm |title=IMP77 Compiler: Intel (Windows, Linux) |url-status=dead |archive-url=https://web.archive.org/web/20050407092209/http://imp.nb-info.co.uk/download.htm |archive-date=2005-04-07 |access-date=2020-05-05}} *{{cite web |last=Freeman |first=Alan |url=https://gtoal.com/edinburgh-computer-history-project/archive/languages/imp/ImpMacros.pdf |title=The IMP Macro Language Manual}} *{{cite web |last=Freeman |first=Alan |url=https://history.dcs.ed.ac.uk/archive/os/emas/users/ercc07/emas-2900/macros.txt |title=An example of IMP Macros in use}} *{{cite web |last=McLeod |first=Roderick |date=1974 |url=http://history.dcs.ed.ac.uk/archive/scans/ercc_imp_manual/imp001.html |title=Edinburgh IMP Language Manual, Second edition, scan}} *{{cite web |first=Peter S. |last=Robertson |date=December 1977 |url=http://imp.nb-info.co.uk/imp77.pdf |title=The IMP77 Language: A Reference Manual (rekeyed 2003) |website=Edinburgh Computer History Project |publisher=University of Edinburgh |url-status=dead |archive-url=https://web.archive.org/web/20050529121643/http://imp.nb-info.co.uk/imp77.pdf |archive-date=2005-05-29}} ([http://history.dcs.ed.ac.uk/archive/dec10/imp/3b35b.mem.html ASCII version]) *{{cite web |url=http://frink.ucg.ie/~bfoley/edhist/using77/using77.html |title=Using Imp77}} *{{cite web |url=http://history.dcs.ed.ac.uk/archive/docs/psrthesis/psrthesis.html |title=The Production of Optimised Machine Code for High Level Languages using Machine-Independent Intermediate Codes}} *{{cite web |url=http://www.gtoal.com/athome/edinburgh/imp77/gtoal/icode.html |archive-url=https://web.archive.org/web/20041216161503/http://www.gtoal.com/athome/edinburgh/imp77/gtoal/icode.html |url-status=dead |archive-date=2004-12-16 |title=I-Code V1.3 Working Notes}} *{{cite web |url=http://history.dcs.ed.ac.uk/archive/os/emas/users/ercm10/imp11manual.html |title=IMP11 User's Guide}} *{{cite web |last=Farvis |first=Keith M. |date=June 1978 |url=http://history.dcs.ed.ac.uk/archive/dec10/imp/3b35c.mem.html |title=IMP on the DECsystem-10/20: Users Guide (Library Manual)}} *{{cite web |last=Stephens |first=Felicity |last2=Murison |first2=John |url=http://history.dcs.ed.ac.uk/archive/os/emas/emas2/compilers/imp80/doc/manual/imp80.html |title=Edinburgh IMP80 Language Manual}} *{{cite web |author=Bratley |author2=Rees |author3=Schofield |author4=Whitfield |date=1965 |url=http://history.dcs.ed.ac.uk/archive/languages/atlas-autocode/imp9.imp.txt |title=Source of first ever IMP compiler; for English Electric KDF9}} *{{cite web |last=Dewar |first=Hamish |url=http://history.dcs.ed.ac.uk/archive/languages/imp-pdp15/hdcomp-emul.i15.html |title=IMP compiler for PDP9/PDP15 (source code)}} *{{cite web |url=http://history.dcs.ed.ac.uk/archive/languages/imp-pdp15/windows_port/ |title=Windows Port of IMP15 (generates stand-alone .exe files)}} *{{cite web |last=Dewar |first=Hamish Notes on |url=http://history.dcs.ed.ac.uk/archive/languages/imp-pdp15/CompilerOutput.htm |title=IMP9 Compiler Output}} *{{cite web |last=Rees |first=David |url=https://gtoal.com/history.dcs.ed.ac.uk/archive/languages/skimp/skimp_ii.html |title=Skimp MkII compiler (used in 3rd year compilers class at University of Edinburgh)}} *{{cite web |url=http://history.dcs.ed.ac.uk/archive/languages/imp11-tmp/imp11/sk11v.imp |title=IMP compiler for PDP11 bootstrapped via Skimp (source code)}} *{{cite web |date=1970 |url=http://history.dcs.ed.ac.uk/archive/languages/imp/allimpc1.txt |title=Source of first IMP compiler written entirely in IMP}} *{{cite web |last=Dewar |first=Hamish |url=http://www.gtoal.com/athome/utils/imp/imp22g-orig.imp.html |archive-url=https://web.archive.org/web/20031127081153/http://www.gtoal.com/athome/utils/imp/imp22g-orig.imp.html |url-status=dead |archive-date=2003-11-27 |title=Source of IMP compiler for 68000 platform}} *{{cite web |last=Robertson |first=Peter |url=http://history.dcs.ed.ac.uk/archive/languages/imp77 |title=Sources of Imp77 compilers for several platforms}} *{{cite web |last=Stephens |first=Peter D. |url=http://history.dcs.ed.ac.uk/archive/languages/imp80-tmp/imp/isrce-orig/rs6p422.i |title=Source of Imp80 compiler for Intel}} *{{cite web |last=Schofield |first=Peter D. |url=http://history.dcs.ed.ac.uk/archive/docs/Notes_on_IMP_Programming/ |title=Notes on IMP Programming}} *{{cite web |last=Stephens |first=Peter D. |url=http://history.dcs.ed.ac.uk/history/ImpLanguageAndCompiler |title=The IMP Language and Compiler (extracts) |url-status=dead |archive-url=https://web.archive.org/web/20060924014216/http://history.dcs.ed.ac.uk/history/ImpLanguageAndCompiler |archive-date=2006-09-24}} *{{cite web |last=Stephens |first=Peter D. |url=http://history.dcs.ed.ac.uk/history/Imp80 |title=IMP80: A Historical Introduction |url-status=dead |archive-url=https://web.archive.org/web/20041207140202/http://history.dcs.ed.ac.uk/history/Imp80 |archive-date=2004-12-07}} *{{cite web |last=Murison |first=John M. |url=http://history.dcs.ed.ac.uk/archive/docs/imp9toimp80.html |title=Differences between ERCC IMP on ICL 4/75 and IMP80 on ICL2900}} ==References== * {{cite web |last=McLeod |first=Roderick |last2=Barritt |first2=Marjorie M. |publication-date=1974 |url=http://www.ancientgeek.org.uk/EMAS/EMAS_Manuals/IMP/Edinburgh_IMP_Language_Manual.pdf |date=July 1970 |title=Edinburgh IMP Language Manual, Second edition |publisher=University of Edinburgh, Edinburgh Regional Computing Centre}} <!-- ==External links== --> {{ALGOL programming}} [[Category:History of computing in the United Kingdom]] [[Category:Science and technology in Edinburgh]] [[Category:Systems programming languages]] [[Category:University of Edinburgh School of Informatics]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:ALGOL programming
(
edit
)
Template:Cite web
(
edit
)
Template:Infobox programming language
(
edit
)
Template:Short description
(
edit
)
Template:Use dmy dates
(
edit
)