C est un langage de programmation impératif et généraliste. Il est qualifié de langage de bas niveau dans le sens où chaque instruction du langage est conçue pour être compilée en un nombre d'instructions machine assez prévisible en termes d'occupation mémoire et de charge de calcul. En outre, il propose un éventail de types entiers et flottants conçus pour pouvoir correspondre directement aux types de donnée supportés par le processeur. Enfin, il fait un usage intensif des calculs d'adresse mémoire avec la notion de pointeur6.
Hormis les types de base, C supporte les types énumérés, composés, et opaques. Il ne propose en revanche aucune opération qui traite directement des objets de plus haut niveau (fichier informatique, chaîne de caractères, liste…).
Ces types plus évolués doivent être traités en manipulant des pointeurs
et des types composés. De même, le langage ne propose pas en standard
la gestion de la programmation orientée objet, ni de système de gestion d'exceptions. Il existe des fonctions standards pour gérer les entrées-sorties et les chaînes de caractères, mais contrairement à d'autres langages, aucun opérateur
spécifique pour améliorer l'ergonomie. Ceci rend aisé le remplacement
des fonctions standards par des fonctions spécifiquement conçues pour un
programme donné.
Ces caractéristiques en font un langage privilégié quand on cherche à maîtriser les ressources matérielles utilisées, le langage machine
et les données binaires générées par les compilateurs étant
relativement prévisibles. Ce langage est donc extrêmement utilisé dans
des domaines comme la programmation embarquée sur microcontrôleurs,
les calculs intensifs, l'écriture de systèmes d'exploitation et les
modules où la rapidité de traitement est importante. Il constitue une
bonne alternative au langage d'assemblage dans ces domaines, avec les avantages d'une syntaxe plus expressive et de la portabilité du code source. Le langage C a été inventé pour écrire le système d'exploitation UNIX, et reste utilisé pour la programmation système. Ainsi le noyau de grands systèmes d'exploitation comme Windows et Linux sont développés en grande partie en C.
En contrepartie, la mise au point de programmes en C, surtout s'ils
utilisent des structures de données complexes, est plus difficile
qu'avec des langages de plus haut niveau. En effet, dans un souci de
performance, le langage C impose à l'utilisateur de programmer certains
traitements (libération de la mémoire, vérification de la validité des
indices sur les tableaux…) qui sont pris en charge automatiquement dans
les langages de haut niveau.
0 Comments