dernière modification : 2023

Le langage C

Ce support de cours s’adresse aux étudiants en informatique.

Programmer en C

Bien que créé pour la programmation système (la réécriture d’Unix au début des seventies), le C est un langage à usage général. On le trouve sur la plupart des architectures matérielles et la plupart des systèmes d’exploitation. De par son origine, c’est un langage qui possède des facilités naturelles d’interfaçage avec les primitives du système d’exploitation. Le C n’a pas divergé, au cours du temps, en divers dialectes. Donc les programmes C sont portables (s’ils sont bien codés).

Le langage par lui-même est relativement dépouillé. On en fait rapidement le tour. C’est par sa bibliothèque standard qu’il s’interface au matériel, qu’il structure et manipule les données, qu’il communique avec son environnement, etc. Le C n’offre pas un haut niveau d’abstraction, il est sémantiquement près du matériel. C’est d’ailleurs pour cela que le code généré est efficace, inégalable en rapidité et compacité. Et pourtant, C est redoutable : ce n’est pas un langage pour débutant. Car certaines caractéristiques, qui le rendent populaires, peuvent aussi poser des difficultés au programmeur.

Le typage faible du langage (on peut écrire des choses comme c='A'-'a'+1) limite la capacité du compilateur à détecter les erreurs. Le compilateur est permissif, le programmeur n’est pas très cadré, une grande liberté lui est laissée. Il travaille sans filet, la moindre de ses erreurs peut passer inaperçue à la compilation et s’avérer désastreuse à l’exécution [1]. La concision du code peut nuire à sa lisibilité (par exemple, a=*b++ + ++*++c est une expression valide !). Ainsi, pour écrire un code clair et sans bug, le programmeur à intérêt à s’auto-discipliner (par exemple en s’imposant des limites et des conventions de style).


1. L’engouement actuel pour le langage Rust montre l’intérêt de la communauté des développeurs pour un cadrage plus strict.