Le langage C est un langage impératif classique de la famille d'Algol. Le typage est statique. La gestion de la mémoire est manuelle. Il est très riche en opérateurs. Il permet des abstractions sous forme de fonctions et (péniblement) de macros. Le langage est conçu pour la programmation système, et donc pour que le programmeur maîtrise totalement la disposition des objets en mémoire. C'est par contre un inconvénient pour la programmation d'applications. Grâce à des opérations d'un niveau relativement bas, le code généré par la plupart des compilateurs est assez rapide.