PL/C is an instructional dialect of the programming language PL/I, developed at the Department of Computer Science of Cornell University in the early 1970s in an effort headed by Professor Richard W. Conway and graduate student Thomas R. Wilcox. PL/C was developed with the specific goal of being used for teaching programming. The PL/C compiler, which implemented almost all of the large PL/I language, had the unusual capability of never failing to compile a program, through the use of extensive automatic correction of many syntax errors and by converting any remaining syntax errors to output statements. This was important because, at the time, students submitted their programs on

IBM punch cards and might not get their output back for several hours. Similarly, a mid-late-1970s survey of programming languages said that "PL/C is a widely used dialect of PL/I."

Origins and rationale

[[Image:Cornell Engineering Quad in rain 1998.jpg|thumb|right|PL/C came from Cornell University's Department of Computer Science, located in Upson Hall on the Engineering Quadrangle While PL/I did have a foothold in educational use, Indeed, this simile would be made explicit; as one university would explain to their computer center users, "PL/C is to PL/I what WATFOR is to FORTRAN IV, a fast compile-and-go system with some batching capabilities intended primarily for student use."

IBM supplied some of the funding for the initial PL/C development effort, which took place during 1968 and 1969, with the "C" in the name standing for Cornell. PL/C began being used on a regular basis in September 1970. The only exception is if certain incompatible diagnostic features of PL/C 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 provided extensions to PL/I's own <code>CHECK</code> facility for flow tracing, and additionally provided new facilities, such as the <code>PUT ALL;</code> and <code>PUT ARRAY;</code> statements for printing the values of every scalar and every array variable at that point in the program.

A simple example of PL/C's error repair has been presented as: And PL/C was the only PL/I educational dialect mentioned in languages expert Jean E. Sammet's extensive survey of programming languages in use for 1976–77. The design of the intermediate language used between the passes and of the accompanying symbol table was tailored towards, and key to the achievement of, the error-repair and diagnostic reporting capabilities of PL/C.

The compilation speed of PL/C was quite good – some 10,000–20,000 sources lines of code per minute on an IBM System/360 Model 65. It ran on the IBM System/360 and System/370 under OS and HASP. This amount was $1,800 as of 1972, in 1970–71 alone, it was sent to 100 different institutions, resulting in 60 of them purchasing it. There was also some interest in PL/C from non-academic entities, thus resulting in PL/C adding support for some business-oriented features such as PICTURE variables.

Some universities, including Washington State University, found success in teaching an introductory class that used PL/C first and then Fortran (using WATFIV) second, which was found to be a beneficial order in terms of student learning. Indeed, Cornell at one point restructured their introductory course offering to allow students the option to do that.

PL/C release numbers were to some extent synchronized to releases of the IBM PL/I F compiler, so that for instance Release 4 of PL/C was intended to match Version 4 of the IBM F compiler in terms of upward compatibility. Release 7.1 in March 1975; and Release 7.5 in March 1976.

Variants

Within the computer science department at Cornell there was a sense of pride about PL/C being associated with the university, and there were several variants of PL/C worked on by Conway, other faculty members, and graduate students.

In 1974, the PL/CT variant of PL/C, for use on interactive terminals rather than in batch job submissions, was first made available at Cornell. and then it was made available to outside institutions in 1976.

A variant under development by 1976 was PL/CS, which was a far more restricted subset of PL/I than regular PL/C and which provided direct language support for assertions. The subset was enough, however, that PL/CS would still be suitable for teaching introductory programming classes.

A different implementation of the PL/CS definition came with Professor Tim Teitelbaum and his pioneering Cornell Program Synthesizer work. This early instance of an integrated development environment was developed in 1978 for the PDP-11/60, and contained a structured editor for PL/CS along with an incremental compiler as well as an interpreter. The Cornell Program Synthesizer was soon adapted for the Terak desktop workstation, an early personal computer, A second version, PL/CV2, was released in 1978 and was presented at the Symposium on Principles of Programming Languages in 1979.

Cross compilers

In the early 1970s, three cross compilers based on PL/C were created at the University of North Carolina; in these, the host platform was the IBM 360, However the IBM 360 code generation pass and storage allocation modules were replaced by ones specific to the target architecture. An improved version of PLCV came out around 1973. The IBM PL/I F compiler was used on the mainframe, with programmers restricting themselves to the PL/C subset of the language, and PLCD was used to generate code for the PDP-11/45.

Textbooks

The textbook An Introduction to Programming: A Structured Approach Using PL/I and PL/C was written by Conway and Gries using PL/C as the programming language and was published in 1973. It presented top-down design, and stressed the discipline of structured programming throughout, becoming one of the most prominent textbooks to do so. Besides reorganizing some material on the development and testing of computer programs, A third edition was published in 1979 and, besides pitching the textbook material at a somewhat higher level to reflect that many college students had previous programming exposure in high school, incorporated additions to reflect the PL/CT and PL/CS variants of PL/C.

An Introduction to Programming: A Structured Approach was used as the basis for several offshoot textbooks, sometimes with additional co-authors, that were either aimed at a more beginning level or that covered other languages or dialects.

Legacy

thumb|right|PL/C program and data card deck, run at Cornell in 1976 for a numerical analysis research task

PL/C was still in use at the beginning of the 1980s. Conway later said that he did not know how long PL/C remained in use at the various sites where it was installed.

, the source for PL/C appears to have been lost.

See also

  • SP/k
  • WATFIV
  • WATBOL

References

  • Finding aids for PL/C Project, Cornell Information Technologies records, Cornell University Library
  • PL/C artifacts at the Computer History Museum
  • John Daintith, "PL/I", A Dictionary of Computing, 2018, as hosted at Encyclopedia.com