|Paradigm||procedural, imperative, structured|
PL/C was developed with the specific goal of being used for teaching programming. It is based on IBM's PL/I language. Work on this project was based on a prior Cornell compiler for a language named CUPL (Cornell University Programming Language). PL/C was widely used in college-level programming courses because of its avoidance of a known problem named "Cascading Diagnostics", wherein one error is "fixed" by the compiler, resulting in a secondary, tertiary and additional series of error messages.
The two researchers and academic teachers who designed PL/C were Richard W. Conway and Thomas R. Wilcox. They submitted the famous article "Design and implementation of a diagnostic compiler for PL/I" published in the Communications of ACM in March 1973, pages 169-179.
PL/C. which is a subset of PL/I, eliminated some of the more complex features of PL/I, and added extensive debugging and error recovery facilities. A program that runs without error under the PL/C compiler should run under PL/I and produce the same results, unless certain incompatible diagnostic features, such as a macro section (begun by a $MACRO statement and finished by a $MEND statement), were used. The PL/C compiler had the unusual capability of never failing to compile any program, through the use of extensive automatic correction of many syntax errors and by converting any remaining syntax errors to output statements.
PL/C handles floating point arithmetic by computing all single-precision values as double precision, which can complicate attempts by the programmer to validate rounding behavior of particular computations.
- David Gries (2015-07-31). "A Conversation with Richard W. Conway".
- R.W. Conway; D. Gries (1975). An introduction to programming: A structured approach using PL/1 and PL/C-7. Cambridge, Mass.: Winthrop Publishers. ISBN 0-87626-410-0.
- Hull, T.E. (1977). "Semantics of floating point arithmetic and elementary functions". In Cowell, Wayne (ed.). Portability of numerical software. Berlin: Springer-Verlag. p. 42. ISBN 0-387-08446-0. OCLC 3311037.