PJ Plauger Reflects on the History of C

from the June 1985 issue of Computer Language magazine

By Craig LaGrow

He calls himself a programmer at heart. But as an accomplished science fiction writer, president of a successful software company, technical book author, musician, and runner, P.J, Plauger is certainly a man of many talents.

His friends and work associates know him as Bill — a name he was affectionately given by his older sister three days after his birth. But in any published, professional work, he prefers to use the initials of his real name, Phillip James.

Plauger’s first contact with Bell Laboratories was as a undergraduate at Princeton Univ. in the early 1960s. He and several of his fellow students were fortunate enough to shuttle back and forth between Bell Labs and school and get involved in temporary summer projects.

“In those days it was heaven,” says Plauger, “It was the place to go because just about anything you could do that would advance the state of communications in the next five years was considered fair game. And it was the place to be if you were interested in being at the cutting edge of programming.”

“In the 1960s, there was still this tremendous intellectual freedom in the very undefined world of computer programming,” he remembers. “Maybe a place like IBM Yorktown Heights. RCA, GTE, or XEROX would come close, but Bell Labs was really just a wonderful place to be for freedom and access to resources.”

Plauger went on after Princeton to earn a Ph.D. in nuclear physics from Michigan State Univ. There he spent half his time, with a fellow graduate student, designing and writing a virtual memory operating system. He confesses that he “invented” demand paging, not knowing that the rest of the world had already done so.

“I’ve worked and earned my living as a programmer since 1963. and I say that very proudly.” says Plauger. “I consider myself a programmer rather than a manager or a computer scientist. Those are things that I’ve done, but I’ve earned my living as a computer programmer.”

Plauger started working for Bell Labs upon receiving his doctorate in 1969, first at Holmdel. N.J., then later at their Murray Hill, N.J., headquarters. He spent his five and one-half years at Bell Labs as a member of technical staff, which is the standard staff level for people doing research. His department was chartered with getting computers into telephone central offices and digitizing things so that data processing technology could be better brought to bear.

But he was also surrounded by people like Dennis Ritchie, Ken Thompson, and Brian Kernighan, who were working on the beginnings of what was to become UNIX and C. He naturally soaked up as much of that technology as he could, fascinated by anything that could improve programmer productivity.

While Plauger was working at Bell Labs, he designed small, in-house languages, built a few compilers, and began to work with rudimentary UNIX and program development tools.

“In many ways, the success of UNIX was little more than a matter of Thompson and Ritchie setting up fences, if you will, to herd people in the right direction,” remembers Plauger. “They just made it easier for people to write reusable software with good properties. If there has ever been a central committee on how to homogenize UNIX, it has only existed the last couple of years — and a lot of the payoff has been lost in the growth and size of UNIX from attempting to homogenize it.”

According to Plauger, there is no question that Ritchie invented the C language and made it what it is today.

“It was his baby, and that’s one of its great strengths; its integrity stems from the fact that there was one good designer who was really responsible,” says Plauger. “All of us to this day who are involved with it deferred to him.”

Plauger was one of the first real C programmers. Working on an old PDP-11/20— the verv first PDP-11 UNIX system— he recalls tripping over many of the bugs when things like structures first went into the language.

An interesting footnote to the C language development going on at the time was that Plauger was simultaneously developing a language he hoped would rival C. He then completed a language implementation that today would resemble something like PL/M for the PDF-11.

“One of the smarter things I did in my career was realize after a period of time that the C language was superior to mine,” he says. “I actually had the decency to stand up and tell a lot of people that even though I’d put a lot of work into this language, C was better and they should use it instead. I became a convert in the early days.”

Thompson had been experimenting with a language called B, a precursor to C that was, according to Plauger, a “cute derivative” of another experimental language called BCPL. “The trouble with it on a PDP-11, though, was that it assumed everything was a 16-bit integer,” Plauger recalls.

The B language could manipulate pointers like 16-bit integers but, because of its weakness with byte resolution addressing of the PDP-11, a programmer had to know to count by twos to step through an array. Because of this, data typing went into the language just to help the compiler know how to manipulate pointers to different types of data.

The second problem with B was that it wasn’t a true compiler but rather an interpreter.

“C in a nutshell is B with typing to get the pointer arithmetic right and true compilation to get better efficiency,” says Plauger.

Ironically, however, all the development work on UNIX and C at the time was being done in total opposition to the administrative philosophy of Bell Labs. The fact that the project survived, according to Plauger, was mostly due to a policy of “salutary neglect” on the part of management.

“There were no projects, no specs, no requirements: it was almost all done on speculation — all of it,” says Plauger. “Over about a two-and-one-half-year period, one by one most of the people in our area at Bell Labs elected to do their work on UNIX, but nobody told them to,” he says.

The GE 635 computer, which was one of the large systems that Bell researchers were supposed to be using in their work, actually turned into a remote printer for the UNIX machine as far as this group was concerned.

“Nobody made them do that. Nobody made them write up the utilities which eventually got swept up into the UNIX package. Nobody enforced a uniform style,” says Plauger. “As a consequence, we can all now piss and moan about the irregularities that are there. But considering there was no enforcement, it’s remarkably regular. The miracle is that UNIX is as good as it is. not that it couldn’t be better.”

The early prototypes to UNIX and C also were being used For many interesting projects in-house at the time. Plauger often reminds people that Thompson started UNIX to support his own “little solar system exploration thing” so it would be easier to develop the software for it.

“There were half a dozen people hanging around the UNIX room because each had his own little pet project going, and UNIX was the best leverage to get that accomplished,” says Plauger. “Not a single one of them was chartered by management in order to improve productivity or in order to pursue that particular goal.”

“It was very easy to get caught up in all this,” he recalls. “Of course having Brian Kernighan next door to shoot the bull with and speculate about what we could do with all these things was great.”

As Kernighan and Plauger became closer friends and work associates, they ended up writing two books on programming style called The Elements of Programming Style, 1 Software Tools, 2 and Software Tools in Pascal, 3 which have become text book standards in many computer science curricula across the country.

“I think Brian had a folder of examples that showed how bad the training for programmers was at the time,” he says. “Finally, we’d get to a ’there ought to be a law’ stage.”

“What we did with The Elements of Programming Style was to write the manuscript fairly quickly and circulate it among our friends.” he recalls, “We’d tend to go on a kind of feeding frenzy, tearing up programming examples from other books. It took us a couple of iterations to get to the correct style that I think made the book what it is.

“Brian is a very solid writer, very direct. And I’ve tried to emulate Issac Asimov’s science-fact writing,” says Plauger. “Between the two of us, Brian and I managed to keep the worst offenses of our programmer arrogance and love for big words out of the document. It managed to be something better than either one of us could have done on our own.”

Plauger remembers Ritchie being a bit more distant to him both professionally and socially at first. “He lived in his own world, which was populated by the likes of Ken Thompson and Doug McIlroy,” says Plauger.

“It was like, wow, this guy comes in at 1:30 or 2:00 p.m. and immediately goes to lunch! But nobody seemed to mind because he’d work till midnight with these people, and they’d all get tremendous amounts of brilliant work done.” he says.

Plauger admits that he’ll always have a tremendous respect and admiration for Ritchie. “He’s a marvelous writer and an excellent designer with what amounts to a slightly enhanced version of Appendix A in Ritchie’s and Kernighan’s famous book, The C Programming Language.4 Also of importance was the /usr/group effort on standardizing libraries.

Serving as the secretary of the committee since its inception over a year ago, Plauger was also appointed chairman of the Library TG— one of the three technical subcommittees working on pieces of the soon-to-be published ANSI X3J11 C standard.

“I think it’s amusing that I ended up as chairman of the Library TG because some have said that’s like putting the fox in charge of the hen house,” jokes Plauger. “I gravitated toward that because of the tremendous technology that my own compiler company [Whitesmiths Ltd.] has developed for making C work well— not just in UNIX but everywhere.”

“We all agreed to adopt the /usr/group standard as the base document for the library standards effort. Essentially what I did was show the committee how to modify that set of functions to get the UNIX-isms out, so that they could be implemented in a variety of environments.

“We also have put forward and adopted a number of additional functions which you need outside of the UNIX environment. The net result is that what ANSI now has is functionally very compatible with UNIX V7 and System III, which /usr/group has standardized on, but is strongly enhanced semantically to make a more widely usable standard,” says Plauger.

Participating in the ANSI committee meetings have been representatives from over two dozen C compiler companies. Consequently, the interests of many companies comes to bear in each of the standards meetings.

According to Plauger, compiler manufacturing companies have a strong influence on the outcome of the standardization. “Other groups, such as educators and independent consumers, are often outvoted because of this makeup,” he claims.

“Obviously one of the reasons that we’re having all these standardization meetings is that we have these different dialects that have evolved in different little communities. What we’re trying to do is to bring them together.”

Plauger feels strongly that the main purpose of the ANSI standards effort is to create a marketplace for the C language to grow into.

“If there is no marketplace, there’s no way you can make money,” says Plauger. “You can bury your gold in your back yard and be safe, but that’s not a market. Or at the other extreme, if there are no rules for safe trade, there’ll always be pirates waiting out there every time you send a ship out to do business. It’ll get boarded and everything gets ripped off. That’s not a marketplace either.”

But today, after a year and one-half of meetings, the committee is preparing to finalize a document that will formalize the rules and definitions that future C compiler writers will follow when designing different implementations of C for different hardware and operating system environments.

“In these last few meetings, we’re really just getting down to the sorts of things that Talmudic scholars would sit around arguing about on a Saturday,” says Plauger. “We’re really just quibbling over whether certain nice extensions should get stuck into the language before it’s frozen and what the subtle interpretation is of certain types of coercions. Things like that.”

Yet Plauger is also willing to admit that he thinks the C language will soon begin to decline in popularity within the programming community as a whole.

“My feeling is that C is just short of peaking in popularity— that is, it has almost peaked and will start declining soon,” says Plauger. “C has some maintenance problems with large programs. It’s a little too lax in its declarations and its type checking, and it doesn’t have all the facilities you need, such as for packaging.”

“You see the amount of stuff that’s been wriiten in C, from commercial applications to you name it,” says Plauger. “FORTRAN ranks in popularity right up there with C, but C is unquestionably the better language right now. Its major limitation is that when you get a programming project somewhere between 50 and 200 and 1,000 lines of code, you start losing control.”

“C just doesn’t have all of the things that you need for modularization, strong checking, and soon. It’s evolving in that direction, but it’s got its weaknesses. Today certain dialects of Pascal are becoming fairly powerful too. The trouble with Pascal is that in order to meet those requirements it has to be extended, and nobody seems to have agreed on which extensions yet.

“Ada is still out, of the starting gate. If I had to do a large project commercially, I would do it in structured COBOL. If I felt the demand for performance were too great. I might switch to PL/I but probably to C,” says Plauger.

Bell Labs is preparing to introduce an enhanced version of C, called C++, which, according to Plauger, “has a lot of bright ideas tacked on. But it’s not compelling to me that’s the best thing to do to C yet. Certainly a lot of good ideas that are missing in C can be found in Ada. Ada is full of a lot of things, it’s just too big a language. I think right now programming in C, with tighter discipline, is what we’re going to be relying on to carry us through the next few years,” says Plauger.

Plauger’s five-year stint with Bell Labs did not end on the best of terms. In 1974, the woman who he was married to at that time filed charges of sex descrimination against Bell Labs, and Plauger decided to support her in her suit against the company because he felt her claims were justified.

“I think that because I was so outspoken in encouraging her to oppose the company made it hard for people to want to keep me on at Bell Labs,” he says. “Let’s face it, I didn’t have the personality to understand how to work well in an organization of that size. I had a chance to leave under my own steam before I got run out of town on a rail, so I took it.”

Plauger left Bell Labs in 1975 to work for Yourdon Inc., a seminar and book publishing company based in New York, N.Y. Ed Yourdon, founder of the company, had created a strong reputation worldwide for being an author of important books on programmer productivity.

“I’d say I went to Yourdon with a head full of ideas about programming tools,” he remembers. “When the opportunity came up to actually write a C compiler, I was quite confident that I could do it even though I hadn’t written a whole C compiler before.”

But Plauger soon left Yourdon to start his own company on the kitchen table of his apartment on New York’s Manhattan island. Ho called the company Whitesmiths because it had a certain Old World sound to it. “We wanted to call to mind the old craft guilds almost back in the Middle Ages, certainly the early Renaissance,” says Plauger.

Even the company logo— which shows a hand holding a ink quill pen in front of a collection of different lettering styles spanning thousands of years— can be seen both as an ancient Roman seal and a cathode ray tube.

“I have learned to think of programming not so much as an art but as a craft, meaning a more pragmatic art form,” he says. “Certainly you don’t write a program and just have everyone stand around and admire it.”

Since that time, Plauger’s company has written C compilers that stretch from the small, 8080-based microcomputers to the IBM 370. Most of their customers, he claims, depend on the fact that Whitesmiths is able to bridge such a broad range of systems and environments with a uniform language.

“Let’s face it. I started this company because I like writing code and showing the world that you could really produce high-quality code that is marketable. I think we’ve done that,” says Plauger. “Now I’m learning how to be a businessman.

“When you own your own company it just tends to eat you up. " he says. “I do pride myself on being a writer, but I’ve had little time for that lately. And if you ask me what I do for a living, I’d say I’m a programmer.”

Not only is Plauger the head of his own successful software company, but he’s also a talented science fiction author. He won the John W. Campbell Award for best new science fiction writer of the year in 1975. His story “Child of All Ages,” 5 originally published in Analog, has been widely anthologized and has been optioned for television. His novel. Fighting Madness, 6 and several other short stories have been published by Analog and other magazines.

Plauger emulates the prose style of C.S. Forrester in his fiction, just as he models his technical writing after Asimov. He prefers to write in a clean and straightforward way, without forcing his readers to “bump their shins on the big words or funky grammar.” as he puts it. “When you write science fiction, you can’t snow people with fancy terminology, you have to sell a story about people.”

Plauger now lives in a beautiful Early Victorian house in Concord, Mass., and spends most of his life with his family shuttling back and forth between this home and another lakeside home in New Hampshire. Above all, he says he enjoys watching his five-year-old son, Geoffrey, growing up.

Aside from programming and running a company, Plauger practices piano daily and manages to get in a jog every day as well. “I’m a runner just for the pleasure of it, enough to keep my heart ticking well and let me eat extra dessert.”

As a multitalented individual, with interests spanning from the artistic to the pragmatic, Plauger certainly qualifies as one of the more fascinating Renaissance people in our computing industry today.

Craig LaGrow is the editor of COMPUTER LANGUAGE.

References


  1. Kernighan. Brian W. and Plauger, P.J. The Elements of Programming Style. McGraw-Hill Book Co., New York, N.Y., 1974. ↩︎

  2. Kernighan, Brian W. and Plauger, P.J. Software Tools. Addison-Wesley Inc., Reading, Mass., 1976. ↩︎

  3. Kernighan. Brian W. and Plauger, P.J. Software Tools in Pascal. Addison-Wesley Inc., Reading. Mass., 1981. ↩︎

  4. Kernighan, Brian W. and Ritchie. Dennis M. The C Programming Language. Prentice-Hall Inc., Englewood Cliffs, N.J., 1978. ↩︎

  5. Plauger, P.J, “Child of All Ages,” Analog, (Nov. 1973). ↩︎

  6. Plauger, P.J. “Fighting Madness,” Analog Annual (1976). ↩︎