PL/C

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search
PL/C
Paradigmprocedural, imperative, structured
DeveloperCornell University
First appeared1973 (1973)
Typing disciplinestrong
Influenced by
PL/I

PL/C is an instructional dialect of the PL/I computer programming language, developed at Cornell University in the 1970s.

Overview[edit]

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[1] and Thomas R. Wilcox.[2] 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.

See also[edit]

References[edit]

  1. ^ David Gries (2015-07-31). "A Conversation with Richard W. Conway".
  2. ^ 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.