Publié · en amélioration
Programming language · Depuis 1972
Le C est un langage système compact et portable, compilé en code machine rapide, qui offre un contrôle direct de la mémoire et du matériel.
Le C est un langage de programmation procédural et généraliste, conçu par Dennis Ritchie aux Bell Labs pour écrire le système d'exploitation Unix. Il a ensuite été normalisé par l'ANSI puis l'ISO ; le comité ISO/IEC JTC1/SC22/WG14 maintient aujourd'hui la norme, dont les révisions C99, C11 et C17 sont très répandues. Le langage compte peu de mots-clés et repose sur des briques simples (fonctions, structures et pointeurs) que le compilateur traduit directement en code machine.
Le C excelle là où comptent des performances prévisibles, des exécutables légers et un contrôle direct de la mémoire : noyaux de systèmes d'exploitation, pilotes de périphériques, firmware de microcontrôleurs, environnements d'exécution d'autres langages et bases de données. Presque toutes les plateformes disposent d'un compilateur C, et la convention d'appel du C (ABI) sert de terrain commun aux autres langages pour appeler des bibliothèques. En contrepartie, le C ne vérifie pas les bornes des tableaux et ne gère pas la mémoire automatiquement : éviter les dépassements de tampon ou l'utilisation de mémoire déjà libérée revient au programmeur.
Pour commencer, installez GCC, Clang ou MSVC et compilez de petits programmes depuis le terminal. On apprend généralement dans cet ordre : variables et types, structures de contrôle, fonctions, tableaux et chaînes, pointeurs, structures, puis mémoire dynamique. Activez les avertissements avec -Wall -Wextra, consultez la bibliothèque standard sur cppreference et prenez l'habitude de traquer les erreurs mémoire avec AddressSanitizer et GDB.
Les pointeurs donnent un accès direct aux adresses mémoire, et malloc et free permettent de gérer la mémoire soi-même : vous décidez précisément de la disposition des données et de l'usage des ressources.
Le langage est compact et défini par une norme ISO ; un code conforme peut être recompilé pour un large éventail de systèmes d'exploitation et de processeurs.
Le C est compilé en code machine natif avec un runtime quasi inexistant, ce qui permet de l'utiliser même pour du firmware ou des chargeurs d'amorçage sans système d'exploitation.
L'interface des fonctions C fait office d'ABI standard de fait : Python, Rust ou Go peuvent appeler directement des bibliothèques C via leur FFI.
Sous Linux Debian ou Ubuntu, installez GCC et Make avec la commande ci-dessous (sous Fedora : sudo dnf install gcc make). Sous macOS, exécutez xcode-select --install pour obtenir les Xcode Command Line Tools, qui incluent Clang. Sous Windows, installez MSYS2 puis lancez pacman -S mingw-w64-ucrt-x86_64-gcc dans le shell UCRT64, ou installez les Visual Studio Build Tools avec la charge de travail Développement Desktop en C++.
sudo apt install build-essentialOuvrez un nouveau terminal et vérifiez que le compilateur affiche sa version. Sous macOS, la commande gcc pointe vers Apple Clang : c'est donc une version de Clang qui s'affiche. Avec MSVC, lancez plutôt cl dans le Developer Command Prompt.
gcc --versionEnregistrez le premier programme sous le nom hello.c, compilez-le avec les avertissements activés et la norme C17, puis exécutez-le. Avec MSVC, compilez avec cl /W4 hello.c et lancez hello.exe.
gcc -Wall -Wextra -std=c17 hello.c -o hello && ./hello#include <stdio.h> inclut l'en-tête d'entrées-sorties standard, qui déclare printf. La fonction main est le point d'entrée du programme, et (void) signifie qu'elle ne prend aucun argument. printf affiche le texte et \n correspond à un retour à la ligne. return 0 signale au système d'exploitation que le programme s'est terminé correctement. gcc compile le source en un exécutable nommé hello, que ./hello lance.
hello.c
#include <stdio.h>
int main(void) {
printf("Hello, world!\n");
return 0;
}
gcc hello.c -o hello && ./helloSix chapitres pour aller de l'installation aux notions essentielles de C.
Posez vos questions, partagez votre expérience et échangez vos avis sur C.
Aucune discussion pour l'instant. Lancez la première.
0 commentaire
Se connecter · Connectez-vous pour laisser un commentaire.
Soyez le premier à commenter.