# Langage C > [!NOTE] > Le langage C reste aujourd'hui très utilisé, notamment pour le développement du noyau des systèmes d'exploitation, 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. ## 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)