Visuel du bouquet de services académiques

Informatique et sciences du numérique

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).

Environnements de développement

Leur nombre est important, donc en voici quelques uns :

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)

Hello World

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)
Mise à jour : 18 juin 2012