Pli Language

PL/I is a ProgrammingLanguage developed as part of the IBM 360 project, designed by the IBM laboratory at Hursley Park in England in the early 1960s, as an outgrowth of the NPL language.

PL/I was intended to accompany the IBM (InternationalBusinessMachines) System/360 (IbmSystemThreeSixty) line of MainframeComputers. Thus PL/I was intended to replace commercially oriented COBOL (CobolLanguage), scientifically oriented FORTRAN (FortranLanguage), and academic-and-scientifically oriented Algol (AlgolSixty). So, PL/I has features from all of these, extending or enhancing many.


Although regarded as generally block-structured, PL/I retained--and enhanced--the now-reviled goto, allowing alphanumeric names, and allowing it to exit arbitrarily-nested blocks. The PL/I Optimizing Compiler (PliOpt?) from IBM in the early 1970s added a select statement as a switch or case-construct to the language. PL/I remained as WeaklyTyped as FORTRAN and COBOL, except for self-describing arrays and varying-length character strings. IBM developed its symbolic-debugging PL/I Checkout Compiler (PliCkt?) as a work-around on a grand scale for the weak typing. PL/I also introduced features then new to high-level languages, notably ExceptionHandling, programmer control of storage allocation and deallocation, and dynamic program loading (PliOpt? and PliCkt? only). Its explicit multitasking features and data addressing via explicit pointer variables may also have been firsts. With discipline, PL/I can be a very effective language for StructuredProgramming and ModularProgramming (but see contrary opinion below by Dijkstra).

PL/I was adopted as a U.S. standard by Technical Committee X3J1 of the American National Standards Committee in the late 1970s, apparently minus the select statement.

Released at a time when the installed memory for MainframeComputers was comparable to 80286 MicroComputers (e.g.: IBM PC AT) gathering dust in many of today's closets, the full PL/I-F compiler (version 5 in 1971) would run in less than 40 KB (forty kilobytes, not a typo for four hundred) of memory, albeit using approximately 90 compiler phases (ninety, not a typo for nine; the numbers 88 and 92 stick in my mind as candidates for the actual number). At the campus computer center of one large (U.S.) state's premier university, the main memory (a.k.a. RAM) commonly used for smallish PL/I compilations was only 128KB (1/8 MB)--and that was full PL/I, in all its elephantine glory!

PL/I is still in use today on InternationalBusinessMachines MainframeComputers, usually running MVS. It is also popular on some VAX/VMS machines (see VmsOperatingSystem). 2 PL/I subsets were also available on the Univac 1100 systems in the late 1970s: 1 for teaching (known as PLUM), and 1 for commercial use.

Programming-language derivatives of PL/I are discussed in CategoryPli.

Trivia At first it was called NPL: New programming Language.

The legend goes that IBM registered PL/1, PL/2, PL/3, ... PL/99 as trademarks, but there's no evidence for this. The U.S. PTO doesn't have any record that IBM ever had a trademark for "PL/I", "PL/1", or "PL/2".

PL/I received substantial attention from the academic and software-engineering community in the late 1960s and 1970s:

George Radin and H. Paul Rogoway: "NPL: Highlights of A New Programming Language". Communications of the ACM, 8(1), pp. 9-17, January 1965.

F.J. Corbato: "PL/I as a Tool for Systems Programming", Datamation, Volume 15, Number 5, May, 1969.

M. Donald MacLaren?: "Tasking in standard PL/I". ACM SIGPLAN Notices, 8(9), pp. 104-108, September 1973.

M. Donald MacLaren?: "Exception handling in PL/I". ACM SIGPLAN Notices, 12(3), pp. 101-104, March 1977.

G. Radin: "The early history and characteristics of PL/I". ACM SIGPLAN Notices, 13(8), pp. 227-241, August 1978; Also same author and title: ACM SIGPLAN Notices, 18(6), pp. 551-599, June 1981.

Alas, I suppose if one were to create a Wiki entry, e.g.: SigPlan? or SigplanNotices?, for the influential but unrefereed Association of Computing Machinery periodical SIGPLAN Notices, someone would append a note griping about namespace bloating. --ClayPhipps

Its possible that some other programming languages beat PL/I to some of the firsts claimed above as innovations. BurroughsAlgolLanguage?, in which systems programming for the Burroughs 5000, 6000, and 7000 series was done, may have had some of PL/I's features. BcplLanguage, an otherwise plausible candidate, wasn't finished until 1967: after PL/I had been out for maybe 2 years. However, BCPL's predecessor: CplLanguage, clearly predates both, it being described in a 1963 paper.

PL/I is a block structured language, so some claim it is in the AlgolFamily. This strikes others like claiming that the monster in Frankenstein's lab is a member of the Frankenstein family.

PL/I for OpenVMS is available and supported by Kednos Corp,

Of PL/I, the famously firebreathing computer scientist Edsger Dijkstra (EwDijkstra) wrote in 1972: "Using PL/I must be like flying a plane with 7000 buttons, switches, and handles to manipulate in the cockpit. I absolutely fail to see how we can keep our growing programs firmly within our intellectual grip when by its sheer baroqueness, the programming language--our basic tool, mind you!--already escapes our intellectual control. And if I have to describe the influence PL/I can have on its users, the closest metaphor that comes to my mind is that of a drug." [original typescript made accessible (after the fact) as, p. 9; published in CACM vol. 15 num. 10]

CategoryProgrammingLanguage CategoryPli

EditText of this page (last edited September 18, 2007) or FindPage with title or text search