Aller au contenu

Programmation C-C++/Draft Papers

Un livre de Wikilivres.
En cours d'importationlink={{{link}}}

Ce livre est en cours de copie depuis le site http://casteyde.christian.free.fr/cpp/cours/online/book1.html qui le fournit sous licence GFDL.

Cours de C/C++
Le langage
Première approche
Les structures de contrôle
Types avancés
Pointeurs et références
Le préprocesseur
Modularité et compilation
Écrire du code illisible
C++ : La couche objet
C++ : Les exceptions
Identification des types
Les espaces de nommage
Les templates
La bibliothèque standard
Notions de base
Les types complémentaires
Les flux d'entrée / sortie
Les locales
Les conteneurs
Les algorithmes
Conclusion
Priorités des opérateurs
Draft Papers
Bibliographie

Livre original de C. Casteyde
Modifier le modèle

Les Draft Papers sont vraiment une source d'informations très précise, mais ils ne sont pas vraiment structurés. En fait, ils ne sont destinés qu'aux éditeurs de logiciels désirant réaliser un compilateur, et la structure du document ressemble à un texte de loi (fortement technique en prime). Les exemples y sont rares, et quand il y en a, on ne sait pas à quel paragraphe ils se réfèrent. Enfin, nombre de termes non définis sont utilisés, et il faut lire le document pendant quelques 40 pages avant de commencer à le comprendre.

Afin de faciliter leur lecture, je donne ici quelques définitions, ainsi que la structure des Draft Papers.

Les Draft Papers sont constitués de deux grandes parties. La première traite du langage, de sa syntaxe et de sa sémantique. La deuxième partie décrit la bibliothèque standard C++.

La syntaxe est décrite dans la première partie de la manière BNF. Il vaut mieux être familiarisé avec cette forme de description pour la comprendre. Cela ne causera pas de problème cependant si l'on maîtrise déjà la syntaxe du C++.

Lors de la lecture de la deuxième partie, on ne s'attardera pas trop sur les fonctionnalités de gestion des langues et des jeux de caractères (locales). Elles ne sont pas nécessaires à la compréhension de la bibliothèque standard. Une fois les grands principes de la bibliothèque assimilés, les notions de locale pourront être approfondies.

Les termes suivants sont souvent utilisés et non définis (ou définis au milieu du document d'une manière peu claire). Leurs définitions pourront être d'un grand secours lors de lecture de la première partie des Draft Papers :

  • cv, cv qualified : l'abréviation cv signifie ici const ou volatile. Ce sont donc les propriétés de constance et de volatilité ;
  • un agrégat est un tableau ou une classe qui n'a pas de constructeurs, pas de fonctions virtuelles, et pas de donnée non statique private ou protected ;
  • POD : cette abréviation signifie plain ol' data, ce qui n'est pas compréhensible a priori. En fait, un type POD est un type relativement simple, pour lequel aucun traitement particulier n'est nécessaire (pas de constructeur, pas de virtualité, etc.). La définition des types POD est récursive : une structure ou une union est un type POD si c'est un agrégat qui ne contient pas de pointeur sur un membre non statique, pas de référence, pas de type non POD, pas de constructeur de copie et pas de destructeur.

Les autres termes sont définis lorsqu'ils apparaissent pour la première fois dans le document.