© Éditions Eyrolles
1
Avant-propos
Le langage C a été créé en 1972 par Denis Ritchie avec un objectif relativement limité : écrire
un système d’exploitation (UNIX). Mais ses qualités opérationnelles l’ont très vite fait adopter
par une large communauté de programmeurs.
Une première définition de ce langage est apparue en 1978 avec l’ouvrage de Kernighan et
Ritchie The C programming language. Mais ce langage a continué d’évoluer après cette date à
travers les différents compilateurs qui ont vu le jour. Son succès international a contribué à sa
normalisation, d’abord par l’ANSI (American National Standard Institute), puis par l’ISO
(International Standards Organization), plus récemment en 1993 par le CEN (Comité européen de normalisation) et enfin, en 1994, par l’AFNOR. En fait, et fort heureusement, toutes
ces normes sont identiques, et l’usage veut qu’on parle de « C ANSI » ou de « C norme ANSI ».
La norme ANSI élargit, sans la contredire, la première définition de Kernighan et Ritchie.
Outre la spécification de la syntaxe du langage, elle a le mérite de fournir la description d’un
ensemble de fonctions qu’on doit trouver associées à tout compilateur C sous forme d’une
bibliothèque standard. En revanche, compte tenu de son arrivée tardive, cette norme a cherché
à « préserver l’existant », en acceptant systématiquement les anciens programmes. Elle n’a
donc pas pu supprimer certaines formulations quelque peu désuètes ou redondantes. Par
exemple, la première définition de Kernighan et Ritchie prévoit qu’on déclare une fonction en
précisant uniquement le type de son résultat. La norme autorise qu’on la déclare sous forme
d’un « prototype » (qui précise en plus le type de ses arguments) mais ne l’impose pas. Notez
toutefois que le prototype deviendra obligatoire en C++.
Cet ouvrage a été conçu comme un cours de programmation en langage C. Suivant notre
démarche habituelle, héritée de notre expérience de l’enseignement, nous présentons toujours
les notions fondamentales sur un ou plusieurs exemples avant d’en donner plus formellement
la portée générale. Souvent constitués de programmes complets, ces exemples permettent l’autoexpérimentation.
La plupart des chapitres de cet ouvrage proposent des exercices que nous vous conseillons de
résoudre d’abord sur papier, en comparant vos solutions avec celles fournies en fin de volume
et en réfléchissant sur les différences de rédaction qui ne manqueront pas d’apparaître. Ils serviront à la fois à contrôler les connaissances acquises et à les appliquer à des situations variées.
Nous avons cherché à privilégier tout particulièrement la clarté et la progressivité de l’exposé.
Dans cet esprit, nous avons systématiquement évité les « références avant », ce qui, le cas
échéant, autorise une étude séquentielle ; de même, les points les plus techniques ne sont
exposés qu’une fois les bases du langage bien établies (une présentation prématurée serait perçue
comme un bruit de fond masquant le fondamental).
D’une manière générale, notre fil conducteur est ce qu’on pourrait appeler le « C moderne »,
c’est-à-dire non pas la norme ANSI pure et dure, mais plutôt l’esprit de la norme dans ce
Delannoy Livre.book Page 1 Mercredi, 6. mai 2009 4:25 16
Précédent

- 14/281

Suivant