2026-01-05 22:40:08 +01:00
# Langage C
2026-01-05 22:36:14 +01:00
> [!NOTE]
2026-01-06 13:35:30 +01:00
> Le langage C reste aujourd'hui très utilisé, notamment pour le développement du noyau des systèmes d'exploitation (kernel), des logiciels embarqués et des applications nécessitant des **performances élevées**. Sa simplicité, sa proximité avec le matériel et sa portabilité sont les principales raisons de son succès durable.
2026-01-05 22:36:14 +01:00
2026-01-05 22:43:38 +01:00
- [Histoire du langage C ](histoire.md )
2026-01-05 22:36:14 +01:00
## Caractéristiques
- Langage de programmation **procédural ** ;
2026-01-05 22:40:08 +01:00
- Langage de **bas niveau ** : conçu pour être compilé en un nombre d'instructions machine prévisible en termes d'occupation mémoire et de charges de calcul ;
2026-01-05 22:36:14 +01:00
- Langage extrêmement utilisé dans :
- La programmation embarquée sur micro-contrôleurs ;
- Les calculs intensifs ;
- L'écriture du noyau de systèmes d'exploitation ;
- Les modules où la rapidité de traitement est importante.
Sa syntaxe de base a inspiré de nombreux langages plus récents dont C++, Java et PHP, C#, JavaScript, ...
### Avantages
- Nombre restreint de concepts, ce qui facilite sa maîtrise ;
- Nombre restreint de mots clés, ce qui facilite l'apprentissage ;
- Proche de la machine : opérateurs proches du langage machines et fonctions permettant un accès direct au système ;
- Programmation modulaire : permet de gérer plusieurs fichiers sources ⇒ structuration, compréhensibilité et réutilisation du code ;
2026-01-05 22:40:08 +01:00
- Grand nombre de **bibliothèques tierces ** existantes.
2026-01-05 22:36:14 +01:00
### Inconvénients
- Pas universel car la génération des exécutables dépend du compilateur et donc de la cible ;
- Langage bas niveau offrant peu de fonctionnalités notamment pour la gestion de la mémoire et les chaînes de caractères ;
- Pas de gestion efficace des erreurs et beaucoup de libertés laissées au programmeur ⇒ rigueur et discipline de programmation ;
- Bibliothèque standard assez pauvre.
2026-01-06 13:35:30 +01:00
En GEII, une grande partie des applications concerne :
- des microcontrôleurs (Arduino, STM32, PIC, AVR…) aux ressources limités (mémoire, CPU, énergie)
- des automates et systèmes **temps réel ** ,
Le C est le langage natif de ces environnements.
- Très proche du matériel
- Pas de machine virtuelle
- Exécutable compact et rapide
- Contrôle précis de la mémoire et prédictif du temps d’ exécution
Dans l’ industrie, le C est encore majoritaire pour le firmware.
2026-01-05 22:36:14 +01:00
## Concepts
2026-01-05 22:40:08 +01:00
- [Anatomie d'un programme ](anatomie.md )
- [La compilation ](compilation.md )
- [Les variables ](variables.md )
2026-01-06 07:36:50 +01:00
- [Les fonctions ](fonctions.md )
2026-01-05 22:40:08 +01:00
### Opérateurs
- [Opérateurs d'affectation ](opérateurs/affectation.md )
- [Opérateurs arithmétiques ](opérateurs/arithmétiques.md )
- [Opérateurs logiques ](opérateurs/logique.md )
2026-01-06 07:36:50 +01:00
- [Opérateurs relationnels ](opérateurs/comparaison.md )
2026-01-05 22:40:08 +01:00
- [Opérateurs bit à bit ](opérateurs/bit.md )
2026-01-06 07:36:50 +01:00
- [Priorité des opérations ](opérateurs/priorite.md )
2026-01-05 22:43:38 +01:00
### Les instructions
- [Instructions conditionnelles ](instructions/conditions.md )
- [Instructions de boucles ](instructions/boucles.md )
- [Instructions de débranchement ](instructions/debranchement.md )