Langage C
Le langage C est le père de tous les langages de programmation modernes, et reste le langage de programmation : omniprésent. incontournable pour les informaticiens professionnels et en lente évolution.
Fiche d’identité
Apparu en | 1972 |
---|---|
Auteur | Dennis Ritchie |
Système d’exploitation | Multi-plateforme |
Licence | Dépend du compilateur |
Exécution | compilé |
Paradigmes | impératif, procédural |
Typage | statique, faible |
Influencé par | B (BCPL,CPL), ALGOL 68, Assembleur, Fortran, Pascal |
À influencé | awk, C++, C#, Objective C, BitC, D, Java, Javascript, PHP, Perl, Python... |
Extension de fichier | .c .h |
Particularités
Le langage C est un langage de bas niveau, c’est à dire très proche de la machine. À l’origine, il a été conçu comme une surcouche au langage Assembleur, il s’est développé pour donner un langage généraliste.
C’est le langage disponible sur le plus grand nombre de plateforme, des micro-contrôleurs aux supercalculateurs.
La connaissance du langage C est obligatoire pour tout informaticien professionnel, ne serait-ce que par ces les influences dans de nombreux autres langages : notions de type, les accolades, les boucles, la gestion de la mémoire...
De plus, c’est le langage des noyaux des systèmes d’exploitation (windows, linux...), les pilotes de périphériques sont donc eux aussi écrit en C.
La structuration du code est assuré par les point-virgules (fin d’instruction) et les accolades (séquence d’instructions). Même si cela peut rassurer au début, cela peut conduire pour le débutant à des erreurs difficiles à déboguer (oubli d’un point-virgule) et à un code peu esthétique (placement des accolades et indentation chaotiques).
Leur nombre est important, donc en voici quelques uns :
- wxDevC++ : Très bien, léger et complet
- Code::Blocs : Très bien, complet et multi-plateformes
- Anjuta (linux)
- Kdevelop (linux)
Microsoft propose aussi un IDE pour programmer sous windows, Visual Studio, qui existe en version gratuite ("Express"). Le principal intérêt de cet IDE est de permettre un accès simple aux fonctions de windows (API win32 et MFC), mais c’est aussi son défaut : il entraîne le programmeur vers des solutions non portables, propres à windows.
Des éditeurs de texte plus simple sont aussi possibles :
- SciTe
- vim/emacs... (linux)
Créer un fichier hello.c contenant :
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
puts("Hello World!");
return EXIT_SUCCESS;
}
pour le compiler, taper la commande :
gcc hello.c -o hello
pour l’exécuter, taper la commande :
> hello
ou
> ./hello
ou double-cliquer sur hello
Avantages
- Puissance (« avec le C, on peut tout faire »)
- Langage compilé, donc la vitesse d’exécution est très importante
- Une quantité colossale :
- de documentations ;
- de bibliothèques ;
- d’environnements de développement...
- Langage très proche de la machine mais permettant tout de même une programmation de haut niveau grâce à la quantité de bibliothèques existantes,
- Langage presque obligatoire pour programmer des micro-contrôleurs, notamment pour aborder la robotique.
Inconvénients
- Débogage et mise au point qui peuvent être délicats
- Les pointeurs et la gestion de la mémoire
- La portabilité parfois mauvaise dans les faits : il faut souvent explicitement prévoir les cas particulier de chaque architecture ciblée, ainsi que du compilateur.
- Quelques problèmes dans la syntaxe :
- Précédence des opérateurs pas toujours naturelle (par exemple == et &)
- Confusion du = (assignation) avec le == (égalité) qui conduit à la fameuse erreur du if (a=b)
Pour information
Le langage C est quasiment obligatoire pour programmer des micro-contrôleurs, notamment pour aborder la robotique.