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.
- Despite contemporary assumptions that the name should be pronounced "Pee-ell One", as in "Programming Language 1", it is actually "Pee-ell Eye".
- Not quite; maybe Radin and everyone else at Hursley sayd "Pee-ell Eye", for all I know, but most of the world has always said "Pee-ell-one", since the 1970s at least, and apparently during the 1960s Freiburghouse Multics PL/I development, too. So it's not about "contemporary" nor about revisionism. And indeed, since it abbreviates "ProgrammingLanguageOne?", that's only natural.
- The logical place to straighten this out would be http://en.wikipedia.org/wiki/PL/I_programming_language, which disagrees with your pronunciation -- I'm not saying they're authoritative on the subject, just that it would be handy to make them so.
- Given that Intel's 1970s PL/M is mnemonic for "Programming Language for Microcomputers" and Prime Computer's 1970s PL/P was mnemonic for "Programming Language for Prime" and Digital Research's 1970s CP/M was mnemonic for "Control Program for Microcomputers"---all establishing a consistent use of / standing for "for"---, it is not too hard to imagine that some people at the time consistently colloquially referred to PL/I (in the "pee ell eye" sense) as "Programming Language for IBM" although this would certainly be contested by the Multics folks who used PL/I (in the "pee ell one" sense) at MIT, GE, and Honeywell. In fact therein may lie the explanation: pee ell eye is IBM-centric whereas pee ell one is eccumenical/nondenominational, especially to Multics. This is not unlike the vigorously-contested divergent pronunciations inside and outside IBM in various communities of: CICS (see eye see ess) versus CICS (kicks) and SQL (ess cue ell) versus SQL ("sequel", the SeQueL to the Square query language). Even in more modern times, the two divergent pronunciations of ATM (ay tee em in 1990s-and-onward telecom industrial usage) versus ATM ("atom" 53-byte AToMs at asynchronous transfer mode's place of origination, Bell Labs, during the 1980s) indicates that insiders/authors/progenitors often refer to an acronym with a wink and a smile, referring to their work by both an official name (suitable for official-sounding defense to the up-the-chain-of-command bureaucracy) and an insider-in-the-know name.
PL/I was intended to accompany the IBM (InternationalBusinessMachines
) System/360 (IbmSystemThreeSixty
) line of MainframeComputer
s. 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
-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?
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
(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
Released at a time when the installed memory for MainframeComputer
s was comparable to 80286 MicroComputer
s (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 MainframeComputer
s, 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
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?
, for the influential but unrefereed Association of Computing Machinery periodical SIGPLAN Notices
, someone would append a note griping about namespace bloating.
s 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, http://www.kednos.com
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 http://www.cs.utexas.edu/users/EWD/ewd03xx/EWD340.PDF
, p. 9; published in CACM
vol. 15 num. 10]