C est un langage de programmation généraliste et procédural qui a eu une influence majeure dans le développement de nombreux langages de programmation modernes. Conçu pour être efficace et flexible, il est couramment utilisé pour la programmation système, le développement de systèmes d'exploitation et la création de logiciels applicatifs. C offre un accès bas niveau à la mémoire et permet la manipulation de bits, ce qui en fait un choix privilégié pour écrire des logiciels critiques en termes de performance.
C a été développé au début des années 1970 par Dennis Ritchie chez Bell Labs comme une évolution du langage B, qui était influencé par BCPL et ALGOL. À l'origine, il était destiné à la programmation système sur le système d'exploitation Unix, qui a également vu le jour chez Bell Labs. La conception du langage se concentrait sur la fourniture d'une abstraction de haut niveau par rapport au langage d'assemblage tout en conservant l'efficacité de la programmation bas niveau.
À la fin des années 1970, C a gagné une adoption généralisée dans la communauté des programmeurs, et la publication de "The C Programming Language" par Brian Kernighan et Dennis Ritchie en 1978 a considérablement contribué à sa popularité. La première version normalisée, appelée C89 ou ANSI C, a été adoptée par l'American National Standards Institute (ANSI) en 1989. L'Organisation internationale de normalisation (ISO) l'a ensuite adoptée, aboutissant à ISO C99 en 1999, qui a introduit plusieurs nouvelles fonctionnalités telles que les fonctions inline et les tableaux de longueur variable. La norme majeure la plus récente, C11, a été publiée en 2011, et C18, une version de correction de bogues, a suivi en 2018.
C reste l'un des langages de programmation les plus utilisés au monde, en particulier dans la programmation système, les systèmes embarqués et les applications à haute performance. Sa syntaxe et ses concepts ont influencé de nombreux autres langages, notamment C++, C#, Java et Objective-C. Sa pertinence continue peut être observée dans les systèmes d'exploitation (Linux, Windows), la programmation réseau, les systèmes embarqués et diverses tâches de calcul haute performance.
C permet la manipulation directe de la mémoire via des pointeurs. Par exemple :
int x = 10;
int *p = &x; // Le pointeur p contient l'adresse de x
C prend en charge la programmation structurée à travers des fonctions, permettant la modularité du code. Une définition de fonction simple ressemble à ceci :
void greet() {
printf("Bonjour, le monde !\n");
}
C inclut diverses structures de contrôle de flux comme if, switch, for, while et do-while, qui facilitent la prise de décision.
if (x > 0) {
printf("Nombre positif\n");
}
C dispose de plusieurs types de données intégrés : int, char, float, double, etc. Il prend également en charge les types de données définis par l'utilisateur à l'aide de structures.
struct Point {
int x;
int y;
};
C inclut un ensemble riche de bibliothèques pour les opérations d'entrée/sortie, la manipulation de chaînes et les calculs mathématiques.
#include <stdio.h>
#include <math.h>
double sqrtValue = sqrt(16);
C permet la conversion explicite de types, ce qui est utile pour convertir entre types.
double pi = 3.14;
int intPi = (int)pi; // intPi sera 3
C prend en charge les types énumérés pour créer des types personnalisés.
enum Color { ROUGE, VERT, BLEU };
C inclut des directives de préprocesseur comme #define, #include, qui gèrent le code avant la compilation.
#define PI 3.14
C permet les déclarations de variables dans une portée spécifique, améliorant l'encapsulation.
{
int temp = 5; // temp n'est valide que dans ce bloc
}
C ne prend pas en charge la surcharge de fonctions comme C++, mais permet des arguments par défaut via une implémentation manuelle.
int add(int a, int b) {
return a + b;
}
C nécessite un compilateur pour transformer le code source en code machine. Les compilateurs les plus populaires incluent GCC (GNU Compiler Collection), Clang et MSVC (Microsoft Visual C++).
Pour compiler un programme C, vous pouvez généralement utiliser une commande comme :
gcc -o myprogram myprogram.c
Cela compile myprogram.c
en un exécutable nommé myprogram
.
Plusieurs IDE prennent en charge la programmation en C, tels que :
Ces IDE offrent des fonctionnalités telles que la coloration syntaxique, des outils de débogage et la gestion de projets.
C est largement utilisé dans divers domaines, notamment :
C est souvent comparé à plusieurs autres langages de programmation, car il partage des similitudes et sert de fondation à de nombreux :
C peut être traduit en langages qui prennent en charge les constructions de programmation procédurale et les optimisations bas niveau facilement. Lors de la traduction de code C vers un langage de niveau supérieur, les développeurs doivent prêter attention aux différences de gestion de la mémoire, car les langages de niveau supérieur présentent souvent une gestion automatique de la mémoire.
Plusieurs outils de traduction source-à-source peuvent aider à convertir le code C vers d'autres langages, notamment :