RItchieが開発したのが、現在のC言語である。B言語の仕様http://cm.bell-labs.com/cm/cs/who/dmr/bintro.htmlをみると、型の導入とプリプロセッサを除くとC言語の骨格がほぼ完成していたと言ってよいだろう。B、C言語は共にOSを記述するために開発された言語であり、ビット操作を含む豊富なオペレーターと表現形式を持ち、柔軟な記述と簡潔な構造を特徴としている。Bですでにポインタの概念が取り入れ、コンパイルによって生成されるマシンコードをかなり意識した言語体系となっていた。Johnsonによって開発された。Cコンパイラは、このyaccを使って作られている。Cの移植性の良さは、yaccのようなツールの存在なくしては実現できなかったのではないだろうか。再配置可能なオブジェクトとライブラリを結合するリンカ処理が行われる。プリプロセッサ処理インクルードファイルの展開やマクロ処理を言語処理系に入れるのではなく、プリプロセッサの形式で提供していることがC言語の特徴である。これによって言語処理系が軽くなってコンパイラの移植性もよくなった。gccを使ってプリプロセッサがどのように処理されるか調べるには、-Eオプションを使ってコンパイルする。grepコンパイラーの気持ちが分かるエラーメッセージを理解する正常に動作するプログラムを変えながらどんなときにどのようなメッセージが出力するか確かめるmakeコマンドデバッガーの使い。