すべてのコンピューターは、そのコンピューターのための命令を並べて出来 た「プログラム」を「実行する」ことで動いている。そのコンピュー ターのための命令を表すための言語を「機械語」 (machine language) と呼ぶ。
機械語は、機械の種類ごとに異なり、また一つ一つの命令の機能が非常に低 いためにプログラムが長くなりがちで、人間にとってあまり使いやすいもので はない (機械語によるプログラムは読みにくく書きにくい)。この問題を解決 するために、もっとも「人間よりの」プログラミング言語が作られ た。それを「高級言語」 (high level language) と呼ぶ。
C は代表的な高級言語である。もともとは、システム記述用に設計されたが (そのため低レベルの記述もできるので、人によっては「高級言語でない」と 主張することもある)、今では C の後継である C++ と共に、非常に幅広い目 的に使われている。
C のような高級言語で書かれたプログラムはそのままでは実行できない。機 械語への翻訳が必要になる。高級言語で書かれたプログラムを機械語に翻訳す ることを「コンパイルする」 (compile) という。コンパ イルの作業そのものもプログラムが行うが、そのプログラムのことを 「コンパイラー」 (compiler) と呼ぶ。