79 lines
3.2 KiB
Markdown
79 lines
3.2 KiB
Markdown
# Langage C
|
||
|
||
> [!NOTE]
|
||
> 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.
|
||
|
||
- [Histoire du langage C](histoire.md)
|
||
|
||
## Caractéristiques
|
||
|
||
- Langage de programmation **procédural** ;
|
||
- 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 ;
|
||
- 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 ;
|
||
- Grand nombre de **bibliothèques tierces** existantes.
|
||
|
||
### 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.
|
||
|
||
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.
|
||
|
||
## Concepts
|
||
|
||
- [Anatomie d'un programme](anatomie.md)
|
||
- [La compilation](compilation.md)
|
||
- [Les variables](variables.md)
|
||
- [Les fonctions](fonctions.md)
|
||
|
||
### 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)
|
||
- [Opérateurs relationnels](opérateurs/comparaison.md)
|
||
- [Opérateurs bit à bit](opérateurs/bit.md)
|
||
- [Priorité des opérations](opérateurs/priorite.md)
|
||
|
||
### Les instructions
|
||
|
||
- [Instructions conditionnelles](instructions/conditions.md)
|
||
- [Instructions de boucles](instructions/boucles.md)
|
||
- [Instructions de débranchement](instructions/debranchement.md)
|
||
|
||
|
||
## Travaux pratiques
|
||
|
||
- [Maquette](maquette.md)
|
||
- [Estampilleuse](maquette18.md)
|
||
- [Pompes](maquette2.md)
|
||
- [Monte charge](maquette42.md)
|
||
- [Pompes](maquette43.md)
|