A History of the Development of C

Someone posted a pointer to an old (1994) paper of Dennis Ritchie on the development of the C language. I haven’t read it in years and it was interesting to revisit it. The paper, along with several others describing aspects of C and Unix, are available on Ritchie’s home page that AT&T still maintains.

I’d forgotten some of the details that he reveals such as why the default name for a Unix executable is a.out and why the precedence rules for the & and == operators are not what you think they should be. If you’re a C programmer, most of the structure of C seems obvious and just what it should be but, in fact, Ritchie struggled with many of the ideas and they were unconventional, if not controversial, at the time.

Most of us know that C is derived from the B language which was in turn derived from BCPL but the paper provides the details of that derivation and how the languages differed. Many of the features that make C so powerful and useful came directly from its predecessors.

C, of course, is credited with making Unix portable but that was not its original goal. The programmers simply wanted a higher order language than assembly in which to build their programs. Indeed, many Unix utilities were first ported from assembly to B and only later to C.

There’s all sorts of interesting historical and technical tidbits in the paper and it’s well worth a few minutes of your time, especially if you’re interested in Unix history or programming languages.

This entry was posted in Programming and tagged , . Bookmark the permalink.