IMP (programming language): Difference between revisions

Content deleted Content added
Template:Infobox programming language add, parameters: fill, WP:LINKs add.
WP:LINKs: updates, adds, fix-cut needless WP:PIPEs (WP:NOPIPEs). Small WP:EoS WP:TERSE WP:COPYEDITs: clarify. MOS:FIRSTABBReviations define before WP:ABBRs. Nonlead-word nonproper noun MOS:CAPS MOS:HEADings-MOS:HEADCAPS, nonacronym proper noun WP:ALLCAPS > sentence case. Plain text list > WP:CITation Template:Cite journals, parameters: add, fill. WP:NAVBOX add.
Line 27:
| influenced =
}}
'''IMP''' is an early [[systemsSystems (programming)|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 programming languages, IMP was ansupports [[:Category:Extensible syntaxSyntax (programming languages)|syntax]]-[[extensible syntax programming language]].
 
Even though its designer refers to the language as "being based on [[ALGOL]]", IMP excludes many ''defining'' features of that language, while supporting a very non-ALGOL-like one: syntax extensibility.
 
A [[compiler]] for IMP existed as early as 1965 and was used forto programmingprogram the [[CDC 6600]] 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]], [[Cray]], [[PDP-10]] and [[PDP-11]] computers. Important IMP versions were '''IMP65''', '''IMP70''', and '''IMP72'''.
 
==Extensible syntax in IMP72==
Being an [[:Category:Extensible syntax programming languages|extensible syntax programming language]], IMP allows thea programmer to extend its syntax, although no specific means are provided to add new datatypes[[data type]]s 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]] (BNF) productions to the graph.
 
IMP72's syntax is extended by means of extended-BNF ''syntax statements'' included in a [[source code]] 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 (computer science)|macro]] to the casual user.
 
Basically, the syntax statement is an augmented BNF production with associated [[Semantics (computer science)|semantics]] added on the right:
<source lang="abnf">
<class> ::= syntax-part ::= semantic-part
Line 56:
<ATOM> ::= ABS ( <ATOM,A> ) ::= DEWOP(214B,AREG1(1,13),A)
</source>
The semantic part of this statement consists of a call on the semantic routine <code>DEWOP</code>. The arguments are the octal constant <code>214B</code>, the semantic routine call <code>AREG1(1,13)</code>, and <code>A</code>, which is the object on top of the stack at the moment this production is invoked. <code>DEWOP</code> 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 specific example, the opcode <code>214B</code> designates the <code>Load Magnitude</code> instruction, and thus the result of the above syntax statement will be to compile code to compute the absolute value of <code>A</code>.
 
==Folklore Operatingoperating Systemsystem==
IMP was the language used on NSA's homegrown [[time-sharing]] [[operating system]] named ''Folklore''.<ref>{{cite web |last=Cotter |first=George |title=High-Performance Computing at the National Security Agency |url=http://publishing.cdlib.org/ucpressebooks/view?docId=ft0f59n73z&chunk.id=d0e12339&toc.depth=1&toc.id=d0e12308&brand=ucpress |work=Frontiers of Supercomputing II |publisher=UNIVERSITYUniversity OFof CALIFORNIACalifornia Press PRESS|accessdateaccess-date=25 May 2012}}</ref>
IMP was the language used on [[NSA]]'s homegrown [[time-sharing]] system known as '''Folklore'''.
<ref>{{cite web|last=Cotter|first=George|title=High-Performance Computing at the National Security Agency|url=http://publishing.cdlib.org/ucpressebooks/view?docId=ft0f59n73z&chunk.id=d0e12339&toc.depth=1&toc.id=d0e12308&brand=ucpress|work=Frontiers of Supercomputing II|publisher=UNIVERSITY OF CALIFORNIA PRESS|accessdate=25 May 2012}}</ref>
 
==See also==
* [[Edinburgh IMP programming]] language]] (contrast)
 
==References==
{{Reflist}}
*{{Cite ''journal |last=Irons |first=Edgar T. |date=January 1970 |title=Experience with an Extensible Language'', Irons|journal=[[Communications E.T.,of '''CACM''',the Vol.ACM]] (CACM) |volume=13, No. |issue=1, January|publisher=[[Association 1970.for Computing Machinery]]}}
*{{Cite ''journal |last=Bilofsky |first=Walter |date=May 1974 |title=Syntax Extension and the IMP72 Programming Language'', Walter|journal=SIGPLAN Bilofsky,Notices Yale|publisher=[[Association University,for '''SIGPLANComputing Notices''',Machinery]] May|via=Yale 1974.University}}
 
==External links==
* [https://www.saildart.org/IMP.BO%5B11,DOC%5D1 PDP-10 IMP72 Reference Manual]
* [http://pdp-10.trailing-edge.com/decuslib10-03/index.html IMP72 Sources] <nowiki>(dcus:[43,50306]*.*)</nowiki>
 
{{ALGOL programming}}
 
{{DEFAULTSORT:Imp Programming Language}}