When we say that "Dennis Ritchie developed C language", do we mean that he has created a compiler (using an 'already' developed other language) which can compile the source code written in C language? if yes, what was language he used to write first C compiler? I understand a compiler is a program and we can create another compiler for C language using presently available C compiler. Is that correct?


From wiki:

Ritchie is best known as the creator of the C programming language and a key developer of the Unix operating system, and as co-author of the definitive book on C.

Also from wiki:

The first C compiler written by Dennis Ritchie used a recursive descent parser, incorporated specific knowledge about the PDP-11, and relied on an optional machine-specific optimizer to improve the assembly language code it generated.

The first C compiler was also written by him, in assembly.

This page from bell-labs answers most of your questions.

| improve this answer | |
  • First link is broken. – Mahmoud Hossam May 16 '11 at 16:39
  • IIRC, C was based on an earlier language called B, and Unix was based on an earlier operating system called Multics. It would be an obvious guess that these were used to bootstrap development - but from what I've read, that's a wrong guess. The early development of Unix was in assembler, until C took over, for example. – Steve314 May 16 '11 at 17:43
  • 2
    IIRC, B was a stripped-down version of BCPL, which was an early systems programming language. I think a lot of the early Unix work was described using B, but I'm not sure there was ever an actual Unix compiler for it (possibly a cross-compiler that ran on something else). – TMN May 16 '11 at 19:20
  • Ouch . . . writing a compiler in assembly language. – compman Sep 11 '11 at 2:44
  • 6
    @compman At some point, someone has to write a compiler in assembly - how else do you bootstrap your way to a compiler in a HLL? – Richard Gadsden Oct 13 '11 at 10:24

Check this out for a history lesson: http://www.livinginternet.com/i/iw_unix_c.htm

When the PDP-11 computer arrived at Bell Labs, Dennis Ritchie built on B to create a new language called C which inherited Thompson's taste for concise syntax, and had a powerful mix of high-level functionality and the detailed features required to program an operating system. Most of the components of Unix were eventually rewritten in C, culminating with the kernel itself in 1973

Also this might be interesting: http://cm.bell-labs.com/cm/cs/who/dmr/chist.html

| improve this answer | |
  • 1
    AFAIK, "built on" as in "design based on design of", not as "compiled using". – vartec May 16 '11 at 17:11

Dennis Ritchie used bootstrapping. Bootstrapping is simple idea, where you develop initial, simple compiler in assembly, then you use this simple compiler to compile your fully fledged compiler written in (a subset of) your target language. This is how Ritchie created very early last1120c compiler.

| improve this answer | |

This article should answer your question:


The history of C is bound to the B language, for which Ken Thompson developed an interpreter. Ritchie used it for the very first stages of C development.

| improve this answer | |

C was designed to allow to port Unix to other platforms without having to rewrite all the assembly code for the new platform.

Hence the common saying that "C is portable assembler". This reflects that C is intentionally very close to a CPU (from around 1970) in abstraction level and is also the reason that most embedded software is written in some kind of C.

So, C is intimately connected with Unix, and the Unix folks wrote the first C compiler based on earlier work to do what they needed.

Please note that Kernigan and Richie wrote an excellent book on C which is probably one of the most influential reference works on a computer language, since it was so clear and concise that most readers could learn advanced subjects like pointers and recursion from it.

| improve this answer | |

Not the answer you're looking for? Browse other questions tagged or ask your own question.